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

AWS EMR MapReduce作业日志转至stdout或syslog的方法咨询

在AWS EMR上将MapReduce作业日志从stderr转移到stdout或syslog的方法

转移至stdout的方案

  • 修改作业代码:如果是自定义Map/Reduce任务,直接将代码中输出到System.err的语句替换为System.out。例如Java作业里,把System.err.println("日志内容")改成System.out.println("日志内容")。
  • 调整YARN配置:
    1. 编辑集群的yarn-site.xml文件,确认yarn.nodemanager.log-aggregation-enable设置为true(EMR默认已开启)。
    2. 添加或修改以下参数,指定Map/Reduce任务的日志输出级别到stdout:
      <property>
          <name>mapreduce.map.log.level</name>
          <value>INFO,stdout</value>
      </property>
      <property>
          <name>mapreduce.reduce.log.level</name>
          <value>INFO,stdout</value>
      </property>
      
    3. 重启YARN服务生效:sudo stop yarn && sudo start yarn

转移至syslog的方案

  • 通过rsyslog转发YARN日志:
    1. 在集群每个节点上编辑/etc/rsyslog.conf,添加监控YARN日志文件的规则(以NodeManager日志为例):
      $InputFileName /var/log/hadoop-yarn/yarn/yarn-nodemanager.log
      $InputFileTag yarn-nodemanager:
      $InputFileStateFile stat-yarn-nodemanager
      $InputFileSeverity info
      $InputFileFacility local0
      $InputRunFileMonitor
      
    2. 重启rsyslog服务:sudo service rsyslog restart
  • 配置日志框架输出到syslog:
    如果作业使用log4j等日志框架,修改对应的配置文件(如log4j.properties),添加syslog输出端:
    log4j.rootLogger=INFO, syslog
    log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
    log4j.appender.syslog.SyslogHost=localhost
    log4j.appender.syslog.Facility=LOCAL0
    log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
    log4j.appender.syslog.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
    
    将该配置文件分发到所有任务节点的hadoop-conf目录下,重启MapReduce服务生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:43:14