3台服务器,NameNode、YARN分别在2台华为云上,SecondaryNameNode在阿里云上。
群起集群后发现,SecondaryNameNode启动失败,日志如下:
2021-12-01 18:47:44,095 FATAL org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Failed to start secondary namenode
java.net.BindException: Port in use: hadoop103:9868
at org.apache.hadoop.http.HttpServer2.constructBindException(HttpServer2.java:1213)
at org.apache.hadoop.http.HttpServer2.bindForSinglePort(HttpServer2.java:1235)
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:1294)
at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:1149)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.startInfoServer(SecondaryNameNode.java:498)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:701)
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:351)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:319)
at org.apache.hadoop.http.HttpServer2.bindListener(HttpServer2.java:1200)
at org.apache.hadoop.http.HttpServer2.bindForSinglePort(HttpServer2.java:1231)
... 4 more
提示端口占用,使用命令 netstat -tunlp | grep 9868 查看端口占用情况,发现端口并没有被占用。
参考:secondary nameNode 启动失败-CSDN社区
怀疑是阿里云的公网IP不能绑定端口,于是修改 hdfs-site.xml 配置,将 hadoop103 改为内网IP,然后重新启动SecondaryNameNode
hdfs --daemon start secondarynamenode
启动成功。
以上看着是把集群启动成功了,通过公网IP访问NameNode页面,无法正确访问(确认防火墙已经关闭,安全组规则已经配置)。
参考:(11条消息) 使用不同的云服务器搭建Hadoop集群_YongDaiMe的博客-CSDN博客
重新配置3台机器的host,关键是“在哪台实例上,就把该实例的私网IP和其他实例的公网IP写入”,完成之后,在hadoop101上运行 start-dfs.sh,启动成功。
到hadoop103上,运行 jps 命令,发现secondarynamenode也启动成功了。
再通过公网IP访问NameNode页面,访问成功。
新的问题,DataNode应该是3个,但图表中只有1个



