【发布时间】: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