目次
1. サーバー環境の準備
CentOS 7 でコマンドライン モードから GUI モードに切り替える方法
root 権限に切り替えます。
sudo su -
3 つの仮想マシンを準備します。仮想マシンの構成要件は次のとおりです。
(1) 単一仮想マシン: メモリ 4G、ハードディスク 50G
(2) クローン作成した仮想マシンの静的IPを変更する
[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
に変更されました
DEVICE=ens33
TYPE=イーサネット
オンブート =はい
BOOTPROTO=静的
名前 = "ens33"
プレフィックス=24
IPADDR=192.168.10.102
ゲートウェイ=192.168.10.2
DNS1=192.168.10.2
(3) Linux 仮想マシンの仮想ネットワーク エディタを表示し、編集 -> 仮想ネットワーク エディタ -> VMnet8
(5) Windows システムアダプタ VMware Network Adaptor VMnet8 の IP アドレスを表示します。
(6) Linux ファイル内の IP アドレス、Linux 仮想ネットワーク エディタのアドレス、および Windows システムの VM8 ネットワークの IP アドレスが同じであることを確認します。
2 ) ホスト名を変更する
( 1 ) ホスト名を変更する
[root@hadoop102 ~]# hostnamectl --static set-hostname hadoop102
( 2 ) ホスト名マッピングを構成し、/etc/hostsを開きます。
[root@hadoop102 ~]# vim /etc/hosts
次のコンテンツを追加します
192.168.10.102 ハドゥープ102
192.168.10.103 ハドゥープ103
192.168.10.104 ハドゥープ104
( 3 ) Windowsホストマッピングファイル ( hostsファイル)を変更します。
(a) C:\Windows\System32\drivers\etc パスを入力します。
(b) hostsファイルを開き、以下の内容を追加します。
192.168.10.102 ハドゥープ102
192.168.10.103 ハドゥープ103
192.168.10.104 ハドゥープ104
3 ) ファイアウォールをオフにして無効にします
[root@hadoop102 ~]# systemctl stop firewalld
[root@hadoop102 ~]# systemctl disable firewalld
4 ) 一般ユーザー (atguigu ) が root権限を持つように設定します。
[root@hadoop102 ~]# vim /etc/sudoers
/etc/sudoersファイルを変更し、次の行 (行102 ) を見つけて、 %wheelの下に行を追加します。
## root がどこでもコマンドを実行できるようにする
ルート ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD: ALL
5 ) /opt ディレクトリの下にフォルダーを作成します
(1) /opt ディレクトリにモジュールとソフトウェアのフォルダーを作成します
[root@hadoop102 opt]# mkdir /opt/module /opt/software
(2) モジュールおよびソフトウェアフォルダーの所有者を変更する
[root@hadoop102 opt]# chown atguigu:atguigu /opt/module /opt/software
6 ) 再起動
[root@hadoop102 モジュール]# 再起動
1.2 クラスター分散スクリプト xsync を作成する
1) xsync クラスター配布スクリプト
(1) 要件: ループ内のすべてのノードの同じディレクトリにファイルをコピーする
(2) 需要分析
① rsync コマンドの元のコピー:
rsync -av /opt/module root@hadoop103:/opt/
②想定されるスクリプト:
xsyncで同期するファイルの名前
③ 注: ディレクトリ /home/atguigu/bin に保存されているスクリプトは、atguigu ユーザーがシステム内のどこにいても直接実行できます。
(3) スクリプトの実装
①ホームディレクトリ/home/atguigu直下にbinフォルダを作成します。
[atguigu@hadoop102 ~]$ mkdir bin
② /home/atguigu/bin ディレクトリにグローバル呼び出し用の xsync ファイルを作成
[atguigu@hadoop102 ~]$ cd /home/atguigu/bin
[atguigu@hadoop102 bin]$ vim xsync
このファイルに次のコードを記述します
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
③スクリプトxsyncを実行権限を持つように修正する
[atguigu@hadoop102 bin]$ chmod +x xsync
④テストスクリプト
[atguigu@hadoop102 bin]$ xsync xsync
1.3 SSH パスワードなしログイン設定
説明: ここでは、他のホストへの機密ログイン用に hadoop102 と hadoop103 のみが構成されています。hadoop102 は NameNode で構成されておらず、hadoop103 は ResourceManager で構成されているため、両方とも他のノードへの機密アクセスを必要とします。
(1) hadoop102 で公開鍵と秘密鍵を生成します。
[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa
次に (改行 3 回) を押すと、id_rsa (秘密鍵)、id_rsa.pub (公開鍵) の 2 つのファイルが生成されます。
(2) パスワードなしでログインするには、hadoop102 公開キーをターゲット マシンにコピーします。
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104
(3) hadoop103 で公開鍵と秘密鍵を生成します。
[atguigu@hadoop103 .ssh]$ ssh-keygen -t rsa
次に (改行 3 回) を押すと、id_rsa (秘密鍵)、id_rsa.pub (公開鍵) の 2 つのファイルが生成されます。
(4) パスワードなしでログインするには、hadoop103 公開キーをターゲット マシンにコピーします。
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop103 .ssh]$ ssh-copy-id hadoop104
1.4 JDKの準備
1) 既存のJDKをアンインストールします(3ノード)
[atguigu@hadoop102 opt]# sudo rpm -qa | grep -i Java | xargs -n1 sudo rpm -e --nodeps
[atguigu@hadoop103 opt]# sudo rpm -qa | grep -i Java | xargs -n1 sudo rpm -e --nodeps
[atguigu@hadoop104 opt]# sudo rpm -qa | grep -i Java | xargs -n1 sudo rpm -e --nodeps
(1) rpm -qa: インストールされているすべてのソフトウェア パッケージをクエリすることを示します。
(2) grep -i: フィルタリング時に大文字と小文字を区別しないことを示します。
(3) xargs -n1: 最後の実行結果の値を一度に取得することを意味します
(4) rpm -e --nodeps: ソフトウェアをアンインストールすることを意味します
2) Xftp ツールを使用して、JDK を hadoop102 の /opt/software フォルダーにインポートします。
アイコンをクリックして Xftp を開きます
左側のウィンドウは Windows ファイル システム、右側のウィンドウは Linux ファイル システムに対応しており、対応するディレクトリを見つけて、JDK を右側のウィンドウにドラッグするとアップロードが完了します。
3) Linux システムの opt ディレクトリにソフトウェア パッケージが正常にインポートされているかどうかを確認します。
[atguigu@hadoop102 ソフトウェア]# ls /opt/software/
次の結果を参照してください。
jdk-8u212-linux-x64.tar.gz
4) JDK を /opt/module ディレクトリに解凍します。
[atguigu@hadoop102 ソフトウェア]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
5) JDK 環境変数を構成する
(1) /etc/profile.d/my_env.sh ファイルを新規作成します
[atguigu@hadoop102 モジュール]# sudo vim /etc/profile.d/my_env.sh
次の内容を追加し、保存 (:wq) して終了します。
#JAVA_HOME
エクスポート JAVA_HOME=/opt/module/jdk1.8.0_212
エクスポート PATH=$PATH:$JAVA_HOME/bin
(2) 環境変数を有効にする
[atguigu@hadoop102 ソフトウェア]$ ソース /etc/profile.d/my_env.sh
6) JDK が正常にインストールされたかどうかをテストします。
[atguigu@hadoop102 モジュール]# java -version
以下の結果が表示されれば、Javaは正常にインストールされています。
Javaバージョン「1.8.0_212」
7) JDKの配布
[atguigu@hadoop102 モジュール]$ xsync /opt/module/jdk1.8.0_212/
8) 配布環境変数設定ファイル
[atguigu@hadoop102 モジュール]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh
9) hadoop103 と hadoop104 でそれぞれソースを実行します。
[atguigu@hadoop103 モジュール]$ source /etc/profile.d/my_env.sh
[atguigu@hadoop104 モジュール]$ source /etc/profile.d/my_env.sh
1.5 環境変数の設定手順
Linux 環境変数は、/etc/profile、/etc/profile.d/*.sh、~/.bashrc、~/.bash_profile などの複数のファイルで設定できます。上記のファイル間の関係について説明します。以下と違い。
bash の動作モードはログインシェルと非ログインシェルに分けられます。
たとえば、ターミナルからユーザー名とパスワードを入力し、システムにログインすると、ログイン シェルが表示されます。そして、次のコマンド ssh hadoop103 コマンドを実行すると、hadoop103 で実行されるコマンドは非ログイン シェルになります。
これら 2 つのシェルの主な違いは、起動時に異なる設定ファイルをロードすることです。ログイン シェルの起動時に、/etc/profile、~/.bash_profile、~/.bashrc がロードされます。~/.bashrc は、非ログイン シェルの起動時にロードされます。
~/.bashrc (実際には ~/.bashrc に読み込まれた /etc/bashrc) または /etc/profile をロードすると、以下のコード部分が実行されるため、ログインシェルであっても非ログインシェルであっても、起動時にロードされる /etc/profile.d/*.sh の環境変数。
2. クラスター内のすべてのプロセスのスクリプトを表示する
1) /home/atguigu/bin ディレクトリにスクリプト xcall.sh を作成します。
[atguigu@hadoop102 bin]$ vim xcall.sh
2) スクリプトに次のように記述します
#! /bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done
3) スクリプトの実行権限を変更する
[atguigu@hadoop102 bin]$ chmod 777 xcall.sh
4) スクリプトを開始します
[atguigu@hadoop102 bin]$ xcall.sh jps
3. 飼育員の設置
3.1 分散インストールと展開
1 ) クラスター計画
Zookeeper を hadoop102、hadoop103、hadoop104 の 3 つのノードにデプロイします。
サーバーhadoop102 |
サーバーhadoop103 |
サーバーhadoop104 |
|
動物園の飼育員 |
動物園の飼育員 |
動物園の飼育員 |
動物園の飼育員 |
2 ) 解凍してインストールします
(1) Zookeeper インストール パッケージを /opt/module/ ディレクトリに解凍します。
[atguigu@hadoop102 ソフトウェア]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module/
(2) /opt/module/apache-zookeeper-3.7.1-bin の名前をzookeeperに変更します
[atguigu@hadoop102 モジュール]$ mv apache-zookeeper-3.7.1-bin/zookeeper
3 ) サーバー番号を設定します
(1) /opt/module/zookeeper/ ディレクトリに zkData を作成します
[atguigu@hadoop102 飼育員]$ mkdir zkData
(2) /opt/module/zookeeper/zkData ディレクトリに myid ファイルを作成します
[atguigu@hadoop102 zkData]$ vim myid
myidファイルを追加します。Linuxで作成するように注意してください。notepad ++では文字化けする可能性があります。
ファイル内のサーバーに対応する番号を追加します。
2
4 ) zoo.cfgファイルを設定します。
(1) /opt/module/zookeeper/conf ディレクトリ内のzoo_sample.cfgの名前をzoo.cfgに変更します。
[atguigu@hadoop102 conf]$ mvzoo_sample.cfgzoo.cfg
(2)zoo.cfgファイルを開く
[atguigu@hadoop102 conf]$ vimzoo.cfg
データストレージパス構成の変更
dataDir=/opt/module/zookeeper/zkData
次の構成を追加します
#######################集まる##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888
(3) /opt/module/zookeeper ディレクトリの内容を hadoop103、hadoop104 と同期します。
[atguigu@hadoop102 モジュール]$ xsync Zookeeper/
(4) hadoop103とhadoop104のmyidファイルの内容をそれぞれ3と4に変更します。
(5) zoo.cfg設定パラメータの解釈
サーバー.A=B:C:D。
Aは、これがどのサーバー番号であるかを示す番号です。
クラスター モードでファイル myid を構成します。このファイルは dataDir ディレクトリにあります。このファイルには A の値であるデータがあります。Zookeeper は起動時にこのファイルを読み取り、そのデータをその構成情報と比較します。判断するのはzoo.cfgどのサーバーですか?
Bはこのサーバーのアドレスです。
Cは、このサーバーのフォロワーがクラスター内のリーダー サーバーと情報を交換するポートです。
Dは、クラスター内のリーダー サーバーがハングアップした場合に備え、新しいリーダーを選出するためにポートを再選出する必要があります。このポートは、選出中にサーバー間の通信に使用されるポートです。
5 ) クラスタ運用
(1) Zookeeperを別途起動する
[atguigu@hadoop102 飼育員]$ bin/zkServer.sh start
[atguigu@hadoop103 飼育員]$ bin/zkServer.sh start
[atguigu@hadoop104 飼育員]$ bin/zkServer.sh start
(2) ステータスの表示
[atguigu@hadoop102 zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[atguigu@hadoop103 zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[atguigu@hadoop104 zookeeper]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: follower
3.2 ZK クラスターの起動および停止スクリプト
1 ) hadoop102の/home/atguigu/binディレクトリにスクリプトを作成します。
[atguigu@hadoop102 bin]$ vim zk.sh
スクリプトに次のように記述します。
#!/bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop102 hadoop103 hadoop104
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/zookeeper/bin/zkServer.sh status"
done
};;
esac
2 ) スクリプトの実行権限を増やす
[atguigu@hadoop102 bin]$ chmod 777 zk.sh
3 ) Zookeeperクラスター起動スクリプト
[atguigu@hadoop102モジュール]$ zk.sh start
4 ) Zookeeperクラスター停止スクリプト
[atguigu@hadoop102モジュール]$ zk.sh stop
3.3 クライアントのコマンドライン操作
コマンドの基本構文 |
機能説明 |
ヘルプ |
すべてのアクションコマンドを表示 |
パス_ |
ls コマンドを使用して、現在の znode の子ノードを表示します。 -w 子ノードの変更を監視する -s 二次情報を追加します |
作成する |
共通の創作物 -s にはシーケンスが含まれます -e 一時的 (再起動またはタイムアウトがなくなる) |
パスを取得する |
ノードの値を取得します -w ノードの内容の変更を監視する -s 二次情報を追加します |
セット |
ノードの特定の値を設定します |
ステータス |
ノードのステータスを表示する |
消去 |
ノードの削除 |
すべて削除 |
ノードを再帰的に削除する |
1 ) クライアントを起動します