使用" hdfs zkfc -formatZK"时,未对此名称节点启用HA。

时间:2017-04-04 08:18:25

标签: java hadoop

我正在使用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>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在阅读HAUtil.isHAEnabled()的源代码后,我找到了解决方案:

HDFS高可用性仅在您配置了多个namenode 时才可用。但错误信息仍然有点误导。