0

それぞれにdockerがインストールされた3つのホストがあります。3 つのコンテナ間で分散ファイル システム、HDFS を使用したいと考えています。というわけで、Hadoop クラスターを作成する必要があります。この docker ファイルを使用して Hadoop イメージを作成します。

FROM ubuntu_mesos
ENV HADOOP_HOME /opt/hadoop
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
RUN apt-get update && apt-get install -y ssh rsync vim openjdk-8-jdk
# download and extract hadoop, set JAVA_HOME in hadoop-env.sh, update 
path
RUN wget https://archive.apache.org/dist/hadoop/core/hadoop- 
3.1.0/hadoop-3.1.0.tar.gz && tar -xzf hadoop-3.1.0.tar.gz && \
mv hadoop-3.1.0 $HADOOP_HOME && \
echo "export JAVA_HOME=$JAVA_HOME" >> $HADOOP_HOME/etc/hadoop/
hadoop-env.sh && \
echo "PATH=$PATH:$HADOOP_HOME/bin" >> ~/.bashrc
# create ssh keys
RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && cat ~/.ssh/id_rsa.pub 
>> ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
ADD core-site.xml $HADOOP_HOME/etc/hadoop/
ADD hdfs-site.xml $HADOOP_HOME/etc/hadoop/
ADD mapred-site.xml $HADOOP_HOME/etc/hadoop/
ADD mapred-site.xml $HADOOP_HOME/etc/hadoop/
ADD ssh_config /root/.ssh/config
COPY start-hadoop.sh start-hadoop.sh
EXPOSE 22 9000 8088 50070 50075 50030 50060
RUN echo export HDFS_NAMENODE_USER="root" >> 
$HADOOP_HOME/etc/hadoop/hadoop-env.sh 
RUN echo export HDFS_DATANODE_USER="root" >> 
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
RUN echo export HDFS_SECONDARYNAMENODE_USER="root" >> 
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
RUN echo export YARN_RESOURCEMANAGER_USER="root" >> 
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
RUN echo export YARN_NODEMANAGER_USER="root" >> 
$HADOOP_HOME/etc/hadoop/hadoop-env.sh

docker ファイルをビルドした後。私はあなたのホストにdocker swarmを立ち上げました。weave netをインストールして、次のようなコンテナ ネットワークを作成しました。

docker plugin install weaveworks/net-plugin:latest_release
docker network create --driver=weaveworks/net-plugin:latest_release 
--attachable mycontainernetwork

各ホストで次のコマンドを実行して、3 つのホストを接続しました。

sudo weave launch <IP address of first host> <IP address of second 
host>

次に、次のように、各ホストでコンテナー ネットワークを使用して Hadoop イメージを実行しました。

 sudo docker run -it --net mycontainernetwork my-hadoop

各コンテナで次のコマンドを実行して、各コンテナが他のコンテナを認識できることを確認しました。

 ping -c 1 -q ContainerID

しかし、このコマンドを実行したいとき:

 ssh e121a0ef81ef

次のエラーが表示されます。

ssh: ホスト e121a0ef81ef に接続します ポート 22: 接続が拒否されました

「e121a0ef81ef」は私のコンテナ ID です。

私は混乱していて、問題を解決する方法がわかりません。助けてくれませんか?

どんな助けでも大歓迎です。

4

1 に答える 1