对集群进行集中管理
一、目前存在的问题
在阅读这篇文章之前,你应该先阅读:简单认识namenode和datanode.
在之前,我们启动Hadoop集群的时候,首先是启动namenode,然后启动datanode. 注意:我们之前的做法是手动的将启动datanode的命令发送给所有的datanode,显然如果在集群很庞大的时候,这种做法是不合适的.我们希望通过start-dfs.sh的方式启动所有的节点.那么我们就需要配置namenode机器上面的slaves文件,这个文件管理着这个namenode下面所有的datanode.这个文件的位于:${hadoop_home}/etc/hadoop,其中${hadoop_home}是Hadoop的安装目录.
二、配置namenode机器上slaves文件
1. 运行cd /usr/local/hadoop/hadoop-2.7.3/etc/hadoop 进入到slaves文件所在的目录
2. 运行 vim slaves命令,添加slave机器名称, 保存并退出。
三、配置免密SSH远程登陆
1. 在namenode机器上面,进入/root/.ssh目录下面,运行命令: ssh-keygen -t rsa
2. 将namenode机器上面的公钥copy到npfdev1(本机),npfdev2,npfdev3,npfdev4上面.
运行如下命令:
ssh-copy-id npfdev1
ssh-copy-id npfdev2
ssh-copy-id npfdev3
ssh-copy-id npfdev4
四、在namenode机器上运行start-dfs.sh启动集群
1. 启动完成之后,查看:
注意:start-dfs.sh会默认启动secondarynamenode
五、在namenode机器上运行stop-dfs.sh启动集群
1. 停止完成之后,查看:
六、启动和关闭Hadoop集群命令步骤总结:
1. 修改master上/etc/hadoop/slaves文件,每一个slave占一行.
2. 配置免密SSH远程登陆.
3. start-dfs.sh启动集群.
4. stop-dfs.sh停止集群.
注意:如果你出现类似的错误,
解决方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
参考文献:
1. Hadoop 2.2.0集群安装