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 からファイルを読み込むときにデバッグの問題に対処しやすくするには、--driver-log-levels
オプションを指定してジョブを送信して、次のように DEBUG
ログレベルを指定します。
gcloud dataproc jobs submit hadoop ...\
--driver-log-levels com.google.cloud.hadoop.gcsio=DEBUG
エグゼキュータのログレベルを設定する
.../log4j.properties
ファイルを編集または置換するクラスタの初期化アクションで、クラスタノードで Spark、Hadoop、Flink などの OSS コンポーネント エグゼキュータのログレベルを設定できます(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.
ジョブドライバ出力へのアクセス
Cloud Console、Google Cloud CLI、または 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 のステージング バケットまたはクラスタの作成時に指定したバケットに格納されます。以下によって返される Job.driverOutputResourceUri フィールドに、Cloud Storage のジョブドライバ出力へのリンクが示されます。
- jobs.get API リクエスト。
- gcloud dataproc jobs describe job-id コマンド。
$ gcloud dataproc jobs describe spark-pi ... driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput ...