ighack 发表于 2020-5-13 09:31:06

Port 9000 specified in URI hdfs://jzyc5.com:9000 but host 'jzyc5.com' is a lo...

本帖最后由 ighack 于 2020-5-13 09:33 编辑

在做hadoop高可用的时候namenode启动不了
提示
Port 9000 specified in URI hdfs://jzyc5.com:9000 but host 'jzyc5.com' is a logical (HA) namenode and does not use port in formation

core-site.xml
我明明是
<name>fs.defaultFS</name>
    <value>hdfs://jzyc5.com</value>


hdfs-site.xml
<name>dfs.nameservices</name>
      <value>jzyc5.com</value>


这两个是一样的。还提示错误不知道是为什么

还有我以前是
<name>fs.defaultFS</name>
我做了hadoop namenode -format
还是不行
    <value>hdfs://jzyc5.com:9000</value>


是这样配的。还要改成高可用,修改了fs.defaultFS为什么没有改过来啊

阿飞 发表于 2020-5-13 11:06:13

楼主最好贴出全部配置,看上去配置的确实有问题。

下面配置仅供参考:
core-site.xml :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
……………………
-->

<!-- Put site-specific property overrides in this file. -->

configuration>
<!-- 指定hdfs的nameservice为bi -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://bi/</value>
</property>

<!-- 指定hadoop临时目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop/tmp</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
    <name>ha.zookeeper.quorum</name>
    <value>mini03:2181,mini04:2181,mini05:2181,mini06:2181,mini07:2181</value>
</property>

</configuration>


hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
……………………
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!--指定hdfs的nameservice为bi,需要和core-site.xml中的保持一致 -->
<property>
    <name>dfs.nameservices</name>
    <value>bi</value>
</property>

<!-- bi下面有两个NameNode,分别是nn1,nn2 -->
<property>
    <name>dfs.ha.namenodes.bi</name>
    <value>nn1,nn2</value>
</property>

<!-- nn1的RPC通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.bi.nn1</name>
    <value>mini01:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.bi.nn1</name>
    <value>mini01:50070</value>
</property>

<!-- nn2的RPC通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.bi.nn2</name>
    <value>mini02:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
    <name>dfs.namenode.http-address.bi.nn2</name>
    <value>mini02:50070</value>
</property>

<!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://mini05:8485;mini06:8485;mini07:8485/bi</value>
</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/app/hadoop/journaldata</value>
</property>

<!-- 开启NameNode失败自动切换 -->
<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
</property>

<!-- 配置失败自动切换实现方式 -->
<property>
    <name>dfs.client.failover.proxy.provider.bi</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<!-- 其中shell(/bin/true) 表示可执行一个脚本比如 shell(/app/yunwei/hadoop_fence.sh) -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
      sshfence
      shell(/bin/true)
    </value>
</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/app/.ssh/id_rsa</value>
</property>

<!-- 配置sshfence隔离机制超时时间 单位:毫秒 -->
<property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
</property>


</configuration>

ighack 发表于 2020-5-13 11:43:21

本帖最后由 ighack 于 2020-5-13 11:44 编辑

core-site.xml
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://jzyc5.com</value>
</property>



<!--指定可以在任何IP访问-->
<property>
    <name>hadoop.proxyuser.hduser.hosts</name>
    <value>*</value>
</property>

<!--指定所有用户可以访问-->
<property>
    <name>hadoop.proxyuser.hduser.groups</name>
    <value>*</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
      <name>ha.zookeeper.quorum</name>
      <value>jzyc1.com:2181,jzyc2.com:2181,jzyc3.com:2181,jzyc4.com:2181,jzyc5.com:2181</value>
</property>

<!-- hadoop链接zookeeper的超时时长设置 -->
<property>
      <name>ha.zookeeper.session-timeout.ms</name>
      <value>1000</value>
      <description>ms</description>
</property>

hdfs-site.xml
<!-- 配置namenode和datanode的工作目录-数据存储目录 -->

    <!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致
               dfs.ha.namenodes.为在nameservice中的每一个NameNode设置唯一标示符。
      配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。
      例如,如果使用"myha01"作为nameservice ID,并且使用"nn1"和"nn2"作为NameNodes标示符
    -->
    <property>
      <name>dfs.nameservices</name>
      <value>jzyc5.com</value>
    </property>

    <!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
    <property>
      <name>dfs.ha.namenodes.jzyc5.com</name>
      <value>nn1,nn2</value>
    </property>

    <!-- nn1的RPC通信地址 -->
    <property>
      <name>dfs.namenode.rpc-address.jzyc5.com.nn1</name>
      <value>jzyc5.com:9000</value>
    </property>

    <!-- nn1的http通信地址 -->
    <property>
      <name>dfs.namenode.http-address.jzyc5.com.nn1</name>
      <value>jzyc5.com:50070</value>
    </property>

    <!-- nn2的RPC通信地址 -->
    <property>
      <name>dfs.namenode.rpc-address.jzyc5.com.nn2</name>
      <value>jzyc1.com:9000</value>
    </property>

    <!-- nn2的http通信地址 -->
    <property>
      <name>dfs.namenode.http-address.jzyc5.com.nn2</name>
      <value>jzyc1.com:50070</value>
    </property>

    <!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表
               该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId
      journalId推荐使用nameservice,默认端口号是:8485 -->
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://jzyc1.com:8485;jzyc2.com:8485;jzyc3.com:8485/jzyc5.com</value>
    </property>

    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/data/hadoop/journaldata</value>
    </property>

    <!-- 开启NameNode失败自动切换 -->
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>

    <!-- 配置失败自动切换实现方式 -->
    <property>
      <name>dfs.client.failover.proxy.provider.jzyc5.com</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
    <property>
      <name>dfs.ha.fencing.methods</name>
      <value>
            sshfence
      </value>
    </property>

    <!-- 使用sshfence隔离机制时需要ssh免登陆-->
    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/jzyc/.ssh/id_dsa</value>
    </property>
   
    <!-- 配置sshfence隔离机制超时时间 -->
    <property>
      <name>dfs.ha.fencing.ssh.connect-timeout</name>
      <value>30000</value>
    </property>

    <property>
      <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
      <value>60000</value>
    </property>
      
      <!--保证数据恢复 -->
<property>
    <name>dfs.journalnode.http-address</name>
    <value>0.0.0.0:8480</value>
</property>

<property>
    <name>dfs.journalnode.rpc-address</name>
    <value>0.0.0.0:8485</value>
</property>

<property>
    <name>ha.zookeeper.quorum</name>
    <value>jzyc1.com:2181,jzyc2.com:2181,jzyc3.com:2181,jzyc4.com:2181,jzyc5.com:2181</value>
</property>

ighack 发表于 2020-5-13 16:06:45

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://jzyc5.com</value>
</property>

我将这个值换掉不用机器名。换个别的逻辑名就可以了
页: [1]
查看完整版本: Port 9000 specified in URI hdfs://jzyc5.com:9000 but host 'jzyc5.com' is a lo...