Dataproc는 클러스터 및 작업 문제 해결에 도움이 되는 다음과 같은 클러스터 진단 데이터를 수집합니다.
- 체크포인트 데이터: 사용 설정되었으면 Dataproc가 클러스터 수명 주기 전반에 걸쳐서 진단 데이터를 수집하고 업데이트합니다.
- 스냅샷 데이터: 실행 중인 클러스터에서 클러스터 진단 데이터 스냅샷을 수집할 수 있습니다.
체크포인트 데이터
체크포인트 데이터 기능이 사용 설정되었으면 Dataproc이 클러스터 만들기, 클러스터 업데이트, Dataproc Jobs API 작업을 수행하는 동안 진단 데이터를 수집합니다. Dataproc은 Cloud Storage의 클러스터 temp bucket
클러스터에서 데이터를 저장하며, TTL 보관 기간은 90일입니다. 보관 기간이 끝나면 데이터가 삭제됩니다.
데이터 수집 속성 사용 설정: 클러스터를 만들 때 다음과 같은 선택적인 클러스터 속성을 포함할 수 있습니다. 생성된 클러스터에서만 체크포인트 진단 데이터 수집에 영향을 줍니다.
- 데이터 수집 사용 설정:
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은 다음 명령어를 실행하여 Cloud Storage의 진단 데이터 폴더에 있는 다음 위치에 대해 YARN 및 HDFS 정보를 수집 및 기록합니다.
실행된 명령 진단 폴더 내 위치 yarn node -list -all
.../nodes/timestamp/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning
.../nodes/timestamp/hdfs-nodes.log
작업 세부정보: Dataproc은 Dataproc Jobs API를 사용해서 작업에 대한 맵리듀스 작업 정보 및 Spark 작업 로그를 저장합니다. 이러한 작업 데이터는 제출된 각 MR 및 Spark 작업에 대해 수집됩니다.
- 맵리듀스
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
명령어를 실행하여 실행 중인 클러스터에서 진단 데이터 스냅샷을 수집할 수 있습니다. 데이터는 Cloud Storage의 Dataproc 스테이징 버킷에 아카이브(tar) 파일로 기록됩니다.
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE
참고:
- CLUSTER_NAME: 진단할 클러스터의 이름입니다.
- REGION: 클러스터의 리전입니다(예:
us-central1
). --tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
이 플래그는 진단 tar 파일에 대한 액세스 권한을 Google Cloud 지원팀에 제공합니다. 진단 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
)해야 합니다. - 맵리듀스 작업의 경우 YARN 애플리케이션 로그만 수집됩니다.
- YARN 애플리케이션 로그를 수집하려면 YARN 로그 집계를 사용 설정(
필요한 경우 진단 스크립트 실행
클러스터가 오류 상태이면 gcloud dataproc clusters diagnose
명령어가 실패하거나 시간이 초과될 수 있으며 Dataproc 서버의 진단 태스크를 수락할 수 없습니다. 진단 명령어를 실행하는 대신 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