Dataproc 永続履歴サーバー

概要

Dataproc クラスタを削除した後、ユーザーは多くの場合、診断やその他の目的でジョブ履歴ファイルを確認します。Dataproc の永続履歴サーバー(PHS)には、アクティブおよび削除された Dataproc クラスタで実行されているジョブのジョブ履歴を表示する UI があります。

永続履歴サーバーは単一ノードの Dataproc クラスタ上で実行され、Cloud Storage にジョブ履歴ファイルを保存してアクセスし、MapReduce、Spark、Pig のジョブをサポートします。この機能は、Dataproc イメージ バージョン 1.4-debian10 以降で使用できます。

ジョブクラスタの設定

永続履歴サーバー クラスタがアクセスして表示するジョブログを保存するための Dataproc ジョブクラスタを作成する際は、次のフラグとクラスタ プロパティを指定します。

  • --enable-component-gateway: 必須フラグ コンポーネント ゲートウェイを有効にするには、このフラグを使用する必要があります。
  • dataproc:job.history.to-gcs.enabled: 必要なクラスタ プロパティ。Cloud Storage でジョブ履歴の保存を有効にするには、このプロパティを「true」に設定する必要があります。
  • spark:spark.history.fs.logDirectoryspark:spark.eventLog.dir オプションのクラスタ プロパティ。 これらのフラグはそれぞれ、Spark ジョブ履歴とイベントログを書き込む場所を指定します。使用する場合は、両方のフラグを設定し、同じバケット内のディレクトリを指す必要があります。
    プロパティの例:
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
    
  • mapred:mapreduce.jobhistory.intermediate-done-dirmapred:mapreduce.jobhistory.done-dir: オプションのクラスタ プロパティ。これらのフラグは、それぞれ中間 MapReduce ジョブ履歴ファイルを書き込む Cloud Storage の場所を指定します。使用する場合は、両方のフラグを設定し、同じバケット内のディレクトリを指す必要があります。中間の mapreduce.jobhistory.intermediate-done-dir ロケーションは一時的なストレージです。中間ファイルは、MapReduce ジョブが完了すると mapreduce.jobhistory.done-dir 場所に移動します。
    プロパティの例:
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
    
  1. gcloud dataproc clusters create コマンドを実行してジョブクラスタを作成します。クラスタは 1.4-debian10 以降で作成する必要があります。 注: 読みやすくするために、--property フラグの値は別の行に表示されます。コマンドを実行する際には、すべてのカンマ区切りの --property フラグ値を 1 行で指定する必要があります
    gcloud dataproc clusters create cluster-name \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='dataproc:job.history.to-gcs.enabled=true,
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history,
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
    
gcloud dataproc clusters create cluster-name \
    --region=region \
    --image-version=1.4-debian10 \
    --enable-component-gateway \
    --properties='dataproc:job.history.to-gcs.enabled=true'

上記の簡略化されたコマンドを使用すると、ジョブ履歴ファイルはデフォルトのディレクトリ(/spark-job-history/mapreduce-job-history/done/mapreduce-job-history/intermediate-done)の Dataproc 一時バケット)に保存されます。一時バケットの Cloud Storage の場所は、gcloud dataproc clusters describe cluster-name --region=region コマンドの出力として一覧表示されます。ジョブ履歴ファイルの Cloud Storage の場所は、クラスタの /etc/spark/conf/spark-defaults.conf ファイルと /etc/hadoop/conf/mapred-site.xml ファイルにも一覧表示されます。

ジョブのクラスタ マスターノードに SSH 接続した後の例:

cat /etc/spark/conf/spark-defaults.conf
...
spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history
spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml
...
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value>
</property>

永続履歴サーバーの設定

PHS 単一ノードクラスタを作成するときは、次のフラグとクラスタ プロパティを指定します。

  • --enable-component-gateway: 必須フラグ コンポーネント ゲートウェイを有効にするには、このフラグを使用する必要があります。
  • spark:spark.history.fs.logDirectory: 永続的な Spark ジョブ履歴を有効にするために必要なクラスタ プロパティ。このプロパティは、PHS がジョブクラスタによって書き込まれた Spark ジョブ履歴ログにアクセスする Cloud Storage バケットとディレクトリを指定します(ジョブクラスタの設定をご覧ください)。特定のバケット ディレクトリを指定する代わりに、ワイルドカードとしてアスタリスク(例: gs://bucket-name/*/spark-job-history)を使用すると、PHS サーバーは、指定されたバケット内の複数のディレクトリ(別々のジョブクラスタによって書き込まれたもの)と一致するようになります(ただし、効率性のための考慮事項: パス途中でのワイルドカードの使用をご覧ください)。
  • mapred:mapreduce.jobhistory.read-only.dir-pattern: 永続的な MapReduce ジョブ履歴を有効にするために必要なクラスタ プロパティ。このプロパティは、PHS がジョブクラスタによって書き込まれた MapReduce ジョブ履歴ログにアクセスする Cloud Storage バケット ディレクトリを指定します(ジョブクラスタの設定をご覧ください)。特定のバケット ディレクトリを指定する代わりに、ワイルドカードとしてアスタリスク(例: gs://bucket-name/*/mapreduce-job-history/done)を使用すると、PHS サーバーは、指定されたバケット内の複数のディレクトリ(別々のジョブクラスタによって書き込まれたもの)と一致するようになります(ただし、効率性のための考慮事項: パス途中でのワイルドカードの使用をご覧ください)。
  1. gcloud dataproc clusters create コマンドを実行して、単一ノードの Dataproc PHS クラスタを作成します。
    gcloud dataproc clusters create cluster-name \
        --single-node \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/*/mapreduce-job-history/done'
    

ジョブ履歴ファイルの表示

  1. Cloud Console で PHS 単一ノードの [クラスタの詳細] ページに移動し、[ウェブ インターフェース] タブをクリックします。

  2. [MapReduce ジョブ履歴] または [Spark 履歴サーバー] をクリックすると、MapReduce と Spark ジョブ履歴の UI が表示されます。

    例:

    次のスクリーンショットは、ジョブクラスタの spark.history.fs.logDirectoryspark:spark.eventLog.dir を設定した後にジョブクラスタ-1とジョブクラスタ-2 で実行される Spark ジョブへのリンクを表示する PHS 履歴サーバーの UI を示しています。PHS クラスタの spark.history.fs.logDirectory のロケーションは次のとおりです。

    job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
    job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
    phs-クラスタ gs://example-cloud-storage-bucket/*/spark-job-history