本人用ambari 2.7.3 搭建集群。本来是一次性成功了。但是发现Namenode布在了dn的域名上,于是使用ambari的delete service选项,把所有安装的服务都卸载了。(还剩ZK,因为ambari要求必须至少一个服务,所以最后剩下zk没法delete掉)。
然后重新走集群安装向导,由伪分布式 -> 完全分布式。
安装完之后的最后一步,开始重新启动集群。发现dn无论如何也启动不起来。但是ambari这边却显示绿条(这意味着启动成功),所以我们要去看DN的日志。由于我们之前日志都默认配置在/foo1目录下,但是去这个目录下发现日志的修改时间都是昨天。一瞬间毫无头绪了。
后来看到ambari里配置的log dir换成了/foo2,这才知道昨天第二遍搭集群的时候配置填错了。所以去接下来去/foo2看log。
看到如下log:
![](https://img-blog.csdnimg.cn/img_convert/66e9ab54f1f65c4ad1b949fb00f1a5bf.png)
这是因为datanode端的clusterID和NN的clusterID不一样,导致无法兼容而出现错误。这是因为昨天delete掉之前安装的hdfs,但是可能Datanode这里ambari没有处理的很好,还是留下了之前的一些文件。
解决方案:
修改namenode的VERSION中的clusterID,让其与Datanode一致。
storageID=DS-884ee86c-f8d7-463b-8f5d-5d368e86d781
clusterID=CID-d4fc810c-aa11-4924-8a27-2788ed84a92e
cTime=0
datanodeUuid=bdbf38e2-a46c-4d88-a4c8-9e772b17a62f
storageType=DATA_NODE
layoutVersion=-57
这个问题是顺利解决了。
但是和同事对NN、JN数据文件夹配置的时候,发现配置错了,遂修改成正确目录。但是此时nn启动不了了。日志里是如下错误:
![](https://img-blog.csdnimg.cn/img_convert/2ada08dfe329dae428a3914e5bbf22d4.png)
此log说明JN还没格式化,于是到nn节点上运行:
hdfs namenode -initializeSharedEdits
最终集群终于成功启动了。