작업 드라이버 출력

gcloud 명령줄 도구, Google Cloud Console 또는 Cloud Dataproc REST API를 사용하여 Dataproc 클러스터에서 작업을 쉽게 제출, 모니터링, 제어할 수 있습니다. 이러한 메커니즘 중 하나를 사용하여 작업을 제출하면 Cloud Dataproc은 작업에서 드라이버(콘솔) 출력을 자동으로 수집하여 사용자에게 제공합니다. 즉, 작업 실행 중 클러스터에 대한 연결을 유지하거나 복잡한 로그를 조사할 필요 없이 드라이버 출력을 빠르게 검토할 수 있습니다.

로깅 구성하기

기본적으로 Cloud Dataproc은 드라이버 프로그램에 기본 로깅 수준WARN를 사용합니다. 명령줄을 사용할 때 --driver-log-levels 옵션과 함께 작업을 제출하면 이 설정을 조정할 수 있습니다.

특수한 root 패키지가 루트 로거 수준을 제어합니다. 예:

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels root=FATAL,com.example=INFO

각 작업에 대해 보다 상세한 수준에서 로깅을 설정할 수 있습니다. 예를 들어 Cloud Storage에서 파일을 읽을 때 디버깅 문제를 해결하려면 다음과 같이 DEBUG 로그 수준을 지정하여 --driver-log-levels 옵션으로 작업을 제출할 수 있습니다.

gcloud dataproc jobs submit hadoop ...\
  --driver-log-levels com.google.cloud.hadoop.gcsio=DEBUG

Spark 실행자 로그 수준

/etc/spark/conf/log4j.properties 파일을 수정하거나 대체하는 클러스터 초기화 작업을 사용하여 클러스터 노드에서 Spark 실행자 로그 수준을 설정할 수 있습니다(Apache Log4j 2도 참조).

샘플 /etc/spark/conf/log4j.properties 파일:

# Set everything to be logged to the console.
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c: %m%n

# Settings to quiet third party logs.
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

# Reduce verbosity for other core classes.
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter=WARN
log4j.logger.org.apache.hadoop.conf.Configuration.deprecation=WARN
log4j.logger.org.spark-project.jetty.server.handler.ContextHandler=WARN

# Spark 2.0 specific output.
log4j.logger.org.spark_project.jetty.server.handler.ContextHandler=WARN.

다른 오픈소스 구성요소에는 유사한 log4j.properties 파일이 있으며, 이 파일을 수정하거나 초기화 작업으로 교체하여 로그 출력을 제어할 수 있습니다.

작업 드라이버 출력에 액세스

Cloud Console, gcloud 명령줄 도구 또는 Cloud Storage를 사용하여 Cloud Dataproc 작업 드라이버 출력에 액세스할 수 있습니다.

gcloud 명령어

gcloud dataproc jobs submit 명령으로 작업을 제출하면 작업의 드라이버 출력이 콘솔에 표시됩니다. 작업 ID를 gcloud dataproc jobs wait 명령에 전달하여 이후에 다른 컴퓨터나 새 창에서 드라이버 출력을 '다시 결합'할 수 있습니다. 작업 ID는 5c1754a5-34f7-4553-b667-8a1199cb9cab와 같은 GUID입니다. 예를 들면 다음과 같습니다.

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Console

작업 드라이버 출력을 보려면 프로젝트의 Dataproc 작업 섹션으로 이동한 후 작업 ID를 클릭하여 작업 출력을 확인합니다.

작업이 실행 중이면 새로운 콘텐츠를 사용하여 작업 드라이버 출력이 주기적으로 새로고침됩니다.

Cloud Storage

작업 드라이버 출력은 Cloud Storage에서 스테이징 버킷 또는 클러스터를 만들 때 지정된 버킷에 저장됩니다. Cloud Storage에서 작업 드라이버 출력에 대한 링크는 다음으로 반환되는 Job.driverOutputResourceUri 필드에 제공됩니다.

  • jobs.get API 요청
  • gcloud dataproc jobs describe job-id 명령어
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...