1.准备阶段
准备4个Linux操作系统,并配置好IP地址,将NameNode在Hadoop1节点上启动,SecondaryNameNode和DataNode在Hadoop2节点上启动,其余两个DataNode分别在Hadoop3和Hadoop4节点上启动。**
主机名 |
IP地址 |
NameNode |
SecondaryNameNode |
DataNode |
Hadoop1 |
192.168.23.133 |
启动 |
|
|
Hadoop2 |
192.168.23.130 |
|
启动 |
启动 |
Hadoop3 |
192.168.23.132 |
|
|
启动 |
Hadoop4 |
192.168.23.131 |
|
|
启动 |
2.操作阶段
(1)为了不产生数据延迟首先使4台Linux系统的时间同步
①各个节点安装ntp :
yum install ntp
②安装完成后每个节点都执行如下命令从而达到时间同步
/*ntp1.aliyun.com为阿里的时间服务器*/
ntpdate ntp1.aliyun.com
(2)创建文件夹用来放置Hadoop和JDK的压缩包,然后输入以下命令解压压缩包
tar -zxvf Hadoop-2.6.5.gz
tar -zxvf jdk-1.8.0_151_linux-x64_bin.gz
配置Hadoop和JDK的环境变量
输入命令
vim ~/.bashrc
在文件最后添加
/*配置Hadoop环境变量*/
export HADOOP_HOME=/hpe/hadoop/Hadoop-2.6.5
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
/*配置JDK环境变量*/
export JAVA_HOME=/hpe/hadoop/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
输入命令使环境变量生效
source ~/.bashrc
(3)配置免密登录
Hadoop1节点和其他节点之间进行免密访问
Hadoop1->Hadoop1
Hadoop1->Hadoop2
Hadoop1->Hadoop3
Hadoop1->Hadoop4
①修改hosts文件,做好ip之间的映射,输入以下命令
vim /etc/hosts
在hosts文件中添加以下代码,实现主机名的映射
192.168.23.133 Hadoop1
192.168.23.130 Hadoop2
192.168.23.132 Hadoop3
192.168.23.131 Hadoop4
③在所有节点执行以下命令
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
②在Hadoop1节点执行,将Hadoop1的公钥加入到其他节点的白名单中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop3
ssh-copy-id -i ~/.ssh/id_rsa.pub root@Hadoop4
(4)修改hdfs-site.xml的配置文件
切换hdfs-site.xml所在的盘符,输入vim hdfs-site.xml,在其中添加如下代码
<property>
<name>dfs.replication</name>
<value>3</value> //Block副本数+1
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Hadoop2:50090</value> //使secondaryNamenode在Hadoop2系统上启动,50090是设置的端口号
</property>
(5)修改core-site.xml配置文件
输入vim core-site.xml,在其中添加如下代码
<property>
<name>fs.defaultFS</name>
<value>hdfs://Hadoop1:9000</value> //设置默认前缀
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/abc/hadoop/cluster</value> //初始化生成文件夹的路径
</property>
(6)修改slaves配置文件
此部分设置的是DataNode在哪个节点启动
输入vim slaves,添加
Hadoop2
Hadoop3
Hadoop4
切记有空格,且不能在一行
(7)将配置好的安装包分发到其他节点上
scp -r hadoop-2.6.5 root@Hadoop2:/hpe/hadoop/
scp -r hadoop-2.6.5 root@Hadoop3:/hpe/hadoop/
scp -r hadoop-2.6.5 root@Hadoop4:/hpe/hadoop/
(8)将所有的HDFS相关的进程关闭
stop-dfs.sh
(9)格式化NameNode(创建目录以及文件)在Hadoop1节点执行
hdfs namenode -format
(10)启动HDFS
start-dfs.sh
如出现下图,则HDFS完全分布式搭建成功
Lives Nodes为3,证明启动成功。
3.搭建过程中遇见的问题
1).待Linux系统安装好后没有进行IP配置导致节点之间无法正常通信。
2).没有关闭防火墙,输入jps后每个节点正常显示启动的角色,但是页面无法访问。
3).hosts文件配置有误,主要原因是命令前有空格。
4).在配置好安装包分发到其他节点上以后,修改了Hadoop1节点的配置文件,导致secondaryNamenode角色启动失败。