前面介绍的伪分布式是基于单个节点,而完全分布式是基于两个或两个以上节点完成Hadoop集群搭建。

下面基于三个节点完成。

hadoop 查看 空间 集群 hadoop集群进程_大数据

整个虚拟机的部署情况:

(1)HDFS的服务进程主要有三个:namenode,datanode,secondarynamenode
1)我们以第一台机器作为分布式存储的主节点,也就是namenode所在的节点
2)然后真正存储数据的datanode分布在三台机器中
3)secondarynamenode是namenode的一个备份放在第三台机器上
(2)关于并行计算的mapreduce进程:
1)resourcemanager是mapreduce的主节点,放在第二台机器中
2)其余的nodemanager分布在三台机器中
3)historyserver主要用于查看并行计算里面的一些日志,运行状况,放在第一台虚拟机中
由于用集群模式的话可能有些电脑会带不动,因此后面的课程我们还是采用伪分布式模式。

8.1 主节点部署

8.1.1 重新解压
进入app目录下,重新解压一个hadoop文件到其他文件夹,为了与之前的hadoop伪分布式模式区分,我们给他重命名为hadoop-2.5.0并修改文件位置

tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /usr/software/
mv hadoop-2.5.0-cdh5.3.6 ~/app/hadoop-2.5.0

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_02


我们就以hadoop-2.5.0作为集群进行配置

8.1.2 修改配置文件

进入hadoop-2.5.0/etc/hadoop目录下修改一下几个配置文件

hadoop 查看 空间 集群 hadoop集群进程_hadoop 查看 空间 集群_03


(1)配置hadoop-env.sh

vi hadoop-env.sh,修改 JAVA_HOME 为之前那个参数(之前已经设置过)

hadoop 查看 空间 集群 hadoop集群进程_hadoop_04


(2)配置core-site.xml

vi core-site.xml,在configuration中添加各配置项

hadoop 查看 空间 集群 hadoop集群进程_大数据_05


临时文件目录地址还是和以前一样在hadoop-2.5.0中新建一个data/tmp目录

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_06


(3)配置 hdfs-site.xml

vi hdfs-site.xml

hadoop 查看 空间 集群 hadoop集群进程_xml_07


(4)配置 mapred-site.xml

mv mapred-site.xml.template mapred-site.xml,将mapred-site.xml.template重命名为mapred-site.xml

vi mapred-site.xml

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_08


(5)配置 yarn-site.xml

vi yarn-site.xml,要配置的参数有4个:

1)指定yarn集群中的老大(就是本机)

2)配置yarn集群中的重节点,指定map产生的中间结果传递给reduce采用的机制是shuffle。

3)日志聚合

4)日志删除的保留时间

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_09


(6)配置slaves

vi slaves,把三台虚拟机的主机名写进去

hadoop 查看 空间 集群 hadoop集群进程_大数据_10

8.2 集群节点分发与启动

8.2.1 修改/etc/profile文件

vi /etc/profile

因为我们现在的需求是既想保留住Hadoop伪分布式,又想搭建Hadoop集群环境,这就导致了一个问题,如果系统变量配置的是伪分布式的环境,每次启动Hadoop的时候就会启动伪分布式;如果配置的是集群环境,每次启动Hadoop就会启动集群模式。为了解决这个问题,我们把/etc/profile中Hadoop环境变量注释掉,想起启动Hadoop的时候直接到各自的sbin目录下启动即可。

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_11


source /etc/profile,立即执行这个文件

//同步到其他虚拟机
scp /r /etc/profile root@hadoop2:~/app  
scp /r /etc/profile root@hadoop3:~/app

然后在虚拟机2和3上使用source /etc/profile命令使其生效
同时将hadoop-2.5.0发送到其他两台虚拟机

scp /r ~/app/hadoop-2.5.0 root@hadoop2:~/app
scp /r ~/app/hadoop-2.5.0 root@hadoop3:~/app

可以看出在其他虚拟机中有hadoop-2.5.0

hadoop 查看 空间 集群 hadoop集群进程_大数据_12


8.2.2 格式化

输入bin/hdfs可以看到有格式化文件

hadoop 查看 空间 集群 hadoop集群进程_Hadoop_13


bin/hdfs namenode -format,格式化

hadoop 查看 空间 集群 hadoop集群进程_hadoop_14


出现以上信息则表示格式化成功

8.2.3 启动

(1)在第一台机器上输入sbin/start-dfs.sh

hadoop 查看 空间 集群 hadoop集群进程_大数据_15


可见datanode并没有启动

解决方案:

首先关闭dfs启动进程,sbin/stop-dfs.sh

然后在三台虚拟机中清空data和logs目录

进入data目录,rm -rf *

进入logs目录,rm -rf *

hadoop 查看 空间 集群 hadoop集群进程_xml_16


之后在进行格式化和启动命令即可。

hadoop 查看 空间 集群 hadoop集群进程_hadoop 查看 空间 集群_17


在第二台机器上使用jps命令可以看出只有一个datanode,同理第三台有一个datanodesecondarynamenode

hadoop 查看 空间 集群 hadoop集群进程_hadoop_18


(2)在第二台机器上输入sbin/start-yarn.sh

然后可以看出在第二台机器上多了NodeManagerResourceManager,第一台机器和第三台机器上多了NodeManager

(3)在第一台机器上输入sbin/mr-jobhistory-daemon.sh start historyserver

然后可以看出在第一台机器上多了JobHistoryServer

最后分别在三台虚拟机上使用jps命令,可见与最初的部署情况相符合,集群环境搭建成功

hadoop 查看 空间 集群 hadoop集群进程_hadoop 查看 空间 集群_19


hadoop 查看 空间 集群 hadoop集群进程_xml_20


hadoop 查看 空间 集群 hadoop集群进程_hadoop 查看 空间 集群_21