如何将HDFS名称节点移动到新主机

时间:2016-03-30 15:08:59

标签: apache hadoop hdfs

将主要Hadoop DFS名称节点从一个主机移动到另一个主机的正确步骤是什么?

我在Ubuntu 14.04.3 LTS(没有YARN)上使用hadoop的2.7.1版本。

已完成的步骤:

  • 将整个hadoop目录复制到新主机
  • 在$ hadoop_home / etc / hadoop / master
  • 中设置新主人
  • 更新了$ hadoop_home / etc / hadoop / core-site.xml中的fs.default.name标记
  • 使用旧namenode的ClusterID格式化新的namenode:$ hadoop_home // bin / hadoop namenode -format -custerId $ CLUSTER_ID(我从配置中删除了奴隶,以确保没有任何奴隶受到影响;也许那是个问题?)

问题是由于clusterid不匹配,数据节点仍然没有出现:

2016-03-30 16:20:28,718 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /storage/data: namenode clusterID = CID-c19c691d-10da-4449-a7b6-c953465ce237; datanode clusterID = CID-af87cb62-d806-41d6-9638-e9e559dd3ed7
2016-03-30 16:20:28,718 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to XXXXXXXXXXXXXX. Exiting.
java.io.IOException: All specified directories are failed to load.

有什么建议吗? 我是否还必须添加BlockPool-ID?

1 个答案:

答案 0 :(得分:1)

所以我终于设法让它感动了。

  • 将正在运行的HDFS设置为安全模式: bin / hadoop dfsadmin -safemode enter
  • Tarball dfs.name.dir
  • 下的完整目录
  • 将TarBall移动到新的namenode并提取内容。
  • 将core-site.xml和master更改为新节点的主机名
  • 启动并离开安全模式: bin / hadoop dfsadmin -safemode leave