最近、社内に 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. 手順 大まかに以下のステップに分けられます。
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 を実行します。 1.2.2 HadoopとJDK環境でイメージを生成する
Dockerfile が作成されたので、邪魔にならない場所に移動しましょう。 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.tar.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 上記のコマンドは 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 台のマシンを起動し、ネットワークは ネットワークステータスを確認する 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はデフォルトでは存在しません。これを実行するには、 <プロパティ> <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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysql の not equal to null と equal to null の書き方の詳細説明
CSS 位置position 属性は、要素の配置タイプを指定します。位置プロパティには 5 つの値が...
序文このチュートリアルでは最新バージョンをインストールします。 NAS は非常に安定して動作するので...
背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...
Centos マシンで docker のインストールが完了したら、docker info コマンドを...
以前はMySQLをあまり使用していなかったため、MySQLの機能にあまり詳しくありませんでした。この...
この便利なツールでプログラムをより効率的に実行およびコンパイルしますMakefile は自動コンパイ...
あなたがlinuxerだと仮定すると、 windowserだとは想定しません。Windows ユーザ...
目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...
解決すべき問題主にコンポーネント間のクロスレベル通信用なぜディスパッチとブロードキャストを自分で実装...
システム: VMTOOLs ダウンロード:リンク: https://pan.baidu.com/s/...
Docker を起動したら、利用できるオプションを見てみましょう。 公式のものがある場合は、もちろ...
/etc/my.confファイルで、[mysqld]の下に次の行を追加します: skip-grant...
目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....
MySQL 8.0.12 のダウンロードとインストールのチュートリアルを録画し、全員と共有しました。...
この記事では、主に Linux で MYSQL データベースをインストールする方法について説明し、M...