一、集群原先配置:
主机名sparkMaster,Ubuntu12.04-32 ,用户名Root , 内存4g
(只用于任务调度和分配,不做计算节点)
从机名sparkSlave1,Ubuntu12.04-32 ,用户名Root , 内存4g (计算节点)
从机名sparkSlave2,Ubuntu12.04-32 ,用户名Root , 内存1.7g (计算节点)
二、扩展原因:计算数据量增大,原先的两个工作节点已不不能满足实时性的需求,由于实验室计算资源有限,故将原先的调度节点也增加为计算节点,即扩展后的sparkMaster既是调度节点也是计算节点。
三、修改配置流程:cd /usr/local/hadoop/hadoop-2.2.0/etc/hadoop
vim slaves 修改slaves文件,将原先只有sparkSlave1、sparkSlave2的内容增添sparkMaster,保存退出(对三个节点上的文件分别执行同样操作);
vim hdfs-site.xml修改hdfs-site.xml文件,将dfs.replication的值由2改写成3(对三个节点上的文件分别执行同样操作);
四、格式化HDFS:cd /usr/local/hadoop/hadoop-2.2.0/bin
hadoop namenode -format
五、错误描述:启动SparkMaster成功,使用jps查看SparkMaster进程时会出现Datanode、Namenode、ResourceManager 、NodeManager、SecondaryNameNode、jps,但是使用jps查看sparkSlave1、sparkSlave2 的进程时只会短暂地出现十秒钟左右Datanode、NodeManager、jps,随后进程便会掉线,而且在访问http://SparkMaster:50070登录web控制台查看HDFS集群状况时Live Node=0,这说明Hadoop集群没有启动成功(下图为启动成功时配图):
六、错误分析:由于在执行hadoop格式化时namenode format会初始化一些目录和文件,这其中包括/usr/local/hadoop/hadoop-2.2.0/dfs/name/current里面的VERSION文件:
其中clusterID会在格式化时更改,而且会造成SparkMaster的clusterID和sparkSlave1、sparkSlave2的clusterID 不一致,这样就会造成Hadoop集群启动失败。
七、解决方法:在执行格式化之前,需要将所有节点中的/usr/local/hadoop/hadoop-2.2.0/dfs目录里面的内容清空,并使用./stop-all.sh停止集群,这样就能保证SparkMaster、sparkSlave1、sparkSlave2里面的clusterID都是一致的。
ps:作者水平有限,如有不当之处,还望读者不吝赐教!
Hadoop小兵笔记【二】Hadoop分布式集群扩展实战经验
原文地址:http://blog.csdn.net/cafuc46wingw/article/details/45040793