當您的集群中只有一個節點上的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介紹。