次の Dataproc 診断データ収集機能を利用して、クラスタとジョブの問題をトラブルシューティングできます。
- チェックポイント診断データ: デフォルトでは、Dataproc はクラスタのライフサイクル中にチェックポイント診断データを収集します。
- スナップショット診断データ: 必要に応じて、クラスタ診断データの 1 回限りのスナップショットを収集できます。
チェックポイント診断データの収集
デフォルトでは、Dataproc はクラスタの作成、クラスタの更新、Dataproc ジョブ オペレーション中にチェックポイント診断データを収集します。
チェックポイント データのロケーション
Dataproc は、Cloud Storage のクラスタの一時バケットの次のフォルダ(checkpoint diagnostic data folder
)にチェックポイント診断データを保存します。
gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID
デフォルトのクラスタ一時バケットの TTL 保持期間は 90 日間です。保持期間が終了すると、データは削除されます。クラスタの作成時に、異なる TTL 期間で独自のクラスタ一時バケットを指定できます。
チェックポイント診断データ
クラスタノード詳細ログ: 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/
チェックポイント診断データをサポートと共有する
チェックポイント診断データの Google Cloud サポートとの共有は、次の方法で有効にできます。
クラスタの作成時に共有を有効にする: クラスタを作成するときに、次のオプションのクラスタ プロパティを追加します。
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
このプロパティは、収集されたチェックポイント診断データを Google Cloud サポートと自動的に共有するため、クラスタの作成後に毎回手動で共有する必要はありません。
クラスタの作成後に共有を有効にする: クラスタの作成後に、次のように、 Google Cloud サポートで使用されるサービス アカウントにチェックポイント データへの読み取りアクセス権を付与することで、Google Cloud サポートとチェックポイント データを共有できます。
一時バケットで均一なバケットレベルのアクセスが有効になっている場合は、IAM ポリシー バインディングを追加します。
gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \ --member=serviceAccount:cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
一時バケットでオブジェクト レベルのアクセス制御が有効になっている場合は、次のコマンドを実行してチェックポイント診断データを共有します。
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
チェックポイント診断データの収集を無効にする
クラスタでのチェックポイント診断データの収集を無効にするには、クラスタの作成時に dataproc:diagnostic.capture.enabled=false
を設定します。
スナップショット診断データの収集
次の gcloud dataproc clusters diagnose
コマンドを実行して、実行中のクラスタから診断データのスナップショットを収集できます。データは、アーカイブ(tar)ファイルとして Cloud Storage の Dataproc ステージング バケットに書き込まれます。
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE \ --tarball-gcs-dir=TARBALL_DIR
注:
- CLUSTER_NAME: 診断するクラスタの名前。
- REGION: クラスタのリージョン(
us-central1
など) --tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
このフラグは、Google Cloud サポートに診断 tar ファイルへのアクセス権を提供します。診断 tar ファイルの Cloud Storage パスを Google Cloud サポートに提供します。サポートする tar ファイルを指定する代わりに、クラスタ UUID、diagnose コマンドのオペレーション ID、クラスタ構成バケットの Cloud Storage のロケーションを指定できます。
診断 tar ファイルを特定のディレクトリに書き込む場合は、diagnose コマンドで出力される tar ファイルの完全な Cloud Storage パスを Google Cloud サポートに提供します。
TARBALL_DIR: 省略可。このフラグを使用して、診断 tar ファイルが書き込まれる Cloud Storage ディレクトリを指定できます。このフラグを省略すると、診断 tar ファイルは Dataproc ステージング バケットに書き込まれます。
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