我正在使用zookeeper建立一个单节点hadoop集群 我的zookeeper集群有三个节点,它们在同一台机器上有不同的端口。它们工作正常。 我的hadoop集群只有一个node.my hadoop和zookeepers在同一台机器上。当使用" hdfs zkfc -formatZK"他们告诉我:线程中的异常" main" org.apache.Hadoop.HadoopIllegalArgumentException:未对此namenode启用HA
my core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yavin</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hdfs/temp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>coruscant:2181,coruscant:2182,coruscant:2183</value>
</property>
</configuration>
coruscant正在我的主机文件中映射我的IP地址。我的所有动物园管理员都使用2181 2182 2183
进入科罗拉多州我的hdfs-site.xml:
<configuration>
<property>
<name>dfs.nameservices</name>
<value>yavin</value>
</property>
<property>
<name>dfs.ha.namenodes.yavin</name>
<value>nn1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yavin.nn1</name>
<value>coruscant:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.yavin.nn1</name>
<value>coruscant:50070</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.yavin.nn1</name>
<value>coruscant:53310</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://coruscant:8485;coruscant:8486;coruscant:8487/yavin</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/journal</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.yavin</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property> <property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
我的mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
my yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>coruscant</value>
</property>
</configuration>
我做错了什么?
答案 0 :(得分:0)
我遇到了同样的问题。在阅读HAUtil.isHAEnabled()
的源代码后,我找到了解决方案:
HDFS高可用性仅在您配置了多个namenode 时才可用。但错误信息仍然有点误导。