Dataproc クラスタの診断

「Dataproc クラスタ コマンドの診断の概要 | Google Cloud」

gcloud dataproc clusters diagnose コマンドを実行して、システム、Spark、Hadoop、Dataproc のログ、クラスタ構成ファイル、その他の情報を収集し、検証を行うことや、Google サポートに報告して Dataproc クラスタまたはジョブのトラブルシューティングに役立てることができます。このコマンドは、診断データと概要を Cloud Storage の Dataproc ステージング バケットにアップロードします。

Google Cloud CLI の診断クラスタコマンドを実行する

gcloud dataproc clusters diagnose コマンドを実行して、診断アーカイブ ファイルの場所を作成して出力します。

gcloud dataproc clusters diagnose CLUSTER_NAME \
    --region=REGION \
    OPTIONAL FLAGS ...

注:

  • CLUSTER_NAME: 診断するクラスタの名前。
  • REGION: クラスタのリージョン(例: us-central1)。
  • OPTIONAL FLAGS:

    • --job-ids: このフラグを使用すると、デフォルトのログファイル(特定のジョブ ID のカンマ区切りのリスト用)に加えて、ジョブドライバ、Spark イベント、YARN アプリケーション、Spark Lense の出力ログを収集できます。MapReduce ジョブの場合は、YARN アプリケーション ログのみが収集されます。YARN アプリケーション ログの収集には、YARN ログ集計を有効にする必要があります。

    • --yarn-application-ids: このフラグを使用すると、デフォルトのログファイル(特定の YARN アプリケーション ID のカンマ区切りのリスト用)に加えて、ジョブドライバ、Spark イベント、YARN アプリケーション、Spark Lense の出力ログを収集できます。YARN アプリケーション ログの収集に対して、YARN ログ集計を有効にする必要があります。

    • --start-time--end-time: 両方のフラグを使用して、診断データの収集の期間(%Y-%m-%dT%H:%M:%S.%fZ 形式)を指定します。期間を指定すると、その期間の Dataproc の自動スケーリング ログを収集することもできます(デフォルトでは、診断データには Dataproc の自動スケーリングログが収集されません)。

    • --tarball-accessGOOGLE_DATAPROC_DIAGNOSE 診断 tar ファイルを Google Cloud サポートチームに送信するか、アクセス権を提供するには、このフラグを使用します。また、Google Cloud サポートチームに次のような情報を提供します。

      • 診断 tar ファイルの Cloud Storage パス、または
      • クラスタ構成バケット、クラスタの UUID、診断コマンドのオペレーション ID

クラスタ マスターノードから診断スクリプトを実行します(必要な場合)。

クラスタがエラー状態になり、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 ファイルを Cloud Storage バケットにアップロードする方法の説明と tar ファイルの場所が表示されます。

診断データの共有方法

アーカイブを共有するには:

例: 次のコマンドは、ユーザー jane@gmail.com のアーカイブに読み取り権限を追加します。

gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=user-jane@gmail.com,role=roles/storage.legacyObjectReader

診断の概要とアーカイブ コンテンツ

diagnose コマンドは、診断概要と、クラスタ構成ファイル、ログ、その他のファイルと情報を含むアーカイブ tar ファイルを出力します。アーカイブ tar ファイルは Cloud Storage の Dataproc ステージング バケットに書き込まれます。

診断概要: 診断スクリプトは収集したデータを分析し、診断アーカイブのルートに summary.txt を生成します。この概要には、YARN、HDFS、ディスク、ネットワーク ステータスなどのクラスタのステータスの概要と、潜在的な問題を警告する警告が表示されます。

アーカイブ tar ファイル: 以降のセクションでは、診断アーカイブの tar ファイルに含まれるファイルと情報を一覧表示します。

デーモンとサービスの情報

実行されるコマンド アーカイブ内の場所
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_AGENT_PID}" jstack/agent_${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTO_PID}" jstack/agent_${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVER_PID}" jstack/driver_${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENT_PID}" jinfo/agent_${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTO_PID}" jinfo/agent_${PRESTO_PID}.jstack
jinfo "${JOB_DRIVER_PID}" 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/