【问题标题】:java.lang.IllegalArgumentException: Does not contain a valid host:port authority: http at org.apache.hadoop.net.NetUtils.createSocketAddrjava.lang.IllegalArgumentException:不包含有效的主机:端口权限:http at org.apache.hadoop.net.NetUtils.createSocketAddr
【发布时间】:2022-08-24 19:35:52
【问题描述】:

请注意,我已经为 kubernetes 上的 Apache Hadoop 3.3.3 HA 部署了 2 个名称节点、2 个数据节点和 3 个日志节点的状态集。

但namenode抛出以下错误。

 $ hdfs --config /opt/hadoop/etc/hadoop namenode

{\"name\":\"org.apache.hadoop.hdfs.server.namenode.NameNode\",\"time\":1659593176018,\"date\":\"2022-08-04 06:06: 16,018\",\"level\":\"ERROR\",\"thread\":\"Listener at 0.0.0.0/8020\",\"message\":\"遇到需要关闭NN的错误。正在关闭立即。\",\"exceptionclass\":\"java.lang.IllegalArgumentException\",\"stack\":[\"java.lang.IllegalArgumentException:不包含有效的主机:端口权限:http:\",\"\\tat org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:232)\",\"\\tat org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java: 189)\",\"\\tat org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:169)\",\"\\tat org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils. java:158)\",\"\\tat org.apache.hadoop.hdfs.DFSUtil.substituteForWildcardAddress(DFSUtil.java:1046)\",\"\\tat org.apache.hadoop.hdfs.DFSUtil.getInfoServerWithDefaultHost( DFSUtil.java:1014)\",\"\\tat org.apache.hadoop.hdfs.server.namenode.ha.RemoteNameNodeInfo.getRemoteNameNodes(RemoteNameNodeInfo.java:61)\",\"\\tat org.apache. hadoop.hdfs.server.namenode.ha.RemoteNameNodeInfo.getRemoteNameNodes(RemoteNameNodeInfo.java:42)\",\"\\tat org.apache.hadoop.hdfs.server.namenode.ha.EditLogTailer.(EditLogTailer.java:191 )\",\"\\tat org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startStandbyServices(FSNamesystem.java:1501)\",\"\\tat org.apache.hadoop.hdfs.server.namenode .NameNode$NameNodeHAContext.sta rtStandbyServices(NameNode.java:2051)\",\"\\tat org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.enterState(StandbyState.java:69)\",\"\\tat org. apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:1024)\",\"\\tat org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:995)\" ,\"\\tat org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1769)\",\"\\tat org.apache.hadoop.hdfs.server.namenode.NameNode.主(NameNode.java:1834)\"]}

核心站点.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://apache-hadoop-namenode:8020</value>
</property>
<property>
    <name>ha.zookeeper.quorum</name>
    <value>zk-headless.backend.svc.cluster.local:2181</value>
</property>
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/dfs/journal</value>
</property>

hdfs-site.xml

<property>
    <name>dfs.nameservices</name>
    <value>apache-hadoop-namenode</value>
</property>

<property>
    <name>dfs.ha.namenodes.apache-hadoop-namenode</name>
    <value>apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local,apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.apache-hadoop-namenode.apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local</name>
    <value>hdfs://apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local:8020</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.apache-hadoop-namenode.apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local</name>
    <value>hdfs://apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local:8020</value>
</property>

<property>
    <name>dfs.namenode.http-address.apache-hadoop-namenode.apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local</name>
    <value>http://apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local:9870</value>
</property>
<property>
    <name>dfs.namenode.http-address.apache-hadoop-namenode.apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local</name>
    <value>http://apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local:9870</value>
</property>

<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://apache-hadoop-journalnode.backend.svc.cluster.local:8485/apache-hadoop-namenode</value>
</property>  

有谁知道错误的原因。
任何帮助,将不胜感激。

  • 好像是它的主机名问题,试试这个spec: hostname: myhostname containers:stackoverflow.com/questions/30390319/…
  • 它是有状态集,它将已经具有像 <metadata.name>-${cardinal} 这样的主机名。在这种情况下 apache-hadoop-namenode-0 和 apache-hadoop-namenode-1
  • 一般来说,我建议人们不要在 Kubernetes 中运行 HDFS。 Hadoop 开发人员正在开发 Ozone 以获得更好的解决方案,明确构建以支持 k8s 工作负载ozone.apache.org/docs/1.2.1/start/minikube.html

标签: kubernetes hadoop hdfs apache-zookeeper


【解决方案1】:

解决方案是消除http在以下属性中hdfs-site.xml

<property>
  <name>dfs.namenode.http-address.apache-hadoop-namenode.apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local</name>
  <value>apache-hadoop-namenode-0.apache-hadoop-namenode.backend.svc.cluster.local:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.apache-hadoop-namenode.apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local</name>
  <value>apache-hadoop-namenode-1.apache-hadoop-namenode.backend.svc.cluster.local:9870</value>
</property>

这个http地址属性是必需的,因为https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html#:~:text=dfs.namenode.http%2Daddress.%5Bnameservice%20ID%5D.%5Bname%20node%20ID%5D%20%2D%20the%20fully%2Dqualified%20HTTP%20address%20for%20each%20NameNode%20to%20listen%20on
但对于我的情况,它在评论后起作用。

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多