Dataproc ジョブとクラスタのログは、Cloud Logging で表示、検索、フィルタ、アーカイブを行えます。
費用については、Google Cloud Observability の料金をご覧ください。
ログの保持期間については、ログの保持期間をご覧ください。
すべてのログを無効にする、または Logging からログを除外するには、ログの除外をご覧ください。
Logging から Cloud Storage、BigQuery、Pub/Sub にログを転送するには、ルーティングとストレージの概要をご覧ください。
コンポーネントのロギングレベル
クラスタを作成するときに、Spark、Hadoop、Flink などの Dataproc コンポーネントのロギングレベルを、コンポーネント固有の 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 のロギングレベルを設定するには、spark-log4j:
接頭辞を使用します。
例:
log4j.logger.org.apache.spark
を設定する Spark 3.1 を使用する Dataproc イメージ バージョン 2.0。gcloud dataproc clusters create ... \ --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
例:
logger.sparkRoot.level
を設定する Spark 3.3 を使用する Dataproc イメージ バージョン 2.1。gcloud dataproc clusters create ...\ --properties spark-log4j:logger.sparkRoot.level=debug
ジョブドライバのロギングレベル
Dataproc はジョブドライバ プログラムに対してデフォルトのロギングレベル 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
ロガーレベルを WARN
に、com.example
ロガーレベルを INFO
に設定します。
gcloud dataproc jobs submit hadoop ...\ --driver-log-levels root=WARN,com.example=INFO
Spark エグゼキュータのロギングレベル
Spark エグゼキュータのロギングレベルを構成するには:
log4j 構成ファイルを準備し、Cloud Storage にアップロードする
。ジョブを送信するときに、構成ファイルを参照します。
例:
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.configuration
内の file:<name>
として参照されるジョブのローカル作業ディレクトリにダウンロードします。
Logging の Dataproc ジョブのログ
ロギングで Dataproc ジョブドライバのログを有効にする方法については、Dataproc ジョブの出力とログをご覧ください。
Logging のジョブのログにアクセスする
Dataproc のジョブログにアクセスするには、Logs Explorer、gcloud logging コマンド、または Logging API を使用します。
コンソール
Cloud Dataproc ジョブリソースの下に、Dataproc ジョブドライバと 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 の Dataproc クラスタログ
Dataproc では、次の Apache Hadoop、Spark、Hive、Zookeeper などの Dataproc クラスタログを Cloud Logging にエクスポートします。
ログタイプ | ログ名 | 説明 |
---|---|---|
マスター デーモンのログ | hadoop-hdfs hadoop-hdfs-namenode hadoop-hdfs-secondary namenode hadoop-hdfs-zkfc hadoop-yarn-resourcemanager hadoop-yarn-timelineserver hive-metastore hive-server2 mapred-mapred-historyserver zookeeper |
Journal node HDFS namenode HDFS secondary namenode Zookeeper failover controller YARN resource manager YARN timeline server Hive metastore Hive server2 Mapreduce job history server Zookeeper server |
ワーカー デーモンのログ |
hadoop-hdfs-datanode hadoop-yarn-nodemanager |
HDFS datanode YARN nodemanager |
システムログ | autoscaler google.dataproc.agent google.dataproc.startup |
Dataproc オートスケーラー ログ Dataproc エージェント ログ Dataproc 起動スクリプトログ + 初期化アクションログ |
Cloud Logging でクラスタログにアクセスする
Dataproc クラスタのログにアクセスするには、Logs Explorer、gcloud logging コマンド、または Logging API を使用します。
Console
次のクエリを実行して、ログ エクスプローラでクラスタログを表示します。
- リソース:
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 にログを書き込むには、Dataproc VM サービスアカウントに logging.logWriter
ロール IAM ロールが必要です。デフォルトの Dataproc サービス アカウントは、このロールを持っています。カスタム サービス アカウントを使用する場合は、このロールをサービス アカウントに割り当てる必要があります。
ログの保護
Logging のログは保存時にデフォルトで暗号化されます。顧客管理の暗号鍵(CMEK)を有効にして、ログを暗号化できます。CMEK のサポートの詳細については、ログルーター データを保護する鍵を管理すると Logging ストレージ データを保護する鍵を管理するをご覧ください。