Apache Sparkの勉強-Clusterを構成してみよう!クラスタ起動スクリプトで一発起動してみる
前回は、SparkのStandaloneクラスタを手動スクリプトで構築して、対話シェルで動作を確認してみました。
今回は、クラスタ起動スクリプトを使用してスクリプト一発実行するだけでSparkがクラスタ構成で起動する方法を実施してみたいと思います。
クラスタ起動スクリプトの利用
まず、conf/slavesファイルをSparkディレクトリに作成する必要があります。このファイル内には、Spark workerが動作するホスト名を1行ずつ定義します。なお、SlaveマシンへはMasterマシンからsshでアクセスできる必要があります。デフォルトでは、パスワードなしでPrivate Keyアクセスができる必要があります。EC2の各インスタンスでは作成時に指定したKeyペアのPublic Keyはsshに設定されていますが、Masterインスタンスからアクセスする際のPrivate Keyを指定する必要があります。
(注意:本番環境などの場合は、別途EC2インスタンス間のアクセスで利用するKeyPairを作成してそちらを利用するようにしましょう!)
まず、EC2インスタンスで使用したPrivate KeyをMasterインスタンス上の任意のディレクトリにアップします。(例えばSPARK_HOME/private-key.pem)次に以下のようにSPARK_SSH_OPTSに"-i"オプションでprivate keyファイルを指定しておきます。(ファイル名は適宜変更してください。)なおpemファイルはchmod 400で自分しか読めないようにパーミッションを変更しておきます。
chmod 400 private-key.pem export SPARK_SSH_OPTS="-i private-key.pem"
ここまでそろったら、./sbin/start-all.shを起動するとローカルのMasterとリモートのSlaveがすべて起動します。
./sbin/start-all.sh
エラーが無ければ無事に起動できています。masterのログを見ると以下のようなログが出ていれば、workerが起動してMasterに登録されています。
16/12/12 13:10:10 INFO Master: Registering worker xx.xx.xx.xx:44238 with 2 cores, 2.7 GB RAM 16/12/12 13:10:10 INFO Master: Registering worker xx.xx.xx.xx:36147 with 2 cores, 2.7 GB RAM
実際にブラウザからMaster WebUIにアクセスしてみましょう!
masterインスタンスに8080ポートでアクセスします。(sshトンネリングするか、セキュリティグループに8080アクセスをセットしておきます。送信元IPはマイIPのみ許可するようにしておきましょう。)
http://maser-ec2-instance-dns:8080
以下のように、Workerが追加されています。
前回のように、対話シェルで動作確認してみましょう!
conf/slaveファイルにホストを追加すれば自動で起動されますので便利ですね!
止める場合は以下を実行します。
./sbin/stop-all.sh