【0から始めるオフラインデータウェアハウスプロジェクト】——データウェアハウスの環境構築(1)

目次

1. サーバー環境の準備

1.2 クラスター分散スクリプト xsync を作成する

1.3 SSH パスワードなしログイン設定

1.4 JDKの準備

1.5 環境変数の設定手順

2. クラスター内のすべてのプロセスのスクリプトを表示する

3. 飼育員の設置

3.1 分散インストールと展開

3.2 ZK クラスターの起動および停止スクリプト

3.3 クライアントのコマンドライン操作


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) hadoop103hadoop104myidファイルの内容をそれぞれ34に変更します。

(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 ) クライアントを起動します

[atguigu@hadoop103 飼育員]$ bin/zkCli.sh

おすすめ

転載: blog.csdn.net/lxwssjszsdnr_/article/details/131593643