[Hadoop学習2] 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.sh
、mapred-env.sh
、yarn-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.defaultFS
NameNodeのアドレスです。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アクセスアドレスとポート番号です。したがって、ここでは次のように設定されています。host3
SecondaryNameNode
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.name
mapreduce
実行するタスクを設定します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
)
フォーマットするたびに、デフォルトでクラスターIDが作成され、NameNode
sumファイルに書き込まれます(VERSIONファイルが配置されDataNode
てVERSION
いるディレクトリはdfs/name/current
sumです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を開始します
host1
YARNのスタートで
[hadoop@host1 ~]$ /opt/modules/app/hadoop-2.10.1/sbin/start-yarn.sh
host2
ResourceManagerの開始時:
[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ログサーバーを起動します
私たちが計画しているのでhost3
MapReduceのログサービスを実行するためにサーバーを、我々は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