Hadoopの完全分散プラットフォーム構築
建設手順:
[以前]
完全に分散されたHadoopクラスターの構築には、複数の仮想マシンが必要です。各仮想マシンを個別にインストールして構成するのは面倒です。したがって、VMwareで仮想マシンを作成し、パブリック基本構成を完了してから、完全な仮想マシンを直接作成できます。クローン。これはより効率的です。
完全に分散されたHadoopクラスターの構築は、典型的なマスタースレーブアーキテクチャ、つまり1つのマスターノードと複数のスレーブノードです。ここでは、1master
つをslave1
ノードとして、他の2つをノードとslave2
ノードとして3つの仮想マシンを使用します。
必要なインストールパッケージ:jdkインストールパッケージ、Hadoopインストールパッケージ(リソースで使用しているバージョンがあります)。
特別な指示がない場合、この操作はXshellで実行されます。
インストールの推奨事項:ルートディレクトリに統合インストールエクスポートフォルダーを作成し、エクスポートフォルダーに2つのフォルダーサーバー(ソフトウェアインストールフォルダー)、ソフトウェア(インストールパッケージストアディレクトリ)、または/usr/local/
次のインストールを作成します。
mkdir -p /export/servers
mkdir -p /export/softwares
1.静的IP構成
インストールが完了した後、centos7カードのデフォルトは、カード名の最初の開始ifconfig
または
ip a
表示ではありません 。次に、関連する構成ファイルを変更します。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO修改为static
BOOTPROTO=static
最后一行ONBOOT改为yes
ONBOOT=yes
添加如下内容:
IPADDR=填IP地址
NETMASK=子网掩码
GATEWAY=网关IP
DNS1=8.8.8.8
DNS2=8.8.4.4
同じ外部ネットワークにpingを実行できる場合、静的IP構成は成功しています
ping www.qq.com
2.jdkのインストール
* Jdkインストールパッケージがsoftwares
フォルダーにアップロードされ、 サーバーフォルダーに解凍されます。
cd /export/softwares/
rz
选中jdk压缩包,上传至当前目录下
mv jdk-8u161-linux-x64.tar.gz jdk
tar -zxvf jdk -C ../servers/
如果<code>rz</code>命令报错,则执行如下安装后再执行
yum -y install lrzsz
- jdk環境変数を構成します
では/etc/profile
、ファイルの以下の環境変数の末尾に追加します。
export JAVA_HOME=/export/servers/jdk
export PATH=$PAHT:$JAVA_HOME/bin
保存後に終了します。
-
構成ファイルを再ロードして、構成された環境変数を有効にします。
source /etc/profile
-
構成が成功したかどうかを確認します。
java -version
表示されるjdkのバージョン情報を入力すると、インストールと構成が成功します。
上記の静的IP構成とjdkインストールは各マシンで構成する必要があるため、1台のマシンで構成が成功したら、仮想マシンを直接複製します(完全なクローンを作成する必要があることに注意してください)。3つすべてのIPアドレスに注意してください。同じである場合は、構成ファイル内の2つの複製された仮想マシンのIPを変更する必要があります。変更が完了したら、ネットワークサービスを再起動して、相互にpingできるかどうかを確認します。pingが成功すると、IPの変更は成功します。 。
重启网路服务:
systemctl restart network
3.仮想マシンのホスト名を変更し、マッピングを追加します
*/etc/hostname
ファイルを変更し 、デフォルトの最初の行を削除してから変更し
master
、仮想マシンを再起動すると、ホスト名の変更が有効になります。
:他の2台の仮想マシンのホスト名を変更するために同じアプローチがあり
slave1
、
slave2
仮想マシンを再起動します。*
/etc/hosts
ファイルを編集 し、次のコンテンツを追加します(IPアドレスを変更するにはIPアドレスに注意してください)。
192.168.200.200 master
192.168.200.201 slave1
192.168.200.202 slave2
同じコンテンツが他の2台のマシンに追加されます。
変更が成功するかどうかは、ping
相互に通信できるかどうかによって異なります。たとえば、任意のマシンで次のコマンドを実行します。
ping master
ping slave1
ping slave2
4.SSHパスワードなしのログインを構成します
-
SSHがインストールされているかどうかを確認します(centos7はデフォルトでインストールされています)
rpm -qa | grep ssh
次の結果はすでにインストールされています。
openssh-7.4p1-21.el7.x86_64 libssh2-1.8.0-3.el7.x86_64 openssh-clients-7.4p1-21.el7.x86_64 openssh-server-7.4p1-21.el7.x86_64
インストールされていない場合は、手動でインストールする必要があります。
yum -y install openssh-server yum -y install openssh-clients
ヒント:openssh-clientsがインストールされていない場合、sshおよびscpコマンドの実行時にエラーが報告され、コマンドが見つからないことが示されます。
-
SSHが使用可能かどうかをテストします(IPアドレスは、ログインするターゲットマシンのIPアドレス、つまり子ノードのIPアドレスです)
ssh 192.168.200.201
プロンプトに従って、ターゲットマシンのログインパスワードを入力します。ログインが成功すると、sshが使用可能になり、次のコマンドを実行して元のホストに戻ります。
exit
-
キーを生成する
ssk-keygen
このプロセスは繰り返し確認する必要があります。間にEnterキーを押すだけです。注:場合によっては、
yes
またはno
!と答える必要があります。!! -
マスターノードを含む、マスターノード上のすべてのノードでシークレットフリーのログイン操作を実行します。
ssh-copy-id -i ~/.ssh/id_rsa.pub master ssh-copy-id -i ~/.ssh/id_rsa.pub slave1 ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
マスターはスレーブノードでサービスを開始する必要があるため、マスターはスレーブにログインする必要があるため、マスターノードで上記のコマンドを実行します。
5.時刻同期サービスを構成します
-
ntpサービスがインストールされているかどうかを確認します
rpm -qa | grep ntp
インストールされていない場合はntpサービスをインストールします
yum -y install ntp
-
マスターノードをNTP時刻同期サービスのマスターノードとして設定します(つまり、マスターノードの時刻が優先されます)。
/etc/ntp.conf
ファイルを編集し、server
で始まる行をコメントアウトして、次のコードを追加します。restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap server 127.127.1.0 fudge 127.127.1.0 stratum 10
-
ノードの時刻同期を構成します(マスターノードから時刻を取得します)
slave1ノードとslave2ノードの
/etc/ntp.conf
ファイルも変更し、server
で始まる行をコメントアウトして、次のコードを追加します。server master
10分ごとにマスター(タイムサーバー)と時刻を同期するように子ノードを設定します
crontab -e 编写定时任务: */10 * * * * /usr/sbin/ntpdate master
-
NTPサービスを開始します
-
マスターノードでntpサービスを開始し、起動時にセルフスタートを追加します
service ntpd start & chkconfig ntpd on
-
スレーブノード(slave1、slave2)で時間を1回手動で同期します
ntpdate master
-
スレーブノード(slave1、slave2)でntpサービスを開始し、起動時にセルフスタートを追加します
service ntpd start & chkconfig ntpd on
-
ntpサーバーが上位のntpに接続されているかどうかを確認します
ntpstat 这个命令可能会看到 unsynchronised 这是正常情况,因为配置完成后,需要等待一会儿才能和/etc/ntp.conf中配置的标准时间进行同步。
-
NTPサーバーと上位のNTPのステータスを表示します
ntpq -p 参数说明: when: 多少秒前进行过时间同步 poll: 下次更新在多少秒后 reach: 已经向上层ntp服务器要求更新的次数 delay: 网络延迟 offser: 时间补偿值 jitter: 系统时间与BIOS时间差
-
-
構成が成功したかどうかをテストします
任意のノードの時間を変更します。
date -s "2011-11-11 11:11:11"
10分待って、時間が同期しているかどうかを確認します(時間を節約するために、実験中に10分を1分に調整できます)
date
拡張機能:時計を外部ネットワークの時刻と同期させる必要がある場合は、スケジュールされたタスクを設定する必要があります(実際、仮想マシンの時刻はネットワーク上の時刻と同期されています)。私はAlibabaの時刻を使用します。クラウドサーバー。----マスターで操作する
启动定时任务:
crontab -e
添加如下代码:分别代表 分 时 日 月 周
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com
6. Hadoopのインストール(マスターでの操作)
-
Hadoopインストールパッケージを解凍します
进入到softwares目录 tar -zxvf hadoop-2.7.2.tar.gz -C ../servers/ cd ../servers/ mv hadoop-2.7.2.tar.gz hadoop
-
環境変数を構成する
では
/etc/profile
、次のファイルを追加します。export HADOOP_HOME=/export/servers/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存後に覚えておいてください
source /etc/profile
-
構成ファイルを変更します
すべての構成ファイルは次のパスにあります。
hadoop/etc/hadoop/
奴隷
構成ファイルには、スレーブノードの情報、つまりノードのマシン名が保存されます。localhostを削除し、次のように変更します。
slave1 slave2
core-site.xml
Hadoopコア構成ファイル
<configuration> </ configuration>の間に次のコンテンツを追加します。
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/export/servers/hadoop/tmp</value> </property>
fs.defaultFS
属性はデフォルトのファイルシステムを指定することであり、その値はhdfsとマスターノードポートです。hadoop.tmp.dir
この属性は、hdfs一時データが保存されるディレクトリを指定するためのものです。デフォルト値はLinuxtmpディレクトリです。hdfs-site.xml
HDFS関連の構成ファイル
<configuration> </ configuration>の間に次のコンテンツを追加します。
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/export/servers/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/export/servers/hadoop/tmp/dfs/data</value> </property>
dfs.replication
この属性はデータブロックのコピー数を表し、その値はデフォルトで3です。ここでは、テストの便宜上、1に設定します。dfs.namenode.name.dir
この属性は、NameNodeの一時データストレージディレクトリを表します。dfs.namenode.data.dir
この属性は、DataNodeの一時データストレージディレクトリを表します。mapred-site.xml
MapReduce関連の構成
ファイルの名前をmapred-site.xmlに変更し、デフォルトのファイル名はmapred-site.xml.templateに変更し、mapred-site.xmlの構成を変更します。
mv mapred-site.xml.template mapred-site.xml
<configuration> </ configuration>の間に次のコンテンツを追加します。
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
mapreduce.framework.name
この属性は、MapReduceプログラムの実行中のフレームワークを表します。デフォルト値はローカルです。これはローカルで実行することを意味します。ここでは、MapReduceプログラムをYARNフレームワークで実行できるようにyarnに設定します。糸-site.xml
YARNフレームワーク構成
<configuration> </ configuration>の間に次のコンテンツを追加します。
<property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
yarn.resourcemanager.hostname
この属性は、ResourceManagerが実行されるノードを指定します。yarn.nodemanager.aux-services
この属性は、YARNのデフォルトのシャッフル方法を指定し、MapReduceのデフォルトのシャッフルアルゴリズムに設定されます。hadoop-env.sh
自動化スクリプトの開始時に、Hadoop操作の基本的な環境構成が使用されます。
export JAVA_HOME=/export/servers/jdk
ファイルの25行目で、前のコメントを削除してから、次のパスを自分の
JAVA_HOME
パスに変更します。 -
それ以降、Hadoopの設定が完了しても、通常の起動に必要な設定項目のみです!!!
注:構成の詳細については、Hadoopの公式Webサイトにアクセスして表示できます。開いた後、ページの下部にスライドします。左下隅の[構成]の下に、各構成ファイルの詳細情報へのリンクがあります。。
7.Hadoopフォルダーの配布
マスターノードですべての構成ファイルを構成した後、Hadoopフォルダーを他の2つの子ノードに配布します
scp -r /export/servers/hadoop slave1:/export/servers/
scp -r /export/servers/hadoop slave2:/export/servers/
8.クラスターの起動
クラスタを起動する前に、必ずファイアウォールをオフにしてください。各マシンのファイアウォールをオフにする必要があることに注意してください。!!
查看防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld
设置防火墙开机不启动(永久关闭防火墙,如果后面需要还可以手动打开):
systemctl disable firewalld
打开防火墙:
systemctl start firewalld
-
初めて開始する前にNameNodeをフォーマットします(後で開始するときにフォーマットする必要はありません)
hdfs namenode -format
フォーマットして開始するのを忘れた場合は、すべてのnamenodeプロセスとdatanodeプロセスをシャットダウンしてから、データとログデータを削除してから、再フォーマットする必要があります。
-
クラスターを開始するには、手動で開始する方法と自動スクリプトで開始する方法の2つがあります。
-
手動スタート
1. 启动HDFS : 启动NameNode(master节点): hadoop-daemon.sh start namenode 启动DataNode(在Slave节点): hadoop-daemon.sh start datanode 启动SecondaryNameNode(在任意节点): hadoop-daemon.sh start secondarynamenode 2. 启动YARN : 启动ResourceManager(在Master节点): yarn-daemon.sh start resourcemanager 启动NodeManager(在Slave节点): yarn-daemon.sh start nodemanager 3. 启动历史任务服务: mr-jobhistory-daemon.sh start historyserver
-
スクリプトの自動起動(マスターノードで実行)
1. 启动HDFS : start-dfs.sh 2. 启动YARN : start-yarn.sh 3. 启动历史任务服务: mr-jobhistory-daemon.sh start historyserver 注:还有一个脚本是:start-all.sh,但是一般不建议使用,容易出错。
-
-
プロセスを表示
jps
マスターで次のプロセスが表示された場合、起動は成功しています。
[root@master ~]# jps 2016 ResourceManager 2353 Jps 1636 NameNode 1845 SecondaryNameNode 2310 JobHistoryServer [root@master ~]#
スレーブで次のプロセスが表示された場合、起動は成功しています。
[root@slave1 ~]# jps 1554 DataNode 1830 Jps 1671 NodeManager [root@slave1 ~]#
説明:
NameNode、SecondaryNameNode
これは、マスターDataNode
でのHDFSのプロセスであり、スレーブでのHDFSのプロセスです。これらの3つのプロセスの存在は、HDFSが正常に開始されたことを示します。ResourceManager
マスターNodeManager
でのYARNのプロセスとスレーブでのYARNのプロセスです。これら2つのプロセスの存在は、YARNが正常に開始されたことを示します。JobHistoryServer
それは歴史的奉仕の過程です。 -
ウェブページを見る
クラスターの起動後、ブラウザーにIPアドレスとポート番号を入力し、そのUIページにアクセスして、クラスターの詳細情報を表示できます。
查看HDFS集群详细信息: 192.168.200.200:50070 查看YARN集群详细信息: 192.168.200.200:8088 查看historyserver历史服务详细信息: 192.168.200.200:19888
-
シャットダウンプロセス
サービスコマンドを開くには、
start
に変更されstop
ました。