まず、3つのクライアント(hadoop102、hadoop103、hadoop104)を準備し、ファイアウォールをオフにして、静的IPとIPアドレスマッピングに変更します。 [[278009]] クラスターの構成クラスター配布スクリプトの作成 - リモート同期スクリプトxsyncを作成し、現在のユーザーの新しいbinディレクトリに配置し、このスクリプトが任意のディレクトリで実行できるようにPATHで構成します。
- スクリプトの実装
- [kocdaniel@hadoop102 ~]$ mkdir bin
- [kocdaniel@hadoop102 ~]$ cd bin/
- [kocdaniel@hadoop102 bin]$ vim xsync
ファイルに次のスクリプトコードを記述します - #!/bin/bash
- #1 入力パラメータの数を取得します。パラメータがない場合は直接終了する
- pcount=$#
- pcount==0の場合それから
- 引数なしをエコーします。
- 出口;
- フィ
-
- #2 ファイル名を取得する
- p1=$1
- fname=`ベース名 $p1`
- エコーfname=$fname
-
- #3 親ディレクトリを絶対パスで取得する –Pは実際の物理アドレスを指し、ソフトリンクを防ぐ
- pdir=`cd -P $(dirname $p1); pwd`
- エコーpdir=$pdir
-
- #4 現在のユーザー名を取得する
- ユーザー= `whoami`
-
- #5 ループ
- ( (ホスト=103; ホスト<105; ホスト++));する
- エコー
- rsync -rvl $pdir/$fname $ユーザー@hadoop$host:$pdir
- 終わり
- スクリプトxsyncに実行権限を与えてスクリプトを呼び出し、そのスクリプトをノード103と104にコピーします。
- [kocdaniel@hadoop102 bin]$ chmod 777 xsync
- [kocdaniel@hadoop102 bin]$ xsync /home/atguigu/bin
クラスタ構成 1. クラスターの展開計画 コンピュータの構成が制限されているため、使用できる仮想マシンは 3 つだけです。クラスターは作業環境の必要に応じて計画されます。 2. クラスターを構成する hadoopのインストールディレクトリ/etc/hadoop/に切り替えます。 - [kocdaniel@hadoop102 hadoop]$ vim core-site.xml
- # ファイルに次の内容を記述します
- <!
- <プロパティ>
- <名前>fs.defaultFS</名前>
- <値>hdfs://hadoop102:9000</値>
- </プロパティ>
-
- <!
- <プロパティ>
- <名前>hadoop.tmp.dir</名前>
- <値>/opt/module/hadoop-2.7.2/data/tmp</値>
- </プロパティ>
hadoop-env.sh を設定する - [kocdaniel@hadoop102 hadoop]$ vim hadoop-env.sh
- JAVA_HOME=/opt/module/jdk1.8.0_144 をエクスポートします。
JAVA_HOME=/opt/module/jdk1.8.0_144 をエクスポートします。 注: /etc/profile ファイルで JAVA_HOME はすでに設定されていますが、なぜここで JAVA_HOME を設定する必要があるのでしょうか? 回答: Hadoop はデーモン プロセスとして実行されるため (デーモン プロセスとは、バックグラウンドで実行され、どの端末からも制御されないプロセスです。 - Baidu 百科事典より抜粋)、バックグラウンドで実行され、端末制御を受け入れないため、設定した環境変数を読み取ることができません。そのため、ここでは別途設定する必要があります。 - [kocdaniel@hadoop102 hadoop]$ vim hdfs-site.xml
- # 次の設定を記述します
- <!
- <プロパティ>
- <名前>dfs.replication</名前>
- <値>3</値>
- </プロパティ>
-
- <!
- <プロパティ>
- <名前>dfs.namenode.secondary.http-address</名前>
- <値>hadoop104:50090</値>
- </プロパティ>
yarn-env.sh を設定する - [kocdaniel@hadoop102 hadoop]$ vim yarn-env.sh
- JAVA_HOME=/opt/module/jdk1.8.0_144 をエクスポートします。
yarn-site.xml を設定する - [kocdaniel@hadoop102 hadoop]$ vi yarn-site.xml
- # 次の設定を追加します
- <!
- <プロパティ>
- <名前>yarn.nodemanager.aux-services</名前>
- <値>mapreduce_shuffle</値>
- </プロパティ>
-
- <!
- <プロパティ>
- <名前>yarn.resourcemanager.hostname</名前>
- <値>hadoop103</値>
- </プロパティ>
mapred-env.sh を設定する - [kocdaniel@hadoop102 hadoop]$ vim mapred-env.sh
- JAVA_HOME=/opt/module/jdk1.8.0_144 をエクスポートします。
mapred-site.xml を構成する - # 最初の設定の場合は、mapred-site.xml.template を mapred-site.xml に名前変更する必要があります。
- [kocdaniel@hadoop102 hadoop]$ cp mapred-site.xml.テンプレート mapred-site.xml
- [kocdaniel@hadoop102 hadoop]$ vim mapred-site.xml
- # ファイルに次の設定を追加します
- <!
- <プロパティ>
- <名前>mapreduce.framework。名前</名前>
- <value>糸</value>
- </プロパティ>
3. クラスタ配布スクリプトを使用して、設定されたファイルをhadoop103ノードとhadoop104ノードに同期します。 - [kocdaniel@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/
- エラーを避けるために、同期が完了した後に同期結果を確認することをお勧めします。
シングルポイントスタート1. 初めて起動する場合は、ネームノードをフォーマットする必要があります。それ以外の場合は、この手順をスキップしてください。 - [kocdaniel@hadoop102 hadoop-2.7.2]$ hadoop namenode -format
- 最初の起動時のみフォーマットが必要です。その後は頻繁にフォーマットしないでください。そうしないと、ネームノードとデータノードのクラスター ID が不一致になり、データノードの起動に失敗します。
- 正しい書式設定の姿勢:
- 最初のフォーマットが実行されると、Hadoopインストールディレクトリにデータフォルダが生成され、ネームノード情報が生成されます。
- namenode と datanode を起動すると、同じディレクトリに logs という名前のログ フォルダーが生成されます。
- したがって、フォーマットする前に、これら2つのフォルダを削除し、フォーマットしてから、最後にnamenodeとdatanodeを起動する必要があります。
2. hadoop102でnamenodeを起動する - [kocdaniel@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh ネームノードを起動します
- [kocdaniel@hadoop102 hadoop-2.7.2]$ jps
- 3461 ネームノード
3. hadoop102、hadoop103、hadoop104でそれぞれDataNodeを起動します。 - [kocdaniel@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh データノードを起動します
- [kocdaniel@hadoop102 hadoop-2.7.2]$ jps
- 3461 ネームノード
- 3608 日本
- 3561 データノード
- [kocdaniel@hadoop103 hadoop-2.7.2]$ hadoop-daemon.sh データノードを起動します
- [kocdaniel@hadoop103 hadoop-2.7.2]$ jps
- 3190 データノード
- 3279 日本
- [kocdaniel@hadoop104 hadoop-2.7.2]$ hadoop-daemon.sh データノードを起動します
- [kocdaniel@hadoop104 hadoop-2.7.2]$ jps
- 3237 日本
- 3163 データノード
4. 結果を表示するにはhadoop102:50070にアクセスしてください - しかし、上記の単一ポイント起動には問題があります。
毎回各ノードを 1 つずつ起動します。ノード数が 1,000 に増えたらどうなるでしょうか? SSHパスワードフリーログインを設定する1. sshを設定する 別のノードのIPにsshして別のマシンに切り替えるが、パスワードを入力する必要がある 2. シークレットフリーのSSH設定 パスワードフリーログインの原則 - ネームノードが構成されているホストhadoop102で秘密鍵と公開鍵を生成します。
ディレクトリを /home/username/.ssh/ に変更します。 - [kocdaniel@hadoop102 .ssh]$ ssh-keygen -t rsa
- - 次に(Enterキーを3回)押すと、id_rsa(秘密鍵)とid_rsa.pub(公開鍵)の2つのファイルが生成されます。
- - パスワードなしでログインしたいターゲットマシンに公開鍵をコピーします
-
- ```シェル
- [kocdaniel@hadoop102 .ssh]$ ssh-コピー-id hadoop103
- [kocdaniel@hadoop102 .ssh]$ ssh-コピー-id hadoop104
- # 注意: sshアクセスにはパスワードも必要なので、公開鍵を102にコピーする必要があります。
- [kocdaniel@hadoop102 .ssh]$ ssh-コピー-id hadoop102
-
- 「」
- 同様に、リソースマネージャが設定されているホスト hadoop103 でも同じ操作を実行すると、クラスターを起動できます。
クラスタ1. スレーブを構成する - ディレクトリを切り替えます: hadoop インストール ディレクトリ /etc/hadoop/
- ディレクトリ内のスレーブファイルに次の内容を追加します。
- [kocdaniel@hadoop102 hadoop]$ vim スレーブ
- # ファイル末尾にスペースや空行があってはならないことに注意してください
- 翻訳:
- 翻訳:
- 翻訳:
- [kocdaniel@hadoop102 hadoop]$ xsyncスレーブ
2. クラスターを起動する - 同様に、初めて起動する場合はフォーマットする必要があります
- HDFSを起動する
- [kocdaniel@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
-
- # 起動結果を確認し、クラスタープラン(構成ファイル内)と一致していることを確認します。
- [atguigu@hadoop102 hadoop-2.7.2]$ jps
- 4166 ネームノード
- 4482 日本人
- 4263 データノード
-
- [atguigu@hadoop103 hadoop-2.7.2]$ jps
- 3218 データノード
- 3288 日本
-
- [atguigu@hadoop104 hadoop-2.7.2]$ jps
- 3221 データノード
- 3283 セカンダリネームノード
- 3364 日本
- # 注意: NameNode と ResourceManager が同じマシン上にない場合、YARN は NameNode 上で起動できません。 YARN は、ResourceManager が配置されているマシンで起動する必要があります。
- [kocdaniel@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
3. ウェブ上で関連情報を閲覧する |