1.構成図
本投稿で、下記の構造ようなStandaloneクラスターの環境を構築します。
- マスタの構成
- Master: 192.168.0.100
- ワーカノードの構成
- Worker1: 192.168.0.101
- Worker2: 192.168.0.102
2.SSH接続の確認
※私のそのたの投稿【SSH接続時パスワードなしでSSH接続の設定方法】を参照してください。
3.Hosts設定の確認
3.1.Master
Master上で、「/etc/hosts」ファイルの一番下に、以下の情報を追加します。
192.168.0.100 cluster-master
192.168.0.102 cluster-slave1
192.168.0.101 cluster-slave2
3.2.Slave1
Slave1上で、「/etc/hosts」ファイルの一番下に、以下の情報を追加します。
192.168.0.100 cluster-master
192.168.0.101 cluster-slave2
3.3.Slave2
Slave2上で、「/etc/hosts」ファイルの一番下に、以下の情報を追加します。
192.168.0.100 cluster-master
192.168.0.102 cluster-slave1
4.Sparkのインストール
4.1.Master
以下のようにSparkのインストールを行います。
# sparkダウンロード
cd /usr/work
wget http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz
tar zxvf spark-2.3.2-bin-hadoop2.7.tgz
# 移動
sudo mv spark-2.3.2-bin-hadoop2.7 /usr/local/lib/spark-2.3.2-bin-hadoop2.7
cd /usr/local/lib/
sudo ln -s spark-2.3.2-bin-hadoop2.7 spark
「/etc/profile.d」の下に、「spark.sh」ファイルを作り、SPARK_HOMEなどの環境変数を設定します。
# spark.sh作成
cd /etc/profile.d
vi spark.sh
# 以下の変数を追加、保存
export SPARK_HOME=/usr/local/lib/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
# 有効化
source spark.sh
4.2.Slave1
以下のようにSparkをインストールします。
# sparkダウンロード
cd /usr/work
wget http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz
tar zxvf spark-2.3.2-bin-hadoop2.7.tgz
# 移動
sudo mv spark-2.3.2-bin-hadoop2.7 /usr/local/lib/spark-2.3.2-bin-hadoop2.7
cd /usr/local/lib/
sudo ln -s spark-2.3.2-bin-hadoop2.7 spark
SPARK_HOMEなどの環境変数を設定するファイルを作ります。
# spark.sh作成
cd /etc/profile.d
vi spark.sh
# 以下の変数を追加、保存
export SPARK_HOME=/usr/local/lib/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
# 有効化
source spark.sh
4.3.Slave2
以下のようにSparkをインストールします。
# sparkダウンロード
cd /usr/work
wget http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.2/spark-2.3.2-bin-hadoop2.7.tgz
tar zxvf spark-2.3.2-bin-hadoop2.7.tgz
# 移動
sudo mv spark-2.3.2-bin-hadoop2.7 /usr/local/lib/spark-2.3.2-bin-hadoop2.7
cd /usr/local/lib/
sudo ln -s spark-2.3.2-bin-hadoop2.7 spark
SPARK_HOMEなどの環境変数を設定するファイルを作ります。
# spark.sh作成
cd /etc/profile.d
vi spark.sh
# 以下の変数を追加、保存
export SPARK_HOME=/usr/local/lib/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
# 有効化
source spark.sh
5.Standaloneに必要な環境変数の設定
5.1.Master
「/usr/local/lib/spark/conf」に移動して、以下のファイルを編集します。
Slaveの実際のメモリー容量とCPUのコア数により、パラメータを編集します。
spark.executor.memory 2g
spark.executor.instances 1
spark.executor.cores 2
パラメータの意味
オプション | 説明 |
---|---|
spark.executor.memory | Executorに配布されるメモリーの容量(< Workerの空きのメモリ量) |
spark.executor.instances | Standalone上には、1しか設定できない |
spark.executor.cores | Executorに配布されるコア数(< ワーカーの実際のコア数) |
「spark-env.sh」に、Masterのホストとポートを設定します。
export SPARK_MASTER_HOST=192.168.0.100
export SPARK_MASTER_PORT=7077
「slaves.sh」に、全てのSlaveのIP追加します。
192.168.0.101
192.168.0.102
5.2.Slave
Masterで設定済の「spark-defaults.conf」、「spark-env.sh」、「slaves.sh」ファイルをSlave1とSlave2の同じのフォルダーの配下にコピーしてください。
6.Standaloneの起動と状態確認
Master側で、StandaloneのMasterサービスとWorkerサービスを起動します。
# Master起動
start-master.sh
# Slave起動
start-slaves.sh
Master側で、Masterサービスの状態を確認します。
# Masterサービスの起動状態確認
jps
# 以下の情報が表示されたらMasterサービスが起動済です
XXXX Jps
XXXX Master
Slave1とSlave2側で、それぞれのWorkerサービスの状態を確認します。
# Workerサービス状態確認
jps
# 以下の情報が表示されたらMasterサービスが起動済です
XXXX Jps
XXXX Worker
WebUIで、StandaloneのMasterとWorkerの状態も確認できます。
MasterとWorkerサービスが正常に起動されたら、SparkクラスタのWebUI【http://192.168.0.100:8080】からMasterと各Workerの情報が確認できます。
7.Standaloneの停止と状態確認
Master側で、StandaloneのMasterサービスとWorkerサービスを停止します。
# MasterとSlaveを全部停止
start-master.sh
start-slaves.sh
# Masterサービスの状態確認
jps
XXXX Jps
Masterが表示されなければMastersサービスが停止されたはず(Slaveの停止も同じ方法でやってください)