Apache Sparkの勉強-Clusterを構成してみよう!spark-ec2スクリプトでクラスタ簡単構築
今日は、自動でec2インスタンスを作成してSpark Clusterを構成してくれるspark-ec2ツールを利用してクラスタを構成してみます。
正式なサイトは以下です。こちらに書かれている内容に沿って実施してみます。
ツールの概要
spark-ec2は、Apache Sparkクラスタをec2上で起動・管理・シャットダウンできるツールです。Apache SparkとHDFSをクラスタ上に自動で構成してくれます。
ツールでは同時に複数のクラスタを扱うことができますが、クラスタはec2インスタンスが所属するセキュリティグループにより識別されます。たとえば、testという名前のクラスタには、マスターノードはtest-masterと呼ばれるセキュリティグループ内に、複数のスレーブノードは、test-slavesというセキュリティグループ内に含まれます。spark-ec2スクリプトは、要求したクラスタ名に基づいて、これらのセキュリティグループを自動で作成します。
事前準備
作業用ec2インスタンスへspark-ec2のインストール
spark-ec2はGitHubから入手できます。
$ sudo install git $ git clone https://github.com/amplab/spark-ec2.git
なお、spark-ec2はspark 1.6.3以前はspark本体に同梱されていましたが、2.0.0から上記GitHub上に分離されました。*1
クラスタの起動
では早速起動してみます。上記で取得したspark-ec2ディレクトリに移動します。
以下のようにアクセスシークレットキーとアクセスキーを環境変数にセットします。(以下の値はダミーです。)
注意: 自身のアクセスキー情報は絶対に外部に漏らさないでください。また、テストが終わったらアクセスキーは削除しておきましょう!
export AWS_SECRET_ACCESS_KEY=xxxxxx export AWS_ACCESS_KEY_ID=xxxxxx
private-key.pemという名称で、ec2インスタンス作成に利用するKey PairのPrivate Keyをセットしておきます。
以下のように600をパーミッションとしてセットしておきます。
chmod 600 private-key.pem
次に、インスタンスを作成するリージョン名とアベイラビリティ名を調べておきます。
リージョン名は以下のURLから参照できます。
リージョンとアベイラビリティーゾーン - Amazon Elastic Compute Cloud
リージョンで利用可能なアベイラビリティゾーンは、以下のURLを参照してください。
リージョンとアベイラビリティーゾーン - Amazon Elastic Compute Cloud
ここでは、東京リージョン(ap-northeast-1)のap-northeast-1aを利用します。
以下のようなコマンドを実行します。
./spark-ec2 \ --key-pair=admin-key-pair-tokyo \ --identity-file=private-key.pem \ --region=ap-northeast-1 \ --zone=ap-northeast-1a \ --instance-type=c3.large \ --slaves=3 \ --spot-price=0.03 \ --hadoop-major-version=2 \ launch spark-ec2-cluster
インスタンスタイプはc3.largeを指定して、slave数を3インスタンスとしています。また、--spot-priceを指定することでスポットインスタンスを作席できます。価格はec2ダッシュボードのスポットリクエストから調べることができますので現状の値を下回らない値を指定してください。
--hadoop-major-version=2は、これを入れないとsparkのダウンロードが404になってしまうため指定しておきます*2。
途中でsshがrefuseされたエラーが出るかもしれませんが、おそらくec2がまだ準備中のためであり、しばらく待っていれば処理が進むと思います。(5~10分ぐらい)もし、private-keyのパーミッション設定などが間違っていた場合は、一旦停止して、--resumeをつけて再実行してみてください。
トータルでは15分ぐらいかかると思います。コーヒーでも飲んで待ちましょう!
ただ、デフォルトだとSpark1.6.2がインストールされるっぽいです。--spark-version=2.0.2を指定すると最初のバージョンチェックでエラーとなるため、動作が不明です。今後調査します。
インストールが完了すると、以下のようにMaster Web USが表示されます。
Spark standalone cluster started at http://ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com:8080 Ganglia started at http://ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com:5080/ganglia Done!
Master Web UIにアクセスすると、以下のようにMaster/Workerが構成されています。