このドキュメントでは、本番環境の Dataproc クラスタで信頼性が高く、効率的で、分析情報を提供するデータ処理ジョブを実行するために役立つ Dataproc のベスト プラクティスについて説明します。
クラスタ イメージのバージョンを指定する
Dataproc は、イメージ バージョンを使用して、オペレーティング システム、ビッグデータ コンポーネント、 Google Cloud コネクタを、クラスタにデプロイされるパッケージにバンドルします。クラスタの作成時にイメージ バージョンを指定しない場合は、デフォルトで最新の安定版イメージ バージョンが使用されます。
本番環境では、次の gcloud CLI コマンドに示すように、クラスタを特定の major.minor
Dataproc イメージ バージョンに関連付けます。
gcloud dataproc clusters create CLUSTER_NAME \ --region=region \ --image-version=2.0
Dataproc は、major.minor
バージョンを最新のサブマイナー バージョンに解決します(2.0
は 2.0.x
に解決されます)。注: クラスタに対して特定のサブマイナー バージョンを使用する必要がある場合は、それを指定できます(例: --image-version=2.0.x
)。詳細については、バージョニングの仕組みをご覧ください。
Dataproc プレビュー イメージ バージョン
Dataproc イメージの新しいマイナー バージョンは、標準のマイナー イメージ バージョン トラックでリリースされる前に preview
バージョンで利用できます。本番環境で標準のマイナー イメージ バージョンを導入する前に、プレビュー イメージを使用して、新しいマイナー イメージ バージョンに対してジョブをテストして検証します。
詳細については、Dataproc のバージョニングをご覧ください。
必要に応じてカスタム イメージを使用する
ネイティブ Python ライブラリや、セキュリティ強化ソフトウェアやウイルス対策ソフトウェアなど、クラスタに追加する依存関係がある場合は、ターゲットのマイナー イメージ バーション トラックに、最新のイメージからカスタム イメージを作成します。この方法では、カスタム イメージを使用してクラスタを作成するときに依存関係の要件を満たすことが可能です。カスタム イメージを再ビルドして依存関係の要件を更新する場合は、マイナー イメージ トラック内で利用可能な最新のサブマイナー イメージ バージョンを使用します。
Dataproc サービスにジョブを送信する
gcloud CLI または Google Cloud コンソールを使用して jobs.submit 呼び出しで Dataproc サービスにジョブを送信します。Dataproc のロールを付与して、ジョブとクラスタの権限を設定します。カスタムロールを使用して、クラスタ アクセスとジョブ送信権限を分離します。
Dataproc サービスにジョブを送信するメリットは次のとおりです。
- 複雑なネットワーク設定が不要 - API に幅広くアクセス可能
- IAM の権限とロールを簡単に管理する
- ジョブのステータスを簡単に追跡 - 結果を複雑なものにするための Dataproc ジョブのメタデータはありません。
本番環境では、固定されたマイナー イメージ バージョン(--image-version=2.0
など)でクラスタレベルの依存関係にのみ依存するジョブを実行します。ジョブを送信するときに、依存関係をジョブとバンドルします。Spark または MapReduce に uber jar を送信するのが一般的な方法です。
- 例: ジョブ jar が
args4j
とspark-sql
に依存し、args4j
がジョブに固有のものであり、spark-sql
がクラスタレベルの依存関係である場合、ジョブの uber jar にargs4j
をバンドルします。
初期化アクションのロケーションを制御する
初期化アクションにより、Dataproc クラスタの作成時にスクリプトを自動的に実行したり、コンポーネントをインストールしたりできます(dataproc-initialization-actions 一般的な Dataproc 初期化アクションに関する GitHub リポジトリをご覧ください)。 本番環境でクラスタ初期化アクションを使用する場合は、公開リポジトリから取得するのではなく、初期化スクリプトを Cloud Storage にコピーします。これにより、他のユーザーによる変更の対象となる初期化スクリプトを実行する必要がなくなります。
Dataproc リリースノートをモニタリングする
Dataproc は、新しいサブマイナー イメージ バージョンを定期的にリリースしています。 Dataproc リリースノートを表示または登録して、Dataproc イメージ バージョンの最新のリリース、その他のお知らせ、変更、修正を確認してください。
ステージング バケットを表示して障害を調査する
クラスタのステージング バケットを調べて、クラスタとジョブのエラー メッセージを調べます。通常、ステージング バケットの Cloud Storage の場所はエラー メッセージに表示されます。次のエラー メッセージの例の太字のテキストをご覧ください。
ERROR: (gcloud.dataproc.clusters.create) Operation ... failed: ... - Initialization action failed. Failed action ... see output in: gs://dataproc-<BUCKETID>-us-central1/google-cloud-dataproc-metainfo/CLUSTERID/<CLUSTER_ID>\dataproc-initialization-script-0_output
gcloud CLI を使用して、ステージング バケットの内容を表示します。
出力例:gcloud storage cat gs://STAGING_BUCKET
+ readonly RANGER_VERSION=1.2.0 ... Ranger admin password not set. Please use metadata flag - default-password
サポートを受ける
Google Cloud は、本番環境の OSS ワークロードをサポートし、さまざまなレベルのサポートを通じてビジネス SLA を満たすのに役立ちます。また、 Google Cloudコンサルティング サービスでは、チームの本番環境デプロイについてのベスト プラクティスに関するガイダンスを提供できます。
追加情報
Google Cloud ブログの Dataproc ベスト プラクティス ガイドを読む。
YouTube で Democratizing Dataproc を視聴する。