本番環境での Dataproc のベスト プラクティス

このドキュメントでは、本番環境の Dataproc クラスタで、信頼性が高く、効率的かつ分析力を備えたデータ処理ジョブを行う際に役立つ Dataproc のベスト プラクティスについて説明します。

クラスタ イメージのバージョンを指定する

Dataproc は、イメージ バージョンを使用して、オペレーティング システム、ビッグデータ コンポーネント、Google Cloud コネクタを、クラスタにデプロイされるパッケージにバンドルします。 クラスタの作成時にイメージ バージョンを指定しない場合、Dataproc はデフォルトで最新の安定したイメージ バージョンを使用します。

本番環境では、次の gcloud CLI コマンドに示すように、クラスタを特定の major.minor Dataproc イメージ バージョンに関連付けます。

gcloud dataproc clusters create CLUSTER_NAME \
    --region=region \
    --image-version=2.0

Dataproc は、major.minor バージョンを最新のサブマイナー バージョンに解決します(2.02.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 が args4jspark-sql に依存し、args4j がジョブに固有のものであり、spark-sql がクラスタレベルの依存関係である場合、ジョブの uber jar に args4j をバンドルします。

初期化アクションの場所を制御する

初期化アクションにより、Dataproc クラスタの作成時にスクリプトを自動的に実行したり、コンポーネントをインストールしたりできます(dataproc-initialization-actions 一般的な Dataproc 初期化アクションに関する GitHub リポジトリをご覧ください)。 本番環境でクラスタ初期化アクションを使用する場合は、公開リポジトリから初期化スクリプトをソーシングするのではなく、Cloud Storage に初期化スクリプトをコピーします。これにより、他のユーザーによって変更される可能性のある初期化スクリプトの実行を回避できます。

Dataproc リリースノートをモニタリングする

Dataproc は、新しいサブマイナー イメージ バージョンを定期的にリリースしています。 Dataproc リリースノートを表示または登録して、Dataproc イメージ バージョンの最新のリリース、その他のお知らせ、変更、修正を確認してください。

ステージング バケットを表示して失敗を調査する

  1. クラスタのステージング バケットを調べて、クラスタとジョブのエラー メッセージを調べます。通常、ステージング バケットの 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
     

  2. 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 コンサルティング サービスは、チームの本番環境デプロイのベスト プラクティスに関するガイダンスも提供します。

追加情報