在宿主機如何存取docker中hadoop的hdfs:ip:9000啊, 連接埠映射出來啊
巴扎黑
巴扎黑 2017-04-25 09:01:31
0
1
1109

本人有一個3節點hadoop, 啟動了3個docker容器, 眾所周知, docker容器內服務的端口是可以映射到宿主機的端口的, 我採用-P將容器的所有端口映射到主機端口, 命令如下:

docker run -it -v /Users/yc/hadoop/docker:/test -P -h h1 --name h1 sequenceiq/hadoop-docker /etc/bootstrap.sh -bash

這是第master節點的啟動腳本, 映射了一個宿主機目錄, 映射了所有容器端口到宿主機, 而且設置了容器的hostname
當我查看進程的時候

docker ps

結果如下, 我做了下美化:

b96b897c6532        sequenceiq/hadoop-docker   "/etc/bootstrap.sh -b"   
24 minutes ago      Up 24 minutes       
0.0.0.0:32797->2122/tcp, 
0.0.0.0:32796->8030/tcp, 
0.0.0.0:32795->8031/tcp, 
0.0.0.0:32794->8032/tcp, 
0.0.0.0:32793->8033/tcp, 
0.0.0.0:32792->8040/tcp, 
0.0.0.0:32791->8042/tcp, 
0.0.0.0:32790->8088/tcp, 
0.0.0.0:32789->19888/tcp, 
0.0.0.0:32788->49707/tcp, 
0.0.0.0:32787->50010/tcp, 
0.0.0.0:32786->50020/tcp, 
0.0.0.0:32785->50070/tcp, 
0.0.0.0:32784->50075/tcp, 
0.0.0.0:32783->50090/tcp   
h1

我們常用的50070和8088都映射出來了, 但是9000沒有, 我知道9000這個協議是hdfs, 可能不屬於tcp, 那麼如何在我宿主機訪問啊
我想用IDEA開發hadoop的java程序, 輸入輸出目錄都得是hdfs:ip:9000/目錄這種形式的, 不知道如何存取docker容器的該連接埠啊

巴扎黑
巴扎黑

全部回覆(1)
習慣沉默

缺乏HDFS ipc 連接埠是sequenceiq/hadoop-docker 映像的一個bug sequenceiq/hadoop-docker#48,雖然已經修復(見: https://github.com/sequenceiq...,但是其維護者一直沒有構建新版本的鏡像,從而導致你現在使用依然有問題。

解決方法很簡單,在

即可。 docker run 后面的参数上手动加上 -p 9000:9000

順便說一句,雖然Hadoop 網站有提及

這個docker 鏡像,但是從其Dockerfile 的撰寫情況看,其作者對Docker 理解很膚淺,並沒有遵循Docker官方的Dockerfile 最佳實務準則,鏡像非常臃腫,製作的並不好。如果有能力應該自己遵循官方最佳實踐準則來客製化自己所需的鏡像。 sequenceiq/hadoop-docker 这个 docker 镜像,但是从其 Dockerfile 的撰写情况看,其作者对 Docker 理解很肤浅,并没有遵循Docker官方的Dockerfile

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!