【问题标题】:Spark streaming on YARN executor's logs not availableYARN 执行程序日志上的 Spark 流不可用
【发布时间】:2015-06-26 18:22:16
【问题描述】:

我正在运行以下代码

.map{x => 
    Logger.fatal("Hello World")
    x._2
 }

它是在 YARN 上运行的火花流应用程序。我更新了 log4j 并提供了 spark-submit(使用 --files)。我从日志中看到的 Log4j 配置已加载并应用于驱动程序的日志(我只看到我的日志级别和日志中的模式),但是来自执行程序的日志不可用。我在日志中找不到“Hello Word”。另外,我检查了 ${yarn.nodemanager.log-dirs} 它是空的,看起来很奇怪。我的日志在哪里?

提前谢谢你

【问题讨论】:

    标签: logging apache-spark hadoop-yarn spark-streaming


    【解决方案1】:

    我找到了解决办法,正确的log4j配置必须在申请提交时按如下方式设置:

    --files /opt/spark/conf/log4j.properties
    --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties"
    --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties"
    

    在哪里

    spark.driver.extraJavaOptions   -> sets up log configuration for driver
    spark.executor.extraJavaOptions -> sets up log configuration for executor(s)
    

    【讨论】:

      【解决方案2】:

      根据 Spark 官方文档 (link),YARN 管理日志的方式有两种:

      • 如果开启了日志聚合(使用yarn.log-aggregation-enable config):

      容器日志从本地机器(执行器)中删除,并复制到 HDFS 目录。可以使用yarn logs 命令从集群上的任何位置查看这些日志,方式如下:

      yarn logs -applicationId <app ID>
      
      • 如果日志聚合打开:

      日志在YARN_APP_LOGS_DIR下的每台机器上本地维护,根据Hadoop版本和安装,通常配置为/tmp/logs$HADOOP_HOME/logs/userlogs。根据文档,查看容器的日志需要转到包含它们的主机并查看此目录。

      【讨论】:

      • 在我的情况下,日志聚合已打开,但我无法使用纱线日志或 Web UI 查看我的日志。这很奇怪
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2017-05-28
      • 2018-08-20
      • 1970-01-01
      相关资源
      最近更新 更多