我正在运行两个 docker 容器,一个用于 hadoop 基本服务,另一个用于水槽。服务正在成功运行。我链接了两个容器 env 变量由 docker 自动设置成功。
1.2.3.4 7ab4ffb30dc0
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
这是我的 hadoop 的/etc/hosts 文件。当我运行时
hadoop fs -ls /
hadoop fs -ls hdfs://127.0.0.1:8020/
工作正常。但如果我跑
hostname
它返回 7ab4ffb30dc0
所以我尝试了
hadoop fs -ls hdfs://1.2.3.4:8020/
它说 Call From 7ab4ffb30dc0/1.2.3.4 to 7ab4ffb30dc0:8020 failed on connection exception: java.net.ConnectException: Connection denied;更多详情见:http://wiki.apache.org/hadoop/ConnectionRefused
有什么建议么?
最佳答案
您确定 hadoop 实例正在运行 hadoop 服务吗,来自您的 link ,它表明服务器正在响应,但没有可用的服务。检查日志以确保它正在运行(假设 hadoop 是实例名称):docker logs hadoop
如果服务实际上正在运行,那么暴露的端口可能不是您期望的端口,这取决于您如何启动 hadoop 实例,如果您运行类似于:docker run -P --name=hadoop hadoop
这会将暴露的端口映射到随机端口,如果实例链接为名称 hadoop,您必须使用为您提供端口的环境变量:
HADOOP_PORT_8020_TCP_PORT # 格式 PORT__PORT
设置了几个环境变量,见Docker User Guide使用这些变量,您可以像这样运行命令:hadoop fs -ls hdfs://${HADOOP_PORT_8020_TCP_ADDR}:${HADOOP_PORT_8020_TCP_PORT}
关于hadoop - 主机名解析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315859/