镶木地板警告在Amazon EMR上填写Hive MapReduce中的日志

时间:2017-06-28 03:33:32

标签: hive yarn emr parquet tez

我在Tez上的Hive上存放为镶木地板的桌子上运行自定义UDAF。我们的Hive作业在YARN上运行,所有这些都在Amazon EMR中设置。但是,由于我们的镶木地板数据是使用较旧版本的Parquet(1.5)生成的,因此我收到的警告是填写YARN日志并导致磁盘在作业完成之前耗尽空间。

这是警告:

  

PM警告:org.apache.parquet.CorruptStatistics:忽略   统计           因为无法解析created_by(参见PARQUET-251):parquet-mr version

它还会打印堆栈轨道。我一直试图让警告日志无声无息。除了这个警告之外,我已经成功关闭了几乎所有类型的日志。我已尝试使用AWS here概述的AWS配置修改每个Log4j设置文件。

到目前为止我尝试过的事情:

  1. 我在 tez-site.xml 中设置了以下设置(以JSON格式编写它们,因为这是AWS配置所需的)当然,它在实际的实例上采用了正确的XML格式

    "tez.am.log.level": "OFF",
    "tez.task.log.level": "OFF",
    "tez.am.launch.cluster-default.cmd-opts": "-Dhadoop.metrics.log.level=OFF -Dtez.root.logger=OFF,CLA",
    "tez.task-specific.log.level": "OFF;org.apache.parquet=OFF"
    
  2. 我在 mapred-site.xml 上进行了以下设置。这些设置有效地关闭了我的YARN日志中发生的所有日志记录,但有问题的警告除外。

      "mapreduce.map.log.level": "OFF",
      "mapreduce.reduce.log.level": "OFF",
      "yarn.app.mapreduce.am.log.level": "OFF"
    
  3. 我在几乎所有其他 log4j.properties 文件中都有这些设置。我在上一个AWS链接中显示的列表中找到了。

      "log4j.logger.org.apache.parquet.CorruptStatistics": "OFF",
      "log4j.logger.org.apache.parquet": "OFF",
      "log4j.rootLogger": "OFF, console"
    
  4. 老实说,在这一点上,我只想找到某种方式关闭日志并以某种方式运行工作。我已经阅读了类似的问题,比如这个link,他们通过更改log4j设置来解决这个问题,但这适用于Spark,它似乎不适用于Hive / Tez和Amazon。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

好的,所以我最终通过修改每个单个数据节点和EMR中主节点的java logging.properties文件来解决这个问题。就我而言,该文件位于/etc/alternatives/jre/lib/logging.properties

我在bootstrap操作文件中添加了一个shell命令,以自动将以下两行添加到属性文件的末尾:

  

org.apache.parquet.level =严重

     

org.apache.parquet.CorruptStatistics.level = SEVERE

只是想更新,以防其他人遇到同样的问题,因为亚马逊没有正确设置,并且需要大量的试错。