修复单台JournalNode异常

当您的集群中只有一个节点上的JournalNode服务出现异常时,可以尝试从其他节点恢复。本文介绍如何从其他节点恢复异常的JournalNode服务。

操作步骤

  1. 找到健康状态的JournalNode。

    您可以通过HDFS WebUI查看JournalNode的状态,详细信息请参见HDFS Web UI介绍

  2. 登录到健康的JournalNode所在节点(优先选择header或master节点),打包需要恢复的文件。

    登录节点的具体操作,请参见登录集群

    1. 切换到hdfs用户。

      su hdfs
    2. 进入文件所在目录。

      cd /mnt/disk1/hdfs/journal/emr-cluster/
    3. 打包文件。

      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
  3. 同步打包后的文件(jn-current.tar.gz)到异常JournalNode服务所在节点。

    1. 切换到emr-user用户。

      su emr-user

      如果5.7.0或3.41.0之前版本的EMR提示emr-user不存在,可切换至hadoop用户。

      su hadoop
    2. 同步打包后的文件。

      scp /tmp/jn-current.tar.gz $unhealthy-journal-node:/tmp/

      $unhealthy-journal-node需要替换为异常JournalNode节点的hostname。

  4. 在EMR控制台停止HDFS异常节点上的JournalNode服务,并登录到异常JournalNode所在的节点,尝试恢复JournalNode。

    1. 切换到hdfs用户。

      su hdfs
    2. 备份旧的current目录。

      cd /mnt/disk1/hdfs/journal/emr-cluster/
      mv current current.bak
    3. 恢复JournalNode。

      tar -xvf /tmp/jn-current.tar.gz
  5. 在EMR控制台启动HDFS异常节点上的JournalNode服务,并在异常节点中查看JournalNode日志。

    关于日志的详细信息,请参见HDFS服务日志

  6. 观察HDFS Web UI,如果JournalNode可正常写入,则恢复成功,此时可清理掉已备份的current目录文件(current.bak)。

    您可以通过HDFS WebUI查看JournalNode是否可以正常写入,详细信息请参见HDFS Web UI介绍