【问题标题】:How to suppress INFO messages for spark-sql running on EMR?如何抑制在 EMR 上运行的 spark-sql 的 INFO 消息?
【发布时间】:2014-12-14 02:02:27
【问题描述】:

我正在 EMR 上运行 Spark,如 Run Spark and Spark SQL on Amazon Elastic MapReduce 中所述:

本教程将引导您快速安装和操作 Spark 在 Amazon EMR 上进行大规模数据处理的通用引擎 簇。您还将使用在 Amazon S3 中创建和查询数据集 Spark SQL,并了解如何在 Amazon EMR 集群上监控 Spark 使用 Amazon CloudWatch。

我试图通过编辑$HOME/spark/conf/log4j.properties 来抑制INFO 日志,但无济于事。

输出如下:

$ ./spark/bin/spark-sql
Spark assembly has been built with Hive, including Datanucleus jars on classpath
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/.versions/2.4.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/.versions/spark-1.1.1.e/lib/spark-assembly-1.1.1-hadoop2.4.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2014-12-14 20:59:01,819 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.input.dir.recursive is deprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.max.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.maxsize
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.min.split.size is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize
2014-12-14 20:59:01,825 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1009)) - mapred.min.split.size.per.rack is deprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack

如何抑制上面的 INFO 消息?

【问题讨论】:

  • Spark 的 java 包是什么?
  • 一些进展:做一个./spark/bin/spark-shell --driver-java-options "-Dlog4j.debug" 允许我传递一个JVM 选项并看到它是一个jar 中某处的log4j.properties 文件。做./spark/bin/spark-shell --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties" 似乎工作,虽然这看起来非常笨重

标签: log4j apache-spark emr


【解决方案1】:

如果您知道要禁止新 EMR 集群的日志记录,也可以在创建集群时添加配置选项。

EMR 接受 JSON 形式的配置选项,您可以直接将其输入 AWS 控制台,或在使用 CLI 时通过文件传入。

在这种情况下,为了将日志级别更改为WARN,这里是 JSON:

[
  {
    "classification": "spark-log4j",
    "properties": {"log4j.rootCategory": "WARN, console"}
  }
]

在控制台中,您将在第一个创建步骤中添加:

或者,如果您使用 CLI 创建集群:

aws emr create-cluster <options here> --configurations config_file.json

您可以阅读更多in the EMR documentation

【讨论】:

    【解决方案2】:

    我可以通过根据需要编辑$HOME/spark/conf/log4j.properties 并使用--driver-java-options 调用spark-sql 来做到这一点,如下所示:

    ./spark/bin/spark-sql --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties"
    

    我可以通过在选项中添加-Dlog4j.debug 来验证是否使用了正确的文件:

    ./spark/bin/spark-sql --driver-java-options "-Dlog4j.debug -Dlog4j.configuration=file:///home/hadoop/spark/conf/log4j.properties"
    

    【讨论】:

    • 在 Spark 3 中,日志配置文件位于 /etc/spark/conf.dist/log4j.properties
    【解决方案3】:

    spark-sql --driver-java-options "-Dlog4j.configuration=file:///home/hadoop/conf/log4j.properties"

    cat conf/log4j.properties

    # Set everything to be logged to the console
    log4j.rootCategory=WARN, 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{1}: %m%n
    
    # Settings to quiet third party logs that are too verbose
    log4j.logger.org.eclipse.jetty=WARN
    log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
    log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
    log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2020-10-31
      相关资源
      最近更新 更多