本番環境での 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. ステージング バケットの内容を表示するには、gsutil を使用します。

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

追加情報