Managed Service for Apache Spark ログ

Managed Service for Apache Spark ジョブとクラスタのログは、Cloud Logging で表示、検索、フィルタ、アーカイブを行えます。

コンポーネントのロギングレベル

クラスタを作成するときに、Spark、Hadoop、Flink などの Managed Service for Apache Spark コンポーネントのロギングレベルを、コンポーネント固有の log4j クラスタ プロパティhadoop-log4j など)で設定します。クラスタベースのコンポーネントのロギングレベルは、YARN ResourceManager などのサービス デーモンと、クラスタ上で実行されるジョブに適用されます。

Presto コンポーネントなど、コンポーネントで log4j プロパティがサポートされていない場合は、コンポーネントの log4j.properties または log4j2.properties ファイルを編集する初期化アクションを作成します。

ジョブ固有のコンポーネント ロギング レベル: ジョブを送信するときにコンポーネント ロギング レベルを設定することもできます。これらのロギングレベルはジョブに適用され、クラスタの作成時に設定されたロギングレベルよりも優先されます。詳細については、クラスタ プロパティとジョブ プロパティの比較をご覧ください。

Spark コンポーネントと Hive コンポーネントのバージョンのロギングレベル:

Spark 3.3.X と Hive 3.X のコンポーネントでは log4j2 プロパティを使用しますが、以前のバージョンのコンポーネントでは log4j プロパティを使用します(Apache Log4j2 を参照)。spark-log4j: 接頭辞を使用して、クラスタに Spark ロギングレベルを設定します。

ジョブドライバのロギングレベル

Managed Service for Apache Spark はジョブドライバ プログラムに対してデフォルトのロギングレベル INFO を使用します。gcloud dataproc jobs submit --driver-log-levels フラグを使用すると、1 つ以上のパッケージに対してこの設定を変更できます。

例:

Cloud Storage ファイルを読み取る Spark ジョブを送信するときに、DEBUG ロギングレベルを設定します。

gcloud dataproc jobs submit spark ...\
    --driver-log-levels org.apache.spark=DEBUG,com.google.cloud.hadoop.gcsio=DEBUG

例:

root ロガーのレベルを WARNcom.example ロガーのレベルを INFO に設定します。

gcloud dataproc jobs submit hadoop ...\
    --driver-log-levels root=WARN,com.example=INFO

Spark エグゼキュータのロギングレベル

Spark エグゼキュータのロギングレベルを構成するには:

  1. log4j 構成ファイルを準備して Cloud Storage にアップロードする

  2. ジョブを送信するときに、構成ファイルを参照します。

    例:

    gcloud dataproc jobs submit spark ...\
        --file gs://my-bucket/path/spark-log4j.properties \
        --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
    

Spark は、Cloud Storage プロパティ ファイルをジョブのローカル作業ディレクトリ(-Dlog4j.configurationfile:<name> として参照)にダウンロードします。

Logging の Managed Service for Apache Spark ジョブログ

ロギングで Managed Service for Apache Spark ジョブドライバのログを有効にする方法については、Managed Service for Apache Spark ジョブの出力とログをご覧ください。

Logging のジョブのログにアクセスする

Managed Service for Apache Spark のジョブログには、ログ エクスプローラgcloud logging コマンド、または Logging API を使用してアクセスします。

コンソール

Cloud Managed Service for Apache Spark ジョブリソースの下に、Managed Service for Apache Spark ジョブドライバと YARN コンテナのログが一覧表示されます。

例: 次の内容を指定してログ エクスプローラ クエリを実行した後のジョブドライバのログ。

  • リソース: Cloud Dataproc Job
  • ログ名: dataproc.job.driver

例: 次の内容を指定してログ エクスプローラ クエリを実行した後の YARN コンテナログ。

  • リソース: Cloud Dataproc Job
  • ログ名: dataproc.job.yarn.container

gcloud

ジョブのログエントリは、gcloud logging read コマンドを使用して読み取ることが可能です。リソース引数は引用符("...")で囲む必要があります。次のコマンドでは、返されたログエントリをクラスタラベルでフィルタリングします。

gcloud logging read \
    "resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id"

出力例(一部):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

REST API

Logging REST API を使用してログエントリを一覧表示できます(entries.list をご覧ください)。

Logging の Managed Service for Apache Spark クラスタログ

Managed Service for Apache Spark は、次の Apache Hadoop、Spark、Hive、Zookeeper などの Managed Service for Apache Spark クラスタログを Cloud Logging にエクスポートします。

ログタイプ ログ名 説明 メモ
マスター デーモンのログ hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondarynamenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
hadoop-mapred-historyserver
zookeeper
ジャーナル ノード
HDFS namenode
HDFS セカンダリ namenode
Zookeeper フェイルオーバー コントローラ
YARN リソース管理者
YARN タイムライン サーバー
Hive メタストア
Hive サーバー 2
Mapreduce ジョブヒストリ サーバー
Zookeeper サーバー
ワーカー デーモンのログ hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS datanode
YARN nodemanager
システムログ autoscaler
google.dataproc.agent
google.dataproc.startup
Managed Service for Apache Spark オートスケーラー ログ
Managed Service for Apache Spark エージェント ログ
Managed Service for Apache Spark 起動スクリプト ログ + 初期化アクション ログ
拡張(追加)ログ knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
/var/log/ サブディレクトリ内のすべてのログが、次のいずれかに一致する:
knox(gateway-audit.log を含む)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
dataproc:dataproc.logging.extended.enabled=false プロパティを設定すると、クラスタでの拡張ログの収集が無効になります。
VM の syslog syslog
クラスタのマスターノードとワーカーノードの syslog
dataproc:dataproc.logging.syslog.enabled=false プロパティを設定すると、クラスタでの VM syslog の収集が無効になります。

Cloud Logging でクラスタログにアクセスする

Managed Service for Apache Spark クラスタのログにアクセスするには、ログ エクスプローラgcloud logging コマンド、または Logging API を使用します。

コンソール

次のクエリを実行して、ログ エクスプローラでクラスタログを表示します。

  • リソース: Cloud Dataproc Cluster
  • ログ名: log name

gcloud

クラスタのログエントリは、gcloud logging read コマンドを使用して読み取ることが可能です。リソース引数は引用符("...")で囲む必要があります。次のコマンドでは、返されたログエントリをクラスタラベルでフィルタリングします。

gcloud logging read <<'EOF'
    "resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid"
EOF

出力例(一部):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager

REST API

Logging REST API を使用してログエントリを一覧表示できます(entries.list をご覧ください)。

権限

Logging にログを書き込むには、Managed Service for Apache Spark VM サービス アカウントに logging.logWriter IAM ロールが必要です。デフォルトの Managed Service for Apache Spark サービス アカウントには、このロールが付与されています。カスタム サービス アカウントを使用する場合は、このロールをサービス アカウントに割り当てる必要があります。

ログの保護

デフォルトでは、Logging のログは保存時に暗号化されます。顧客管理の暗号鍵(CMEK)を有効にしてログを暗号化できます。CMEK のサポートの詳細については、ログルーター データを保護する鍵を管理するLogging ストレージ データを保護する鍵を管理するをご覧ください。

次のステップ