You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dataproc Serverless Batch Spark Web UI无法显示Executor日志

Dataproc Batch运行JDBCToBigQuery模板成功,但Spark Web UI Executors标签页无stdout/stderr日志

我在GCP Dataproc Batch中使用JDBCToBigQuery模板运行Spark任务,任务执行成功,但Spark Web UI的Executors标签页里看不到Executor的stdout和stderr日志。之前用EMR Serverless(同样是无服务器架构)时可以正常查看这些日志。

提交任务的命令如下:

gcloud dataproc batches submit spark
    --project PROJECT_ID     \
    --region asia-northeast3    \
    --batch BATCH     \
    --class com.google.cloud.dataproc.templates.main.DataProcTemplate     \
    --version 1.1     \
    --jars file:///usr/lib/spark/external/spark-avro.jar,gs://dataproc-templates-binaries/latest/java/dataproc-templates.jar,gs://MY_BUCKET/mysql-connector-java-8.0.23.jar \
    --subnet SUBNET \
    --service-account SERVICE_ACCOUNT \
    --history-server-cluster CLUSTER \
    -- --template JDBCTOBIGQUERY \
    --templateProperty log.level=ALL \
    --templateProperty jdbctobq.bigquery.location=DATASET.TABLE_ID \
    --templateProperty jdbctobq.jdbc.url=jdbc:mysql://:3306/SCHEMA?user=USER&password=PWD \
    --templateProperty jdbctobq.jdbc.driver.class.name=com.mysql.cj.jdbc.Driver \
    --templateProperty jdbctobq.write.mode=Overwrite \
    --templateProperty jdbctobq.temp.gcs.bucket=gs://MY_BUCKET \
    --templateProperty jdbctobq.sql.file=gs://MYBUCKET/test_dataproc.sql \
    --templateProperty project.id=PROJECT_ID 

解决方法

  • 先确认日志是否已生成
    Dataproc Batch默认会把Executor的stdout/stderr存储到GCS的固定路径:
    gs://dataproc-batch-logs-{你的项目ID}/{区域}/{批处理ID}/executors/
    可以通过GCS控制台或gsutil ls命令检查该路径下是否存在对应Executor的日志文件,如果存在,说明日志已生成,只是Web UI未加载。

  • 提交任务时添加Spark日志配置
    在提交命令的Spark配置段(--之前)添加--properties参数,配置事件日志和Executor日志的存储位置,让历史服务器能读取并在Web UI展示:

    --properties spark.eventLog.enabled=true,spark.eventLog.dir=gs://{你的日志存储桶}/spark-events/,spark.executor.logs.uri=gs://dataproc-batch-logs-{你的项目ID}/asia-northeast3/{你的批处理ID}/executors/
    

    替换其中的占位符为实际的项目ID、日志存储桶和批处理ID。如果需要日志滚动,可额外添加:

    --properties spark.executor.logs.rolling.strategy=time,spark.executor.logs.rolling.time.interval=1h,spark.executor.logs.rolling.maxRetainedFiles=5
    
  • 验证历史服务器权限
    确保--history-server-cluster对应的集群使用的服务账号(或你指定的SERVICE_ACCOUNT)拥有访问GCS日志路径的权限,至少需要storage.objects.get和storage.objects.list权限。

  • 直接从GCS查看日志
    如果Web UI仍无法显示,可直接通过gsutil命令查看日志:

    # 查看某个Executor的stdout
    gsutil cat gs://dataproc-batch-logs-{项目ID}/asia-northeast3/{批处理ID}/executors/{executor-ID}/stdout
    # 查看stderr
    gsutil cat gs://dataproc-batch-logs-{项目ID}/asia-northeast3/{批处理ID}/executors/{executor-ID}/stderr
    

内容的提问来源于stack exchange,提问作者lang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:05:21