Hadoopの完全分散環境構成

1仮想マシンのクローンを作成します

複製された仮想マシンがシャットダウンされます
ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
変更するhostname

vi /etc/sysconfig/network

ここに画像の説明を挿入します
IP構成ファイルを表示する

ip addr

ここに画像の説明を挿入します
IPファイルのIPアドレスを変更するには、IPの最後の桁を任意の数字に変更するだけです。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

ここに画像の説明を挿入します

vi /etc/hosts

ここに画像の説明を挿入します
:複製された仮想マシンと複製された仮想マシンのetc/hosts両方を追加する必要があります

仮想マシンを再起動します。
ここに画像の説明を挿入します
この時点で、host2(ip:192.168.159.158)仮想マシンのクローンが作成されます。同様に、host3(ip:192.168.159.157)仮想マシンのクローンを作成します

2サーバー機能の計画

各サーバーの機能を決定する

host1 host2 host3
NameNode ResourceManage
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer SecondaryNameNode

3最初のマシンに新しいHadoopをインストールします

3.1準備

以前のhost1マシンへの疑似分散Hadoopのインストールと区別するためにhost1のすべてのHadoopサービスを停止します、次に、/opt/modules/app別のHadoopを新しいディレクトリにインストールします。
最初にHadoopを解凍して構成し、次にそれを他の2台のマシンに配布することで、クラスターをインストールします。
ここに画像の説明を挿入します

3.2Hadoopディレクトリを解凍します。

tar -zxf /opt/hadoop/hadoop-2.10.1.tar.gz -C /opt/modules/app/

3.3 jdkを構成し、hadoop-env.sh、mapred-env.sh、yarn-env.shを変更します

ファイルを開いてhadoop-env.shmapred-env.shyarn-env.sh、修正JAVA_HOME図のパスを。JAVA_HOME=/opt/modules/jdk1.8.0_171

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/hadoop-env.sh

ここに画像の説明を挿入します

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/mapred-env.sh

ここに画像の説明を挿入します

[hadoop@host1 ~]$ vi /opt/modules/app/hadoop-2.10.1/etc/hadoop/yarn-env.sh

ここに画像の説明を挿入します

3.4 配置core-site.xml

[hadoop@host1 ~]$ cd /opt/modules/app/hadoop-2.10.1
[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/core-site.xml

<configuration>と</ configuration>に次のコンテンツを追加します

 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://host1.chybinmy.com:8020</value>
 </property>
 <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/modules/app/hadoop-2.10.1/data/tmp</value>
 </property>

説明:

  • fs.defaultFSNameNodeのアドレスです。
  • hadoop.tmp.dirこれは、hadoop一時ディレクトリのアドレスです。デフォルトでは、NameNodeとDataNodeのデータファイルは、このディレクトリの対応するサブディレクトリに保存されます。

3.5hdfs-site.xmlを構成します

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/hdfs-site.xml

<configuration>と</ configuration>に次のコンテンツを追加します

 <property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>host3.chybinmy.com:50090</value>
 </property>
 <property>
     <name>dfs.namenode.name.dir</name>
     <value>file:/opt/modules/app/hadoop-2.10.1/data/tmp/dfs/name</value>
</property>
<property>
     <name>dfs.datanode.data.dir</name>
     <value>file:/opt/modules/app/hadoop-2.10.1/data/tmp/dfs/data</value>
</property>

説明:

  • dfs.namenode.secondary.http-address計画ではサーバーとしてsecondaryNameNode計画するため、指定されたhttpアクセスアドレスとポート番号です。したがって、ここでは次のように設定されています。host3SecondaryNameNode
    host3.chybinmy.com:50090

3.6スレーブを構成する

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/slaves

追加
host1.chybinmy.com
host2.chybinmy.com
にhost3.chybinmy.comをファイル

スレーブファイルは、HDFSどのDataNodeノードがオンになっているかを指定します。

3.7 配置yarn-site.xml

[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/yarn-site.xml

<configuration>と</ configuration>に次のコンテンツを追加します

   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>host2.chybinmy.com</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>

説明:

  • 計画によればyarn.resourcemanager.hostname、指定されたresourcemanagerサーバーがそれを指しますhost2.chybinmy.com
  • yarn.log-aggregation-enableログ集計機能を有効にするかどうかを設定します。
  • yarn.log-aggregation.retain-seconds集約されたログがHDFSに保持される期間を構成することです。

3.8 配置mapred-site.xml

ファイルのmapred-site.xml.templateコピーからmapred-site.xml

[hadoop@host1 hadoop-2.10.1]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[hadoop@host1 hadoop-2.10.1]$ vi etc/hadoop/mapred-site.xml

<configuration>と</ configuration>に次のコンテンツを追加します

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>192.168.159.159:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>192.168.159.159:19888</value>
    </property>

説明:

  • mapreduce.framework.namemapreduce実行するタスクを設定しますyarn
  • mapreduce.jobhistory.addressセットのmapreduce履歴サーバがHOST1のマシンにインストールされています。
  • mapreduce.jobhistory.webapp.address履歴サーバーのWebページアドレスとポート番号を設定します。

4パスワードなしでSSHログインを設定する

Hadoopクラスター内の各マシンはSSHを介して相互にアクセスします。アクセスごとにパスワードを入力するのは非現実的であるため、パスワードなしでログインするように各マシン間のSSHを構成する必要があります。

4.1公開鍵を生成する

最初にユーザーをrootに変換します

su root

ここに画像の説明を挿入します

vi /etc/ssh/sshd_config

次の3つの文を見つけてコメントを削除しましたがRSAAuthentication yes見つからなかったので直接追加しました。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile        .ssh/authorized_keys

ここに画像の説明を挿入します
サービスを再起動し、hadoopユーザーに戻り、公開鍵と秘密鍵を生成します

service sshd restart
su hadoop
ssh-keygen -t dsa

ここに画像の説明を挿入します
ウィル/home/hadoop/次世代.sshファイル(ファイルは隠しファイルである、あなたが必要とll -a見て)、で.ssh次回公開鍵と秘密鍵の代わりに、二つの文書を参照するには
公開鍵をコピーしauthorized_keysたファイルを、および変更authorized_keys操作する権限ファイルには、次にsshこのマシンは、パスワードを入力する必要がない場合、マシンを通過できることを意味します。
上記のテキストは、次のコードとして直接実装されています。

cd .ssh
cat id_dsa.pub >> authorized_keys(或者cat id_rsa.pub >> authorized_keys)
chmod 600 authorized_keys
ssh localhost

ここに画像の説明を挿入します
ssh localhostそれでもパスワードを入力する必要がある場合は、次の文を試し/home/hadoop/てください。ホストのユーザー名に応じて柔軟に変更できます。

chmod 755 /home/hadoop/
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

上記の操作は、host1、host2、およびhost3で同時に実行されます。 操作後、次の手順に進みます。

4.2公開鍵の配布

次のステートメントのid_dsa.pubは、状況に応じてid_rsa.pubになる場合があります。

cat ~/.ssh/id_dsa.pub | ssh hadoop@host2.chybinmy.com 'cat - >> ~/.ssh/authorized_keys'
cat ~/.ssh/id_dsa.pub | ssh hadoop@host3.chybinmy.com 'cat - >> ~/.ssh/authorized_keys'

また、host2、host3でキー配布操作を実行します

SSHパスワードなしログインが直接成功することを確認しますssh 主机名
ここに画像の説明を挿入します

5Hadoopファイルを配布する

まず、他の2台のマシンにHadoopを保存するためのディレクトリを作成します

[hadoop@host2 ~]$ mkdir /opt/modules/app
[hadoop@host3 ~]$ mkdir /opt/modules/app

Scpによって配布される
Hadoopルートディレクトリの下のshare / docディレクトリは、保存されているHadoopドキュメントです。ファイルは非常に大きいです。配布する前にこのディレクトリを削除することをお勧めします。これにより、ハードディスクのスペースを節約し、配布の速度を上げることができます。

[hadoop@host1 hadoop-2.5.0]$ du -sh /opt/modules/app/hadoop-2.10.1/share/doc
[hadoop@host1 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.10.1/ 192.168.159.158:/opt/modules/app
[hadoop@host1 hadoop-2.5.0]$ scp -r /opt/modules/app/hadoop-2.10.1/192.168.159.157:/opt/modules/app

6NameNodeをフォーマットします

NameNodeマシン(host1)でフォーマットを実行します。

[hadoop@host1 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/bin/hdfs namenode -format

注:
NameNodeを再フォーマットする必要がある場合は、ホストごとに次の図の2つのフォルダーを削除する必要があります(dataフォルダーはでcore-site.xml構成されていますhadoop.tmp.dir
NameNodeとDataNodeの下にあるすべてのファイルが削除されていることが判明しました。そうしないと、エラーが報告されます。

フォーマットするたびに、デフォルトでクラスターIDが作成されNameNodesumファイルに書き込まれます(VERSIONファイルが配置されDataNodeVERSIONいるディレクトリはdfs/name/currentsumですdfs/data/current)。再フォーマットすると、デフォルトで新しいクラスターIDが生成されます。元の場合ディレクトリは削除されませんnamenode。VERSIONファイルに新しいクラスターIDがDataNode表示され、途中に古いクラスターIDが表示されます。一貫性がない場合はエラーが報告されます。

もう1つの方法は、フォーマット時にクラスターIDパラメーターを指定し、それを古いクラスターIDとして指定することです。

7クラスターを開始します

7.1HDFSを開始する

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/start-dfs.sh
[hadoop@host1 ~]$ jps

それぞれ3つのホストについて、jps次の3つの図は、起動が成功したこと
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
示しています。HDFSをシャットダウンするには、次のステートメントを使用します。

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/stop-dfs.sh

7.2YARNを開始します

host1YARNスタートで

[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/start-yarn.sh

host2ResourceManager開始時:

[hadoop@host2 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/sbin/yarn-daemon.sh start resourcemanager
[hadoop@host2 hadoop-2.10.1]$ jps

ここに画像の説明を挿入します

7.3ログサーバーを起動します

私たちが計画しているのでhost3MapReduceのログサービスを実行するためサーバーを、我々はHOST3上でそれを起動する必要があります

[hadoop@host3 hadoop-2.10.1]$ /opt/modules/app/hadoop-2.10.1/sbin/mr-jobhistory-daemon.sh start historyserver

ここに画像の説明を挿入します

7.4 HDFSWebページを表示する

http://192.168.159.159:50070/(URLは自分のIPに応じて変更されます。ipはhost1のIPです)
ここに画像の説明を挿入します

7.5YARNのWebページを表示する

http://192.168.159.158:8088/cluster(URLは自分のIPに応じて変更されます。ipはhost2のIPです)
ここに画像の説明を挿入します

8テストジョブ

ここでは、hadoopに付属のwordcountの例を使用して、ローカルモードでmapreduceをテストおよび実行します。

8.1mapreduce入力ファイルwc.inputを準備します

[hadoop@host1 ~]$ cat /opt/data/wc.input

ここに画像の説明を挿入します

8.2HDFSで入力ディレクトリ入力を作成する

[hadoop@host1 ~]$ cd /opt/modules/app/hadoop-2.10.1
[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -mkdir /input

wc.inputをHDFSにアップロードする

[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -put /opt/data/wc.input /input/wc.input

8.3Hadoopに付属のmapreduceデモを実行する

[hadoop@host1 hadoop-2.10.1]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.1.jar wordcount /input/wc.input /output

ここに画像の説明を挿入します

8.4出力ファイルの表示

[hadoop@host1 hadoop-2.10.1]$ bin/hdfs dfs -ls /output

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_42946328/article/details/113496798