hadoop3.x NameNode故障处理

概述

NameNode故障后,可以采用如下两种方法恢复数据。

方法一

将 SecondaryNameNode 中数据拷贝到 NameNode 存储数据的目录

  1. 停止 NameNode

    kill -9 NameNode进程
    
  2. 删除NameNode存储的数据

    $ rm -rf /devtools/hadoop-3.0.3/data/tmp/dfs/name/*
    
  3. 拷贝 SecondaryNameNode 中数据到 NameNode 存储数据目录

    $cp /devtools/hadoop-3.0.3/data/tmp/dfs/namesecondary/* /devtools/hadoop-3.0.3/data/tmp/dfs/name/
    
  4. 启动 NameNode

    $ start-dfs.sh
    

方法二

使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中。

  1. 修改hdfs-site.xml中的

    <property>
    <name>dfs.namenode.checkpoint.period</name>
    <value>120</value>
    </property>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/devtools/hadoop-3.0.3/data/tmp/dfs/name</value>
    </property>
    
  2. 停止 NameNode

    kill -9 NameNode进程
    
  3. 删除 NameNode 数据

    $ rm -rf /devtools/hadoop-3.0.3/data/tmp/dfs/name/*
    
  4. 如果 SecondaryNameNode 不和 NameNode 在一个主机节点上,需要将 SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除in_use.lock文件

    $ cp /devtools/hadoop-3.0.3/data/tmp/dfs/namesecondary /devtools/hadoop-3.0.3/data/tmp/dfs/name/
    
    $ rm -rf in_use.lock
    
  5. 导入检查点数据(等待一会ctrl+c结束掉)

    $ hdfs namenode -importCheckpoint
    
  6. 启动NameNode

    $ start-dfs.sh
    

原文出处:/show_1IXaxDIFMnu.html