ログと設定情報は、クラスタやジョブのトラブルシューティングに役立ちます。ただし、ログファイルと構成ファイルは数が多く、調べるために各ファイルを収集するには時間がかかります。この問題に対処するために、Dataproc クラスタは Google Cloud CLI を使用して特別な diagnose
コマンドをサポートしています。このコマンドによって、重要なシステム、Spark、Hadoop、Dataproc のログが収集されてアーカイブが作成され、クラスタに接続された Cloud Storage バケットにアーカイブがアップロードされます。
Google Cloud CLI の診断コマンドの使用
Google Cloud CLI の diagnose
コマンドを Dataproc クラスタで使用できます(Dataproc と Google Cloud CLI をご覧ください)。
gcloud CLI をインストールして構成したら、次のようにクラスタで gcloud dataproc clusters diagnose
コマンドを実行できます。cluster-name はクラスタの名前に、region はクラスタのリージョン(例: --region=us-central1
)にそれぞれ置き換えます。
gcloud dataproc clusters diagnose cluster-name \ --region=region \ ... other args ...
このコマンドにより、データが格納されたアーカイブ ファイルの Cloud Storage のロケーションが出力されます(診断コマンドの出力に含まれる項目をご覧ください)。アーカイブ ファイルにアクセスしてコピーする方法については、診断で収集されたデータの共有をご覧ください。
マスターノードからの診断スクリプトの実行(省略可)
クラスタがエラー状態であり、Dataproc サーバーからの診断タスクを受け入れられない場合、Google Cloud CLI の診断コマンドが失敗するかタイムアウトする可能性があります。この問題を回避するには、マスターノードに SSH で接続し、診断スクリプトをダウンロードして、マスターノードでローカルにスクリプトを実行します。
gcloud compute ssh hostname
gsutil cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh
診断した tarball はローカルの一時ディレクトリに保存されます。必要に応じて、コマンド出力の手順に従うと、Cloud Storage バケットにアップロードして Google サポートと共有できます。
診断で収集されたデータの共有
diagnose
コマンドで生成されたアーカイブは、次の 2 つの方法で共有できます。
- Cloud Storage からファイルをダウンロードし、ダウンロードしたアーカイブを共有します。
- 他の Google Cloud Platform ユーザーやプロジェクトにファイルへのアクセスを許可するようにアーカイブの権限を変更します。
たとえば、次のコマンドは、test-project
で診断アーカイブに読み取り権限を追加します。
gsutil -m acl ch -g test-project:R path-to-archive
診断コマンドの出力に含まれる項目
diagnose
コマンドでは、クラスタの次の設定ファイル、ログ、出力がアーカイブ ファイルに格納されます。上記のように、アーカイブ ファイルは Dataproc クラスタに関連付けられた Cloud Storage バケットに配置されます。
診断の概要
診断スクリプトは、収集されたデータを自動的に分析し、診断 tarball のルートに 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_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 gcs 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/ |