2019 年搭建 Hadoop 环境后,hadoop fs -put 上传成功,但管理页面下载文件却跳到 localhost:50075。手工把 localhost 换成虚拟机 IP,又能够下载。
这说明上传路径可用,却不能证明服务端提供给浏览器的下载地址正确。浏览器里的 localhost 指向浏览器所在机器,不会自动变成 Hadoop 虚拟机。
从最终地址反查节点身份
先保存浏览器收到的跳转链、Location 或最终 URL,确认下载被交给哪台节点。再分别检查虚拟机、集群节点与访问者电脑的地址解析。
Linux 节点上的只读检查可以从下面开始:
hostname
getent hosts hadooptest
getent ahosts hadooptest
hadooptest 要换成实际节点名。不能只看 /etc/hosts 一行,因为 DNS、解析顺序和不同地址族也可能参与。
当时发现了重复映射
该虚拟机既有节点地址与主机名映射,又把同一节点名关联到了回环地址。去掉节点名与回环地址的错误关联后,当时下载恢复。
这里应修正的是集群节点身份与可达地址不一致,不是规定“回环地址只能有某几个名字”。127.0.0.1 和 ::1 的 localhost 映射可能有系统用途,不能整行批量删除。
Hadoop 的监听、节点上报和客户端采用主机名等配置,也会影响可达性,应结合实际版本和多网卡拓扑检查。Hadoop 2.10.2 多网卡说明
running job 卡住是另一条线索
另一份记录里,第一次 MapReduce 成功,再次提交停在 running job,修改 IPv6 hosts 条目后恢复。它没有足够日志说明是哪一步受影响,不能由此得出“Hadoop 不支持 IPv6”。
对此应保存作业 ID,查看是否等待资源、启动容器失败或任务实际阻塞,再对照各节点解析和服务日志。与下载问题主题相近,也不代表两次故障具有相同根因。
验证要覆盖真正访问者
修改 hosts 或节点配置前备份原值并准备恢复。改完分别核对节点间访问、浏览器实际下载,以及相关作业状态;不能只在服务端本机测试 localhost。
端口和配置会随版本、部署方式改变,不要因为历史地址出现 50075,就把它当作所有 Hadoop 环境的固定下载端口。