天天看點

[解決]Spark運作中java.net.UnknownHostException: nameservice1的異常

[Author]: kwu

解決Spark運作中java.net.UnknownHostException: nameservice1的異常,nameservice1是配置hdfs中用到的HA,在執行spark程式時出現 java.net.UnknownHostException: nameservice1異常,找到正确的路徑。

分析在CDH5.4中配置檔案/etc/hadoop/conf/hdfs-site.xml,此檔案記錄了hdfs的路徑與主節點的配置

hdfs-site.xml 主要配置如下:

<property>
    <name>dfs.nameservices</name>
    <value>nameservice1</value>
  </property>
  <property>
    <name>dfs.client.failover.proxy.provider.nameservice1</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>
  <property>
    <name>dfs.ha.automatic-failover.enabled.nameservice1</name>
    <value>true</value>
  </property>
  <property>
    <name>ha.zookeeper.quorum</name>
    <value>bdc40.hexun.com:2181,bdc41.hexun.com:2181,bdc46.hexun.com:2181,bdc53.hexun.com:2181,bdc54.hexun.com:2181</value>
  </property>
  <property>
    <name>dfs.ha.namenodes.nameservice1</name>
    <value>namenode50,namenode85</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.nameservice1.namenode50</name>
    <value>bdc20.hexun.com:8020</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.nameservice1.namenode50</name>
    <value>bdc20.hexun.com:8022</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.nameservice1.namenode50</name>
    <value>bdc20.hexun.com:50070</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.nameservice1.namenode50</name>
    <value>bdc20.hexun.com:50470</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.nameservice1.namenode85</name>
    <value>bdc220.hexun.com:8020</value>
  </property>
  <property>
    <name>dfs.namenode.servicerpc-address.nameservice1.namenode85</name>
    <value>bdc220.hexun.com:8022</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.nameservice1.namenode85</name>
    <value>bdc220.hexun.com:50070</value>
  </property>
  <property>
    <name>dfs.namenode.https-address.nameservice1.namenode85</name>
    <value>bdc220.hexun.com:50470</value>
  </property>
           

配置了 nameservice1的别名,對應兩台namenode50,namenode85的節點上。

通過zookeeper來選舉出目前的namenode的active.

hdfs-site.xml檔案複制,到$SPARK_HOME/conf 目錄下,即可解決spark job 通路hdfs路徑的問題。

繼續閱讀