NN那么重要, 虽然可以由2NN进行Fsimage, editslog或者CheckPoint的数据恢复,但是还是不保险,因为/opt/module/hadoop-2.7.2/data/tmp/dfs下面仅有一个name目录(和data目录).

实际上NameNode的本地目录可以配置成多个,且每个目录的内容相同,这样就更有HA; (挂一个另一个自动切换这里先不写)

  1. etc/hadoop/hdfs-site.xml增加:

    1
    2
    3
    4
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
    </property>
  2. [lei@hadoop100 hadoop-2.7.2]$ xsync etc/hadoop/, 前提是已经写了同步脚本和ssh免密登录;

  3. [lei@hadoop100 hadoop-2.7.2]$ stop-dfs.sh;
  4. [lei@hadoop101 hadoop-2.7.2]$ stop-yarn.sh; 停止了集群;
  5. 删除所有产生的数据:

    1
    2
    3
    4
    5
    [lei@hadoop100 hadoop-2.7.2]$ rm -rf data/ logs/
    [lei@hadoop101 hadoop-2.7.2]$ rm -rf data/ logs/
    [lei@hadoop102 hadoop-2.7.2]$ rm -rf data/ logs/
    ...
    [lei@hadoop149 hadoop-2.7.2]$ rm -rf data/ logs/
  6. [lei@hadoop100 hadoop-2.7.2]$ bin/hdfs namenode -format

  7. 再次启动集群:

    1
    2
    [lei@hadoop100 hadoop-2.7.2]$ sbin/start-dfs.sh
    [lei@hadoop101 hadoop-2.7.2]$ sbin/start-yarn.sh
  8. [lei@hadoop100 hadoop-2.7.2]$ cd data/tmp/dfs/看到:
    name2.png
    进入目录中发现name1/name2完全相同, 所以说就是完全的备份。不过也只有namenode所在的node上面有这个