#【Hadoop】hadoop配置过程避坑指南
我最近在学习 Hadoop 的时候,由于刚入门的缘故,配置 Hadoop 集群的过程中遇到了很多问题,以下的每个问题都是我遇到过的,并且成功解决了的,故而,我将这个过程记录下来,希望可以帮助到更多的朋友。
问题描述:
1、在配置过 ssh 免密登录后,使用 start-all.sh 启动 hadoop 集群时,系统提示 Permission denied,且无法正常启动主节点的进程。
解决:
这是由于权限不足且只配置了其他节点的 ssh 的免密登录,当启动本机的 root 用户登录时无法免密登录,故而,需要配置本机的 ssh 免密登录。(详情参见,只需将自身的 id_rsa.pub 与 authorized_keys 合并即可。)
问题描述:
2、在启动后,使用 jps 查询进程,发现主节点的 DataNode 正常启动,但是其他两个从节点的 DataNode 未启动。
解决:
这是由于在格式化 NameNode、启动集群后又对配置文件进行了修改,这时,由于主节点的 DataNode 的 clusterID 与从节点中的 clusterID不一致了,所以,无法启动 DataNode。这时需要找到 ${HADOOP_HOME}/data/tmp/dfs/data/current 中的 VERSION 文件,将里面的 clusterID 覆盖另外两个两个从节点的 clusterID 即可。(如果里面没有保留重要数据的话,可以选择直接删除 tmp 文件夹里面的所有文件,在格式化 NameNode)
问题描述:
3、在启动后,使用 jps 查询进程,发现所有节点的 DataNode 都未启动。
解决:
原因与上面第二点相似,在上述修改前提下,将 H A D O O P H O M E / d a t a / t m p / d f s / d a t a / c u r r e n t 与 {HADOOP_HOME}/data/tmp/dfs/data/current 与 HADOOPHOME/data/tmp/dfs/data/current与 {HADOOP_HOME}/data/tmp/dfs/name/current 中的 VERSION 文件的 clusterID 改为一致(将 name 内的覆盖到 data 中)。
问题描述:
4、启动集群后,只成功启动了 NodeManager,但未成功启动 ResourceManager 。
解决:
这是由于我部署的 NameNode 和 ResourceManager 并不在一台主机上,所以,在主节点上 start-all.sh 启动服务后,仍然需要回到部署 ResourceManager 的节点手动启动 start-yarn.sh 服务。
![](https://img-blog.csdnimg.cn/20200615163254384.png)
![](https://img-blog.csdnimg.cn/20200615163338818.png)