Dataproc は、クラスタとジョブの問題のトラブルシューティングに役立つ次のクラスタ診断データを収集します。
- チェックポイント データ: 有効にすると、Dataproc はクラスタのライフサイクル全体で診断データを収集して更新します。
- スナップショット データ: 実行中のクラスタからクラスタ診断データのスナップショットを収集できます。
チェックポイント データ
チェックポイント データ機能が有効になっている場合、Dataproc はクラスタの作成、クラスタの更新、Dataproc Jobs API オペレーション中に診断データを収集します。Dataproc は、TTL 保持期間が 90 日間の Cloud Storage のクラスタ temp bucket
にデータを保存します。保持期間が終了すると、データは削除されます。
データ収集プロパティを有効にする: クラスタを作成するときに、次のオプションのクラスタ プロパティを含めることが可能です。これらの設定は、作成されたクラスタのチェックポイント診断データの収集にのみ影響します。
- データ収集を有効にする:
dataproc:diagnostic.capture.enabled=true
プロパティを設定すると、クラスタでチェックポイント診断データの収集が有効になります。 - 診断データを共有する:
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
プロパティを設定すると、収集されたチェックポイント診断データが Google Cloud サポートと共有されます。- クラスタの作成後、次のように、 Google Cloud サポートで使用されるサービス アカウントにデータへの読み取りアクセス権を付与することで、診断データを Google Cloud サポートと共有できます。
gcloud storage objects update \ gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \ --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive \
- クラスタの作成後、次のように、 Google Cloud サポートで使用されるサービス アカウントにデータへの読み取りアクセス権を付与することで、診断データを Google Cloud サポートと共有できます。
診断データ
診断データは、Cloud Storage の gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/
に書き込まれる次のデータで構成されています。このセクションでは、この場所を診断データフォルダと呼びます。
クラスタノード詳細ログ: Dataproc は次のコマンドを実行して、YARN と HDFS の情報を収集し、Cloud Storage の診断データフォルダの次の場所に書き込みます。
実行されるコマンド 診断フォルダ内の場所 yarn node -list -all
.../nodes/timestamp/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning
.../nodes/timestamp/hdfs-nodes.log
ジョブの詳細: Dataproc は、Dataproc Jobs API を使用して、ジョブの MapReduce ジョブ情報と Spark ジョブログを保存します。このジョブデータは、送信された MR ジョブと Spark ジョブごとに収集されます。
- MapReduce
job.xml
: ジョブ構成設定を含むファイル。.../jobs/JOB_UUID/mapreduce/job.xml
に保存されます。 - Spark イベントログ: デバッグに役立つジョブ実行の詳細。
.../jobs/JOB_UUID/spark/application-id
に保存されます。
- MapReduce
Linux システム情報: Dataproc は次のコマンドを実行して、Cloud Storage の診断データフォルダの次の場所にシステム情報を収集して保存します。
コマンド 診断フォルダ内の場所 sysctl -a
.../system/sysctl.log
cat /proc/sys/fs/file-nr
.../system/fs-file-nr.log
ping -c 1
.../system/cluster-ping.log
cp /etc/hosts
.../system/hosts_entries.log
cp /etc/resolv.conf
.../system/resolv.conf
構成ファイル: Dataproc は、次の構成ファイルを Cloud Storage の診断データフォルダの次の場所に保存します。
含まれる項目 診断フォルダ内の場所 Dataproc のプロパティ .../configs/dataproc/dataproc.properties
`/etc/google-dataproc/` 内のすべてのファイル.../configs/dataproc/
`/etc/hadoop/conf/` 内のすべてのファイル.../configs/hadoop/
`/etc/hive/conf/` 内のすべてのファイル .../configs/hive/
`/etc/hive-hcatalog/conf/` 内のすべてのファイル.../configs/hive-hcatalog/
`/etc/knox/conf/` 内のすべてのファイル .../configs/knox/
`/etc/pig/conf/` 内のすべてのファイル .../configs/pig/
`/etc/presto/conf/` 内のすべてのファイル.../configs/presto/
`/etc/spark/conf/` 内のすべてのファイル.../configs/spark/
`/etc/tez/conf/` 内のすべてのファイル .../configs/tez/
`/etc/zookeeper/conf/` 内のすべてのファイル.../configs/zookeeper/
スナップショット データ
次の gcloud dataproc clusters diagnose
コマンドを実行して、実行中のクラスタから診断データのスナップショットを収集できます。データは、アーカイブ(tar)ファイルとして Cloud Storage の Dataproc ステージング バケットに書き込まれます。
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE
注:
- CLUSTER_NAME: 診断するクラスタの名前。
- REGION: クラスタのリージョン(
us-central1
など) --tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
このフラグは、Google Cloud サポートに診断 tar ファイルへのアクセス権を提供します。診断 tar ファイルの Cloud Storage パスを Google Cloud サポートに提供します。Additional flags:
--start-time
と--end-time
: 両方のフラグを使用して、診断データの収集に使用する期間を%Y-%m-%dT%H:%M:%S.%fZ
形式で指定します。期間を指定すると、その期間の Dataproc の自動スケーリング ログを収集することもできます(デフォルトでは、診断スナップショット データには Dataproc の自動スケーリングログが収集されません)。次のいずれかのフラグを使用すると、特定のジョブドライバ、Spark イベント、YARN アプリケーション、Sparklens の出力ログを収集できます。
--job-ids
: ジョブ ID のカンマ区切りリスト--yarn-application-ids
: YARN アプリケーション ID のカンマ区切りリスト- YARN アプリケーション ログを収集するには、YARN ログの集計を有効にする必要があります(
yarn.log-aggregation-enable=true
)。 - MapReduce ジョブの場合、YARN アプリケーション ログのみが収集されます。
- YARN アプリケーション ログを収集するには、YARN ログの集計を有効にする必要があります(
必要に応じて、診断スクリプトを実行します
クラスタがエラー状態にあり、Dataproc サーバーからの診断タスクを受け入れられない場合、gcloud dataproc clusters diagnose
コマンドが失敗するかタイムアウトすることがあります。診断コマンドを実行する代わりに、SSH を使用してクラスタ マスターノードに接続し、診断スクリプトをダウンロードして、マスターノードでスクリプトをローカルに実行することもできます。
gcloud compute ssh HOSTNAME
gcloud storage cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh
診断アーカイブの tar ファイルはローカル ディレクトリに保存されます。コマンドの出力には、tar ファイルの場所と、tar ファイルを Cloud Storage バケットにアップロードする手順が表示されます。
診断スナップショット データ
クラスタ スナップショット データには、診断の概要と複数のアーカイブ セクションが含まれています。
診断の概要: アーカイブ ファイルには、アーカイブのルートにある summary.txt
が含まれています。YARN、HDFS、ディスク、ネットワーキングのステータスなど、クラスタのステータスの概要が表示されます。また、潜在的な問題を警告する警告も表示されます。
アーカイブ セクション: アーカイブ ファイルには、次のアーカイブ ファイルの場所に出力される次の情報が含まれています。
デーモンとサービスの情報
実行されるコマンド アーカイブ内の場所 yarn node -list -all
/system/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning
/system/hdfs-nodes.log
hdfs dfs -du -h
/system/hdfs-du.log
service --status-all
/system/service.log
systemctl --type service
/system/systemd-services.log
curl "http://${HOSTNAME}:8088/jmx"
/metrics/resource_manager_jmx
curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps"
/metrics/yarn_app_info
curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes"
/metrics/yarn_node_info
curl "http://${HOSTNAME}:9870/jmx"
/metrics/namenode_jmx
JVM の情報
実行されるコマンド アーカイブ内の場所 jstack -l "${DATAPROC_AGENTPID}"
jstack/agent${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTOPID}"
jstack/agent${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVERPID}"
jstack/driver${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENTPID}"
jinfo/agent${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTOPID}"
jinfo/agent${PRESTO_PID}.jstack
jinfo "${JOB_DRIVERPID}"
jinfo/agent${JOB_DRIVER_PID}.jstack
Linux システムの情報
実行されるコマンド アーカイブ内の場所 df -h
/system/df.log
ps aux
/system/ps.log
free -m
/system/free.log
netstat -anp
/system/netstat.log
sysctl -a
/system/sysctl.log
uptime
/system/uptime.log
cat /proc/sys/fs/file-nr
/system/fs-file-nr.log
ping -c 1
/system/cluster-ping.log
アイテムが含まれています アーカイブ内の場所 ファイル名に次の接頭辞が付いた /var/log
のすべてのログ:
cloud-sql-proxy
dataproc
druid
gcdp
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
ファイルはアーカイブの logs
フォルダに配置され、元のファイル名が保持されます。クラスタ内の各ノード(マスターとワーカー)の Dataproc ノード起動ログ。 ファイルはアーカイブの node_startup
フォルダに配置されます。このフォルダには、クラスタ内のマシンごとに個別のサブフォルダが含まれています。journalctl -u google-dataproc-component-gateway
からのコンポーネント ゲートウェイのログ/logs/google-dataproc-component-gateway.log
構成ファイル
含まれる項目 アーカイブ内の場所 VM メタデータ /conf/dataproc/metadata
/etc/environment
の環境変数/conf/dataproc/environment
Dataproc のプロパティ /conf/dataproc/dataproc.properties
/etc/google-dataproc/
内のすべてのファイル/conf/dataproc/
/etc/hadoop/conf/
内のすべてのファイル/conf/hadoop/
/etc/hive/conf/
内のすべてのファイル/conf/hive/
/etc/hive-hcatalog/conf/
内のすべてのファイル/conf/hive-hcatalog/
/etc/knox/conf/
内のすべてのファイル/conf/knox/
/etc/pig/conf/
内のすべてのファイル/conf/pig/
/etc/presto/conf/
内のすべてのファイル/conf/presto/
/etc/spark/conf/
内のすべてのファイル/conf/spark/
/etc/tez/conf/
内のすべてのファイル/conf/tez/
/etc/zookeeper/conf/
内のすべてのファイル/conf/zookeeper/
アーカイブ ファイルを共有する
アーカイブ ファイルを Google Cloud サポートまたはユーザーと共有して、クラスタまたはジョブの問題のトラブルシューティングを依頼できます。
アーカイブ ファイルを共有するには:
- Cloud Storage からアーカイブ ファイルをコピーし、ダウンロードしたアーカイブを共有します。または
他の Google Cloud ユーザーやプロジェクトにファイルへのアクセスを許可するようにアーカイブの権限を変更します。
例: 次のコマンドは、プロジェクト
test-project
のオーナーにアーカイブの読み取り権限を付与します。gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=project-owners-test-project,role=READER