【问题标题】:Dataproc - setting driverLogLevels results in log4j errorDataproc - 设置 driverLogLevels 会导致 log4j 错误
【发布时间】:2018-05-24 15:32:20
【问题描述】:

我正在尝试在 Dataproc (https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#LoggingConfig) 中启动作业时设置驱动程序日志级别。启动是通过使用 dataproc SDK 的 Java 程序完成的。

LoggingConfig loggingConfig = new LoggingConfig();
loggingConfig.put("driverLogLevels", Collections.singletonMap("root", "ERROR"));

com.google.api.services.dataproc.model.SparkJob sparkJob = new com.google.api.services.dataproc.model.SparkJob().setMainClass(mainClass).setJarFileUris(jarFileUris).setArgs(args).setProperties(properties).setLoggingConfig(loggingConfig);

Job job = new Job().setPlacement(new JobPlacement().setClusterName(clusterName)).setSparkJob(sparkJob);

// ommitted irrelevant code

Dataproc dp = new Dataproc.Builder(httpTransport, jsonFactory, credential).setApplicationName(jobName).build();
SubmitJobRequest request = new SubmitJobRequest().setJob(job);
return dp.projects().regions().jobs().submit(googleProject, "global", request).execute();

这启动成功,但没有成功设置 log4j 配置:

log4j:ERROR Could not read configuration file from URL [file:/tmp/[guid]/driver_log4j.properties].
java.io.FileNotFoundException: /tmp/[guid]/driver_log4j.properties (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:557)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.spark.internal.Logging$class.initializeLogging(Logging.scala:117)
    at org.apache.spark.internal.Logging$class.initializeLogIfNecessary(Logging.scala:102)
    at org.apache.spark.deploy.yarn.ApplicationMaster$.initializeLogIfNecessary(ApplicationMaster.scala:736)
    at org.apache.spark.internal.Logging$class.log(Logging.scala:46)
    at org.apache.spark.deploy.yarn.ApplicationMaster$.log(ApplicationMaster.scala:736)
    at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:751)
    at org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala)
log4j:ERROR Ignoring configuration file [file:/tmp/[guid]/driver_log4j.properties].
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

其中 [guid] 是每个作业都不同的 GUID。日志记录是(详细)默认配置。

如何成功设置配置? What is the most elegant and robust way on dataproc to adjust log levels for Spark? 将是一个后备方案,但我宁愿使用一种不会从我下面改变的方法。

【问题讨论】:

    标签: apache-spark google-cloud-dataproc


    【解决方案1】:

    设置日志级别的官方方法是你link中描述的方法。请参阅dataproc docs。

    所以我相信在您的构建器的setArgs(...) 期限内从 java SDK 调用它。因此,在您的情况下,您需要添加:

    args.add("--driver-log-levels");
    args.add("root=ERROR");
    

    像这样:

    args.add("--driver-log-levels");
    args.add("root=ERROR");
    
    com.google.api.services.dataproc.model.SparkJob sparkJob = new com.google.api.services.dataproc.model.SparkJob().setMainClass(mainClass).setJarFileUris(jarFileUris).setArgs(args).setProperties(properties).setLoggingConfig(loggingConfig);
    
    Job job = new Job().setPlacement(new JobPlacement().setClusterName(clusterName)).setSparkJob(sparkJob);
    
    // ommitted irrelevant code
    
    Dataproc dp = new Dataproc.Builder(httpTransport, jsonFactory, credential).setApplicationName(jobName).build();
    SubmitJobRequest request = new SubmitJobRequest().setJob(job);
    return dp.projects().regions().jobs().submit(googleProject, "global", request).execute();
    

    我不明白你所说的这个功能是什么意思,很可能会从你的手下发生变化。这应该是一个稳定的功能。

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 2015-12-16
      • 2013-02-14
      • 2011-06-05
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 2017-01-31
      相关资源
      最近更新 更多