无法将HDFS从非HA转换为HA

介绍

目标:将HDFS从非HA转换为HA。

方法:根据本文档 ,应该可以通过执行以下configuration将HFDS从非转换为HA:

/etc/hadoop/conf/hdfs-site.xml

<property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> 

/etc/hadoop/conf/core-site.xml

  <property> <name>ha.zookeeper.quorum</name> <value>localhost:2181</value> </property> 

并执行以下命令:

sudo service hadoop-hdfs-journalnode start

sudo service hadoop-hdfs-zkfc start

hdfs namenode -initializeSharedEdits

sudo -u hdfs hdfs namenode -bootstrapStandby

sudo service hadoop-hdfs-namenode start

结果:

 14/06/09 15:37:15 FATAL namenode.NameNode: Exception in namenode join java.io.IOException: org.apache.hadoop.HadoopIllegalArgumentException: HA is not enabled for this namenode. at org.apache.hadoop.hdfs.server.namenode.ha.BootstrapStandby.run(BootstrapStandby.java:310) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1154) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1241) Caused by: org.apache.hadoop.HadoopIllegalArgumentException: HA is not enabled for this namenode. at org.apache.hadoop.hdfs.server.namenode.ha.BootstrapStandby.parseConfAndFindOtherNN(BootstrapStandby.java:261) at org.apache.hadoop.hdfs.server.namenode.ha.BootstrapStandby.run(BootstrapStandby.java:92) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) at org.apache.hadoop.hdfs.server.namenode.ha.BootstrapStandby.run(BootstrapStandby.java:305) ... 2 more 14/06/09 15:37:15 INFO util.ExitUtil: Exiting with status 1 14/06/09 15:37:15 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1 ************************************************************/ 

如何将HDFS从非HA转换为HA?

应用本文档中定义的configuration(请参阅configuration详细信息段落)后,问题HA is not enabled for this namenode解决。

 <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>machine1.example.com:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>machine2.example.com:8020</value> </property> 

将其他configuration设置分别应用于ActiveNN和StandyNN,将HDFS从非HA转换为HA。

对于我来说HA is not enabled for this namenode错误HA is not enabled for this namenode当我纠正了hdfs-site.xmlconfiguration文件时,我错误地提到了3个namenode-id是一个nameservice-id。

Haconfiguration只接受2个namenode-id。