Dataproc クラスタの診断データを表示する

「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 \
      

診断データ

診断データは、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 に保存されます。
  • 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 アプリケーション ログのみが収集されます。

必要に応じて、診断スクリプトを実行します

クラスタがエラー状態にあり、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