Ubuntu下Hadoop搭建

Table of Contents

0.环境说明

1. Java安装

2. Hadoop 安装

2.1 新建hd用户

2.2  伪分布式模式安装

2.2.1 移动文件

2.2.2 Hadoop配置

2.2.3 Hadoop测试

2.3 Hadoop集群模式的安装

 2.3.1  添加环境变量

 2.3.2  配置环境文件

 2.3.3  修改主机名

2.3.4 设置 SSH 无密码登录

2.3.5 配置 hadoop 的配置文件

2.3.6 格式化文件系统

2.3.7 系统测试


0.环境说明

1)Ubuntu版本:16.04

2)Hadoop版本:2.7.7

3)  Java版本:1.8.0_212

1. Java安装

1)更新包源

sudo apt-get update

2) 安装jdk

sudo apt-get install default-jdk

3) 查看安装位置

update-alternatives --config java

4)设置环境变量

sudo vim /etc/profile

5)末尾添加(路径以实际安装路径为主)

export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export PATH=$JAVA_HOME/bin:$PATH

6)使得修改生效

source /etc/profile

7)检查设置是否成功

echo $JAVA_HOME

2. Hadoop 安装

2.1 新建hd用户

1)由于后续操作需要将模式切换为 root

su

#如果忘记root密码,可以先修改

sudo passwd root

2) 创建hd用户

sudo useradd -mk /home/hd -s/bin/bash hd

3)为sudoer文件添加修改权限

chmod u+w /etc/sudoers

4) 给hd添加sudo 权限

vim /etc/sudoers

#添加以下内容

root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL

5)撤销 sudoers 文件被修改的权限

chmod u+r /etc/sudoers

6)切换到 hd 用户

su hd

7) 创建数据存放目录

 mkdir -p /home/hd/data/tmp

2.2  伪分布式模式安装

2.2.1 移动文件

1) 将安装包放到/home/hd目录下,切换目录

cd ~

2)解压

tar -zxvf hadoop-2.7.7.tar.gz

2.2.2 Hadoop配置

1)配置 Hadoop 环境变量

sudo vim /etc/profile

#末尾添加

export HADOOP_HOME="/home/hd/hadoop-2.7.7"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

2)使得修改生效

source /etc/profile

3)验证 HADOOP_HOME 参数

echo $HADOOP_HOME

4)配置 hadoop-env.sh 文件参数

 sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

修改 JAVA_HOME 参数为

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

5)配置 mapred-env.sh 文件参数

sudo vim ${HADOOP_HOME}/etc/hadoop/mapred-env.sh

修改 JAVA_HOME 参数为

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

6)配置 core-site.xml

vim ${HADOOP_HOME}/etc/hadoop/core-site.xml

修改为:

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/data/tmp</value>
		<description>Abase for other temporary directories.</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhost:8020</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

7)配置 core-site.xml

 vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

修改为:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/opt/data/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/opt/data/tmp/dfs/data</value>
	</property>
</configuration>

8)配置 yarn-site.xml

 vim ${HADOOP_HOME}/etc/hadoop/yarn-site.xml

修改为:

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>ubuntu</value><!--请以实际主机名为准-->
	</property>
</configuration>

2.2.3 Hadoop测试

1)格式化HDFS

hdfs namenode -format

2) 启动集群

start-dfs.sh && start-yarn.sh

3)查看是否成功启动服务

jps

4)查看端口号

ss -tnl

5)关闭集群

stop-dfs.sh && stop-yarn.sh

2.3 Hadoop集群模式的安装

 2.3.1  添加环境变量

1)编辑文件

sudo vim /etc/profile

#末尾添加

export HADOOP_HOME="/home/hd/hadoop-2.7.7"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export CLASSPATH=$CLASSPATH:.:$HADOOP_HOME/bin

2) 使得修改生效

 source /etc/profile

3)验证 HADOOP_HOME 参数

echo $HADOOP_HOME

 2.3.2  配置环境文件

1)配置 mapred-env.sh 文件参数

sudo vim ${HADOOP_HOME}/etc/hadoop/mapred-env.sh

#添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

2)配置 yarn-env.sh 文件参数

sudo vim ${HADOOP_HOME}/etc/hadoop/yarn-env.sh

#添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

 

3)hadoop里面hadoop-env.sh文件里面的java路径设置

 sudo vim ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

 #添加 JAVA_HOME 参数,请以实际的JAVA_HOME为准

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

2.3.3  修改主机名

1)在三台机器上修改 /etc/hostname 分别修改主机名

sudo vim /etc/hostname

#分别修改主机名

master 节点:master
slave1 节点: slave1
slave2 节点: slave2

3)修改 /etc/hosts

sudo vim /etc/hosts

#添加内容(请以实际的IP地址为准)

192.168.219.51 master
192.168.219.55 slave1
192.168.219.56 slave2

2.3.4 设置 SSH 无密码登录

1)在三台机器上同时生成公钥和私钥, 一路回车,都设置为默认值.

cd ~
ssh-keygen -t rsa

2)在master机器上执行命令,将生成的公钥添加到授权文件

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

3)在slave1上执行命令,将slave1生成的公钥文件复制到master节点

scp ~/.ssh/id_rsa.pub hd@master:~/.ssh/id_rsa.pub.s1

4)在slave2上执行命令,将slave2生成的公钥文件复制到master节点

scp ~/.ssh/id_rsa.pub hd@master:~/.ssh/id_rsa.pub.s2

5)在master上将slave1和salve2的授权文件追加到master的文件中

cat ~/.ssh/id_rsa.pub.s1 >>  ~/.ssh/authorized_keys && cat ~/.ssh/id_rsa.pub.s2 >>  ~/.ssh/authorized_keys 

6)分发公钥

#在master节点上分发到其他两个slave节点上

scp ~/.ssh/authorized_keys hd@slave1:~/.ssh

 

scp ~/.ssh/authorized_keys hd@slave2:~/.ssh

 7)测试免密登录情况

 

 

2.3.5 配置 hadoop 的配置文件

0)建议通过同时打开多个shell进行多台主机同时配置

1)配置 core-site.xml

vim ${HADOOP_HOME}/etc/hadoop/core-site.xml

#修改为

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/data/tmp</value>
		<description>Abase for other temporary directories.</description>
	</property>
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

2)配置 core-site.xml

vim ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

#修改为

<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/opt/data/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/opt/data/tmp/dfs/data</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>master:9001</value>
	</property>
</configuration>

3)配置 yarn-site.xml

vim ${HADOOP_HOME}/etc/hadoop/yarn-site.xml

#修改为

<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<property>
		<name>yarn.resourcemanager.address</name>
		<value>master:8032</value>
	</property>
	<property>
		<name>yarn.resourcemanager.scheduler.address</name>
		<value>master:8030</value>
	</property>
	<property>
		<name>yarn.resourcemanager.resource-tracker.address</name>
		<value>master:8031</value>
	</property>
	<property>
		<name>yarn.resourcemanager.admin.address</name>
		<value>master:8033</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address</name>
		<value>master:8088</value>
	</property>
</configuration>

4)配置 mapred-site.xml

#复制模板

cp ${HADOOP_HOME}/etc/hadoop/mapred-site.xml.template ${HADOOP_HOME}/etc/hadoop/mapred-site.xml

#编辑配置文件

vim ${HADOOP_HOME}/etc/hadoop/mapred-site.xml

#修改为

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>master:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>master:19888</value>
	</property>
</configuration>

5)配置复制

向 slave1 和 slave2 节点复制 hadoop2.6.5 整个目录至相同的位置,如果此前的修改都是同时在三个节点上相应文件上进行修改,则此步骤不用。

2.3.6 格式化文件系统

1)执行命令

 hdfs namenode -format

2)格式化成功的标志

3) 常见错误

java.io.IOException: Cannot create directory /opt/data/tmp/dfs/name/current

权限问题,hd用户对opt目录没有操作权限,赋予权限即可

chmod 777 /opt

2.3.7 系统测试

1) 启动集群

start-dfs.sh && start-yarn.sh

2) 查看进程

4)查看端口号

ss -tnl

3)登录web服务

#请以你实际的主机ip为准

http://192.168.219.51:50070

4)登录yarn服务

#请以你实际的主机ip为准

 http://192.168.219.51:8088/

5)停止集群

stop-dfs.sh && stop-yarn.sh

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值