Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoop クラスターをすばやくデプロイします。

0. 前に書く

インターネット上にはすでに多くのチュートリアルがありますが、そこには多くの落とし穴があります。ここでは私自身のインストールプロセスを記録します。

目的: Docker を使用して、マスター 1 つとスレーブ 2 つを含む Hadoop 2.7.7 のクラスターを構築します。

準備する:

まず、8G 以上のメモリを搭載した Centos7 マシンが必要です。私は Alibaba Cloud ホストを使用します。

次に、jdk および hadoop パッケージをサーバーにアップロードします。

hadoop2.7.7をインストールしました。パッケージは誰でも利用できる状態です。リンク: https://pan.baidu.com/s/15n_W-1rqOd2cUzhfvbkH4g 抽出コード: vmzw。

1. 手順

大まかに以下のステップに分けられます。

  • Dockerをインストールする
  • 基本的な環境の準備
  • ネットワークを設定し、Dockerコンテナを起動する
  • ホストとSSHパスワードフリーログインを設定する
  • Hadoopのインストールと設定

1.1 Dockerをインストールする

Docker をインストールするには、以下の手順に従ってください。 Docker 環境がある場合は、この手順をスキップできます。

yumアップデート

yum インストール -y yum-utils デバイスマッパー永続データ lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum インストール -y docker-ce
 
systemctl ドッカーを起動する

ドッカー -v

1.2 基本的な環境の準備

1.2.1 基本的な Centos7 イメージを作成し、公式 Centos7 イメージを取得する

docker プル CentOS

DockfileをビルドしてSSH機能付きのCentOSイメージを生成する

Dockerfileを作成する

vi Dockerファイル

Dockerfileに以下の内容を記述します

Centosより
メンテナー mwf

yum install -y openssh-server sudoを実行します。
sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config を実行します。
yum install -y openssh-clientsを実行します。

実行 echo "root:qwe123" | chpasswd
実行 echo "root ALL=(ALL) ALL" >> /etc/sudoers
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key を実行します。
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key を実行します。

実行 mkdir /var/run/sshd
エクスポーズ22
コマンド ["/usr/sbin/sshd", "-D"]

上記の内容はおそらく次のことを意味しています: Centosイメージに基づいて、パスワードをwqe123に設定し、sshサービスをインストールして起動します

Dockerfile の構築

centos7-ssh を実行します。

centos7-sshという名前のミラーが生成され、 docker imagesを通じて表示できます。

1.2.2 HadoopとJDK環境でイメージを生成する

  • 準備したパッケージを現在のディレクトリに配置します。 hadoop-2.7.7.tar.gzおよびjdk-8u202-linux-x64.tar.gz
  • Dockfile をビルドして、Hadoop と JDK 環境を備えた CentOS イメージを生成します。

Dockerfile が作成されたので、邪魔にならない場所に移動しましょう。 mv Dockerfile Dockerfile.bak

Dockerfileを作成する

vi Dockerファイル

次のように書いてください。

Centos7-sshから
jdk-8u202-linux-x64.tar.gz /usr/local/を追加します。
実行 mv /usr/local/jdk1.8.0_202 /usr/local/jdk1.8
環境変数 JAVA_HOME /usr/local/jdk1.8
環境変数 PATH $JAVA_HOME/bin:$PATH

hadoop-2.7.7.ta​​r.gz /usr/localを追加します
実行 mv /usr/local/hadoop-2.7.7 /usr/local/hadoop
環境変数 HADOOP_HOME /usr/local/hadoop
環境変数 PATH $HADOOP_HOME/bin:$PATH

yum install -y which sudoを実行します

上記の内容は、大まかに言うと、上記で生成した centos7-ssh をベースに、hadoop および jdk パッケージを入れて、環境変数を設定することを意味します。

Dockerfile の構築

ビルドは -t="hadoop" です。

hadoopという名前のミラーが生成されます

1.3 ネットワークを設定し、Dockerコンテナを起動する

クラスターはネットワーク経由で接続する必要があるため、最初にネットワークを構成する必要があります。

ネットワークの作成

docker ネットワーク作成 --driver ブリッジ hadoop-br

上記のコマンドはhadoop-br

Dockerを起動するときにネットワークを指定する

docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop-br --name hadoop2 hadoop
docker run -itd --network hadoop-br --name hadoop3 hadoop

上記のコマンドは 3 台のマシンを起動し、ネットワークはhadoop-brとして指定され、hadoop1 のポート マッピングが有効になります。

ネットワークステータスを確認する

docker ネットワーク検査 hadoop-br

上記のコマンドを実行して、対応するネットワーク情報を確認します。

[
  {
    「名前」: 「hadoop-br」、
    「ID」: 「88b7839f412a140462b87a353769e8091e92b5451c47b5c6e7b44a1879bc7c9a」、
    「コンテナ」: {
"86e52eb15351114d45fdad4462cc2050c05202554849bedb8702822945268631": {
        「名前」: 「hadoop1」、
        "IPv4アドレス": "172.18.0.2/16",
        "IPv6アドレス": ""
      },
      "9baa1ff183f557f180da2b7af8366759a0d70834f43d6b60fba2e64f340e0558": {
        「名前」: 「hadoop2」、
        "IPv4アドレス": "172.18.0.3/16",
        "IPv6アドレス": ""
      }, "e18a3166e965a81d28b4fe5168d1f0c3df1cb9f7e0cbe0673864779b224c8a7f": {
        「名前」: 「hadoop3」、
        "IPv4アドレス": "172.18.0.4/16",
        "IPv6アドレス": ""
      }
    },
  }
]

3 台のマシンの IP アドレスを調べることができます。

172.18.0.2 のハドップ1 
172.18.0.3 のHadoop2 
172.18.0.4 のHadoop3

Docker コンテナにログインすると、相互に ping を実行できます。

docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash

1.4 ホストとSSHパスワードフリーログインを設定する

1.4.1 ホストの設定

各マシンのホストを個別に変更する

vi /etc/hosts

以下の内容を記入します (注: Docker によって割り当てられる IP は人によって異なる場合があるため、独自の IP を入力してください):

172.18.0.2 のハドップ1 
172.18.0.3 のHadoop2 
172.18.0.4 のハドップ3

1.4.2 SSHパスワードフリーログイン

上記の画像では ssh サービスがインストールされているため、各マシンで次のコマンドを直接実行します。

sshキー生成
Enterキーを押します ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1
パスワードを入力してください。私のパスワードはqwe123です。
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2
パスワードを入力してください。私のパスワードはqwe123です。
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3
パスワードを入力してください。私のパスワードはqwe123です。

1.4.3 構成が成功したかどうかをテストする

pinghadoop1 
pinghadoop2
pinghadoop3
SSH の Hadoop1
ssh hadoop2
SSH Hadoop3 の

1.5 Hadoopのインストールと設定

1.5.1 hadoop1での操作

hadoop1の登場

docker exec -it hadoop1 bash

後ほど設定で使用するフォルダをいくつか作成します

mkdir /home/hadoop
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data

Hadoop設定ディレクトリに切り替える

$HADOOP_HOME/etc/hadoop/ をコピーします。

core-site.xmlを編集する

<プロパティ>
    <name>fs.defaultFS</name>
    <値>hdfs://hadoop1:9000</値>
  </プロパティ>
  <プロパティ>
    <name>hadoop.tmp.dir</name>
    <値>ファイル:/home/hadoop/tmp</値>
  </プロパティ>
  <プロパティ>
    <name>io.file.buffer.size</name>
    <値>131702</値>
  </プロパティ>

hdfs-site.xmlを編集する

 <プロパティ>
    <name>dfs.namenode.name.dir</name>
    <値>ファイル:/home/hadoop/hdfs_name</値>
  </プロパティ>
  <プロパティ>
    <name>dfs.datanode.data.dir</name>
    <値>ファイル:/home/hadoop/hdfs_data</値>
  </プロパティ>
  <プロパティ>
    <name>dfs.replication</name>
    <値>2</値>
  </プロパティ>
  <プロパティ>
    <name>dfs.namenode.secondary.http-address</name>
    <値>hadoop1:9001</値>
  </プロパティ>
  <プロパティ>
    <name>dfs.webhdfs.enabled</name>
    <値>真</値>
  </プロパティ>

mapred-site.xmlを編集する

mapred-site.xmlはデフォルトでは存在しません。これを実行するには、 cp mapred-site.xml.template mapred-site.xmlを実行します。

 <プロパティ>
    <name>mapreduce.framework.name</name>
    <value>糸</value>
  </プロパティ>
  <プロパティ>
    <name>mapreduce.jobhistory.address</name>
    <値>hadoop1:10020</値>
  </プロパティ>
  <プロパティ>
    <name>mapreduce.jobhistory.webapp.address</name>
    <値>hadoop1:19888</値>
  </プロパティ>

yarn-site.xmlを編集する

 <プロパティ>
    <name>yarn.nodemanager.aux-services</name>
    <値>mapreduce_shuffle</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <値>org.apache.hadoop.mapred.ShuffleHandler</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.resourcemanager.address</name>
    <値>hadoop1:8032</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.resourcemanager.scheduler.address</name>
    <値>hadoop1:8030</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <値>hadoop1:8031</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.resourcemanager.admin.address</name>
    <値>hadoop1:8033</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.resourcemanager.webapp.address</name>
    <値>hadoop1:8088</値>
  </プロパティ>

スレーブを編集する

ここではhadoop1をマスターノードとして使用し、hadoop2と3をスレーブノードとして使用します。

ハドゥープ2
ハドゥープ3

ファイルをhadoop2とhadoop3にコピーします

以下のコマンドを順番に実行します。

scp -r $HADOOP_HOME/hadoop2:/usr/local/
scp -r $HADOOP_HOME/hadoop3:/usr/local/

scp -r /home/hadoop hadoop2:/
scp -r /home/hadoop hadoop3:/

1.5.2 各マシンでの操作

各マシンに個別に接続する

docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash

hadoop sbinディレクトリの環境変数を設定する

以前イメージを作成した際に hadoop bin ディレクトリが設定されましたが、sbin ディレクトリは設定されていなかったため、別途設定する必要があります。各マシンに構成を割り当てます。

vi ~/.bashrc

次のコンテンツを追加します。

PATH=$PATH:$HADOOP_HOME/sbin をエクスポートします

埋め込む:

ソース ~/.bashrc

1.5.3 Hadoopを起動する

hadoop1 で次のコマンドを実行します。

HDFのフォーマット

hdfs ネームノード -フォーマット

ワンクリックスタート

すべて開始.sh

間違いを犯さなければ、祝うことができます。間違えたら、さあ。

1.6 hadoopjpsを使用したテスト

#ハドプ1
1748年
490 ネームノード
846 リソースマネージャー
686 セカンダリネームノード

#ハドップ2
400 データノード
721 日本
509 ノードマネージャー

#ハドプ3
425 ノードマネージャー
316 データノード
591 日本

ファイルをアップロードする

hdfs dfs -mkdir /mwf

エコー hello > a.txt
hdfs dfs -put a.txt /mwf

hdfs dfs -ls /mwf

1 件のアイテムが見つかりました
drwxr-xr-x - ルート スーパーグループ 0 2020-09-04 11:14 /mwf

クラウドサーバーなのでポートの設定はしたくないので、UIインターフェースは見ません。

2. 最後に

上記はインストール成功後にまとめた手順です。問題はないはずですが、抜けがあるかもしれません。

3. 参考文献

https://cloud.tencent.com/developer/article/1084166

https://cloud.tencent.com/developer/article/1084157?from=10680

https://blog.csdn.net/ifenggege/article/details/108396249

Docker を使用して Hadoop クラスターをデプロイする方法に関する詳細なチュートリアルに関するこの記事はこれで終わりです。Docker を使用して Hadoop クラスターをデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Ubuntu DockerでHadoopクラスタ環境を構築する方法
  • Docker を使用した Hadoop および HBase クラスターの構築の詳細な説明
  • Dockerを使用してHadoopクラスタ環境をゼロから素早く構築する方法を詳しく説明します
  • Docker を使用して Hadoop 分散クラスターを構築する方法の詳細な説明

<<:  mysql の not equal to null と equal to null の書き方の詳細説明

>>:  スライド階段効果を実現するjQuery

推薦する

CSS 位置固定左と右の二重配置実装コード

CSS 位置position 属性は、要素の配置タイプを指定します。位置プロパティには 5 つの値が...

Windows Server 2019 で NAS を構成する方法

序文このチュートリアルでは最新バージョンをインストールします。 NAS は非常に安定して動作するので...

MySQLの大規模テーブル最適化ソリューションについての簡単な説明

背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...

docker のインストールが完了し、bridge-nf-call-iptables が無効であると報告される問題を解決します

Centos マシンで docker のインストールが完了したら、docker info コマンドを...

MySQL で誕生日から年齢を計算する複数の方法

以前はMySQLをあまり使用していなかったため、MySQLの機能にあまり詳しくありませんでした。この...

Linux の Makefile とは何ですか? どのように機能しますか?

この便利なツールでプログラムをより効率的に実行およびコンパイルしますMakefile は自動コンパイ...

画面なしで無線ネットワークに接続しているときに Raspberry Pi の IP アドレスを見つける方法

あなたがlinuxerだと仮定すると、 windowserだとは想定しません。Windows ユーザ...

JS でオブジェクト プロパティを簡単にトラバースするいくつかの方法

目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...

Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)

解決すべき問題主にコンポーネント間のクロスレベル通信用なぜディスパッチとブロードキャストを自分で実装...

Macシステムをインストールした後にVMWareがフルスクリーンで表示できない問題を解決する

システム: VMTOOLs ダウンロード:リンク: https://pan.baidu.com/s/...

Docker で Zookeeper をインストールする (スタンドアロンおよびクラスター)

Docker を起動したら、利用できるオプションを見てみましょう。 公式のものがある場合は、もちろ...

Mysql5.7.14 Linux版のパスワードを忘れた場合の完璧な解決策

/etc/my.confファイルで、[mysqld]の下に次の行を追加します: skip-grant...

JQuery データグリッドクエリの詳細な説明

目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....

MySQL 8.0.12 のインストールと設定のグラフィックチュートリアル

MySQL 8.0.12 のダウンロードとインストールのチュートリアルを録画し、全員と共有しました。...

LinuxにMySQLデータベース5.6のソースコードをインストールし、ログインユーザーのパスワードを変更する

この記事では、主に Linux で MYSQL データベースをインストールする方法について説明し、M...