我有一个 Pis 集群,用于试验 Hadoop。主节点设置为 .190,p1 设置为 191 ... p4 设置为 194。所有节点均已启动并正在运行。主节点的 start-dfs.sh、stop-all.sh 等成功启动和停止数据节点。但是,在启动时,数据节点无法重新连接到主节点。数据节点正在尝试使用“hostname/ip_address:9000”尝试重新连接。
hadoop-hduser-datanode-p1.log报告:
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: masternode/192.168.1.190:9000. Already tried 8 time(s);
在我的路由器上,通过 MAC 地址保留的 DNS 将主节点设置为 192.168.1.190。其他节点也一样。
数据节点上的 /etc/hosts 为空。设置它们不会改变行为。
所有 .xml 文件(如 core-site.xml)都使用“hdfs://masternode:port”。它们都没有使用“masternode/ip address:port”,所以我不确定 IP 地址来自哪里。
<property>
<name>fs.default.name</name>
<value>hdfs://masternode:9000/</value>
</property>
worker 文件只是数据节点服务器的名称:
workers" 4L, 12C 1,1 All
p1
p2
p3
p4
你知道将 IP 地址附加到主机名是什么意思吗?
答案1
在 diya 指出 IP 地址仅仅是一种诊断信息后,很明显 9000 上的数据节点和名称节点之间存在某种连接问题。
我可以从数据节点 ssh 进入主节点,但 nc -zv masternode 9000 确认数据节点无法通过 9000 连接到主节点。主节点上的 netstat -lnt 确认 9000 仅绑定到 127.0.0.1。这让我想到了这个答案:https://stackoverflow.com/a/64611530/213017。我检查了 /etc/hosts,确实有一个 127.0.0.1 masternode 条目。删除该条目后,数据节点便可以连接。