Table of Contents
はじめに
本記事では、GCP DataprocでのSparkクラスタ作成とPySparkジョブの実行を実際に行い、その手順と注意点を整理していきたいと思います。
Dataprocは、Apache SparkやHadoopなどのオープンソース分散処理フレームワークを、Google Cloud上で簡単に動かせるマネージドサービスです。データ処理やETL、ログ分析などに活用される重要な分析基盤の一つです。
GCPのDataprocの概要の説明は下記の記事をご確認ください。
Dataprocクラスタ構築:事前準備と注意点
後述のところで、Dataprocのクラスターを作成していきます。その際に、ここで記載する権限周りの設定をしておかないとエラーが発生してしまうので、先に権限の設定を記載しておきます。
権限エラーへの対処
このあとのDataprocのクラスタ作成時に、「Cloud Storageバケットへのアクセス権が足りない」というエラーに遭遇しました。これは、クラスター作成時にDataprocが内部的に利用するstaging/tempバケットに対するアクセス権限不足が原因と推測しています。これに対処する為に
対処法として、Dataproc用のサービスアカウントにroles/storage.admin
ロールを追加します:
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member="serviceAccount:service-[PROJECT_NUMBER]@dataproc-accounts.iam.gserviceaccount.com" \
--role="roles/storage.admin"
クラスタの作成
それではDataprocの処理基盤のクラスターを作成していきましょう。以下のような構成でクラスタを作成します。
- リージョン:
us-central1
- ノード構成:マスター1台、ワーカー1台
- マシンタイプ:
n1-standard-2
GUIからでも、CLIからでも作成可能です。
クラスタ作成後、GCE(Compute Engine)上にインスタンスが自動的に立ち上がることが確認できます。
1 クラスターの作成
GCPの「Cloud Dataproc」の画面から「CREATE CLUSTER」を行いクラスターを作成していきます
2 クラスターの設定
3 クラスターの起動/ノードの起動確認
VMインスタンスの画面に移動すると、クラスターを構成するノードも、マスターノードとワーカーノードが作成されていることがわかります。
4 ジョブの実行/実行確認
作成したクラスター上でジョブを実行していきましょう。
ジョブのモニタリングのログを見ると、確かにジョブが実行されて円周率が表示されていることがわかります。
まとめ
GCPの分散処理エンジンである「GCP Dataproc」のデモを確認してみました。
大きな流れとしては
- Dataprocのクラスター(マスターとワーカーのインスタンス)の作成
- クラスター上でジョブの作成・設定
- ジョブの実行(Sparkを実行環境にした場合は、ジョブがSparkの分散処理で実行される)
いかがでしたでしょうか?触ったことがないと難しいイメージがありますが、実際は簡単にジョブを動かすことができましたね!