在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊
巴扎黑
巴扎黑 2017-04-25 09:01:31
0
1
1100

本人有一个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イメージ sequenceiq/hadoop-docker#48 のバグでしたが、修正されました (https://github.com/sequenceiq を参照) ... ですが、その管理者がイメージの新しいバージョンを構築していないため、使用中にまだ問題が発生していますsequenceiq/hadoop-docker镜像的一个bug sequenceiq/hadoop-docker#48,虽然已经修复(见: https://github.com/sequenceiq...,但是其维护者一直没有构建新版本的镜像,从而导致你现在使用依然有问题。

解决办法很简单,在docker run后面的参数上手动加上-p 9000:9000即可。

顺便说一句,虽然 Hadoop 网站有提及sequenceiq/hadoop-docker这个 docker 镜像,但是从其Dockerfile的撰写情况看,其作者对 Docker 理解很肤浅,并没有遵循Docker官方的Dockerfile

解決策は非常に簡単で、 docker runの後にパラメータに -p 9000:9000を手動で追加するだけです。 ところで、Hadoop Web サイトでは Docker イメージ sequenceiq/hadoop-dockerについて言及していますが、その Dockerfileの記述から判断すると、その作成者は Docker について非常に表面的な理解を持っています。 . であり、Docker の公式の Dockerfileベスト プラクティス ガイドラインに従っていません。イメージは非常に肥大化しており、適切に作成されていません。能力がある場合は、公式のベスト プラクティス ガイドラインに従って、必要なイメージをカスタマイズする必要があります。
いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!