我正在运行两个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的My / 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/
它说连接异常时调用从7ab4ffb30dc0 / 1.2.3.4到7ab4ffb30dc0:8020失败:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
有什么建议吗?
答案 0 :(得分:0)
您确定hadoop实例正在运行hadoop服务,来自您的link,它表明服务器正在响应,但没有可用的服务。检查日志以确保它正在运行(假设hadoop是实例名称):
docker logs hadoop
如果服务实际上正在运行,那么暴露的端口可能不是您期望的端口,这取决于您启动hadoop实例的方式,如果您运行的类似于:
docker run -P --name=hadoop hadoop
这会将公开的端口映射到随机端口,如果实例链接为名称hadoop,则必须使用为您提供端口的环境变量:
HADOOP_PORT_8020_TCP_PORT#format PORT __ PORT
设置了几个环境变量,请参阅Docker User Guide使用这些变量,您可以像这样运行命令:
hadoop fs -ls hdfs://${HADOOP_PORT_8020_TCP_ADDR}:${HADOOP_PORT_8020_TCP_PORT}