当您的集群中只有一个节点上的JournalNode服务出现异常时,可以尝试从其他节点恢复。本文介绍如何从其他节点恢复异常的JournalNode服务。
操作步骤
找到健康状态的JournalNode。
您可以通过HDFS WebUI查看JournalNode的状态,详细信息请参见HDFS Web UI介绍。
登录到健康的JournalNode所在节点(优先选择header或master节点),打包需要恢复的文件。
登录节点的具体操作,请参见登录集群。
切换到hdfs用户。
su hdfs
进入文件所在目录。
cd /mnt/disk1/hdfs/journal/emr-cluster/
打包文件。
tar --exclude='edits*' -zcvf /tmp/jn-current.tar.gz current
预期结果如下:
current/ current/last-writer-epoch current/VERSION current/last-promised-epoch current/paxos/ current/committed-txid
同步打包后的文件(jn-current.tar.gz)到异常JournalNode服务所在节点。
切换到emr-user用户。
su emr-user
如果5.7.0或3.41.0之前版本的EMR提示emr-user不存在,可切换至hadoop用户。
su hadoop
同步打包后的文件。
scp /tmp/jn-current.tar.gz $unhealthy-journal-node:/tmp/
$unhealthy-journal-node需要替换为异常JournalNode节点的hostname。
在EMR控制台停止HDFS异常节点上的JournalNode服务,并登录到异常JournalNode所在的节点,尝试恢复JournalNode。
切换到hdfs用户。
su hdfs
备份旧的current目录。
cd /mnt/disk1/hdfs/journal/emr-cluster/ mv current current.bak
恢复JournalNode。
tar -xvf /tmp/jn-current.tar.gz
在EMR控制台启动HDFS异常节点上的JournalNode服务,并在异常节点中查看JournalNode日志。
关于日志的详细信息,请参见HDFS服务日志。
观察HDFS Web UI,如果JournalNode可正常写入,则恢复成功,此时可清理掉已备份的current目录文件(current.bak)。
您可以通过HDFS WebUI查看JournalNode是否可以正常写入,详细信息请参见HDFS Web UI介绍。
文档内容是否对您有帮助?