ambari集群NameNode启动失败(journalnode数据不一致导致)
问题现象:
Ambari集群服务器因为机房断电,导致有个别节点未正常启动,过了两天才发现该问题,去机房将问题服务器启动后,重启Ambari集群服务报错,NameNode无法启动,由于该问题之前已经遇到过,故此进行记录
问题原因:
一般来说,由于机器异常停止,导致集群组件宕机很长时间后,很容易出现NameNode无法启动问题;
主要是由于其他正常节点一直运行,数据及日志一直都是保持同步在最新时间,异常宕机节点的服务在启动后,与其他节点的数据不一致不同步,导致启动校验不通过,从而无法启动
具体可以查看每个节点上journalnode的目录大小和时间是否一致
主要是edits相关文件,journalnode日志中应该有对应报错
问题解决:
方法一
此节点的journalnode的元数据出现了问题,就需要从其他正常节点的journalnode的元数据拷贝过来
具体操作:
一、在Ambari Web 界面关闭此节点的JournalNodes进程
找到此节点JournalNodes 里面选择“Turn On Maintenance Mode”然后选择“Stop”执行关闭操作
二、命令行找到此节点的edits_inprogress文件所在位置,进行备份
/hadoop/hdfs/journal/xxx-ha/current/
三、拷贝其他节点下该目录的文件过来,并修改权限为之前目录的权限及用户
四、在Ambari Web 界面开启此节点的JournalNodes进程
找到此节点JournalNodes 选择“Start”执行开启操作,然后选择“Turn On Maintenance Mode”
方法二
先停止journalnode服务删除此节点journalnode元数据存储路径中current文件夹中version以外的文件
一、在Ambari Web 界面关闭此节点的JournalNodes进程
找到此节点JournalNodes 里面选择“Turn On Maintenance Mode”然后选择“Stop”执行关闭操作
二、命令行找到此节点的edits_inprogress文件所在位置
/hadoop/hdfs/journal/xxx-ha/current/
三、小心依次对edits_inprogress、last-promised-epoch、last-writer-epoch等文件以及文件夹paxos进行删除操作
四、在Ambari Web 界面开启此节点的JournalNodes进程
找到此节点JournalNodes 选择“Start”执行开启操作,然后选择“Turn On Maintenance Mode”