我正在启动hdfs服务器:
docker run -d sequenceiq/hadoop-docker:2.6.0
我正在观察docker进程的运行情况
docker ps
得到以下结果:
6bfa4f2fd3b5 sequenceiq/hadoop-docker:2.6.0 "/etc/bootstrap.sh -d"
31 minutes ago Up 31 minutes 22/tcp, 8030-8033/tcp, 8040/tcp,
8042/tcp, 8088/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp,
50090/tcp kind_hawking
我正试着通过 hdfs
到我的docker容器:
sudo docker run -ti davvdg/hdfs-client hadoop fs -fs hdfs://localhost:50075 -ls /
结果如下:
ls: Call From a48f81b8e1bb/172.17.0.3 to localhost:50075 failed on
connection exception: java.net.ConnectException: Connection refused; For
more details see: http://wiki.apache.org/hadoop/ConnectionRefused
我的问题是:如何让我的hdfs docker客户端运行?
编辑:感谢@shizhz的一些有用的反馈,我正在更新这个问题。
这是我的 Dockerfile
```
FROM sequenceiq/hadoop-docker:2.6.0
CMD ["/etc/bootstrap.sh", "-d"]
Hdfs ports
EXPOSE 50010 50020 50070 50075 50090 8020 9000
Mapred ports
EXPOSE 10020 19888
Yarn ports
EXPOSE 8030 8031 8032 8033 8040 8042 8088
Other ports
EXPOSE 49707 2122
EXPOSE 9000
EXPOSE 2022
以下是我如何塑造形象:
sudo docker build -t my-hdfs .
下面是我运行图像的方式:
sudo docker run -d -p my-hdfs
以下是我检查流程的方式:
sudo docker ps
结果如下:
d9c9855cfaf0 my-hdfs "/etc/bootstrap.sh -d" 2 minutes ago
Up 2 minutes 0.0.0.0:32801->22/tcp, 0.0.0.0:32800->2022/tcp,
0.0.0.0:32799->2122/tcp, 0.0.0.0:32798->8020/tcp, 0.0.0.0:32797->8030/tcp,
0.0.0.0:32796->8031/tcp, 0.0.0.0:32795->8032/tcp, 0.0.0.0:32794->8033/tcp,
0.0.0.0:32793->8040/tcp, 0.0.0.0:32792->8042/tcp, 0.0.0.0:32791->8088/tcp,
0.0.0.0:32790->9000/tcp, 0.0.0.0:32789->10020/tcp, 0.0.0.0:32788->19888/tcp,
0.0.0.0:32787->49707/tcp, 0.0.0.0:32786->50010/tcp, 0.0.0.0:32785->50020/tcp,
0.0.0.0:32784->50070/tcp, 0.0.0.0:32783->50075/tcp, 0.0.0.0:32782->50090/tcp
agitated_curran
以下是如何获取ip地址:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' d9c9855cfaf0
结果如下:
172.17.0.3
下面是我如何运行测试:
sudo docker run --rm sequenceiq/hadoop-docker:2.6.0 /usr/local/hadoop-2.6.0/bin/hadoop fs -fs hdfs://192.168.0.3:9000 -ls /
结果如下:
17/04/08 19:51:54 INFO ipc.Client: Retrying connect to server:
192.168.0.3/192.168.0.3:9000. Already tried 0 time(s); maxRetries=45
ls: Call From fafcd377f4a0/172.17.0.2 to 192.168.0.3:9000 failed on connection
exception: java.net.ConnectException: Connection refused; For more details
see: http://wiki.apache.org/hadoop/ConnectionRefused
我的问题是:如何让我的hdfs docker客户端运行?
2条答案
按热度按时间wlwcrazw1#
对于客户端,您可以仅对hdfs客户端这样的客户端使用瘦docker映像。其中一个很好,我以前用过:https://hub.docker.com/r/ryneyang/hadoop-utils/
jucafojl2#
默认情况下,每个容器将使用
bridge
网络驱动程序有自己的隔离网络环境。这不是一回事,但你可以简单地认为他们是不同的服务器,有自己的私人IP。所以当你启动一个客户端容器并尝试连接地址hdfs://localhost:50075
,它实际上会尝试连接端口50075
显然,它将被拒绝,而不是连接hadoop服务器容器。更多信息请参考他们的官网文档。同一主机上的容器可以通过它们的私有ip相互通信,因此要连接到hadoop服务器容器,首先可以通过以下方法找到它的私有ip:
然后我可以使用客户端(我认为端口应该是9000):
如果您想在另一台主机上运行客户机容器,那么您需要了解多主机网络。