将垃圾收集日志保存到$ {yarn.nodemanager.log-dirs}/application _ $ {appid}/container _ $ {contid}中,用于Hadoop Yarn上的映射器和Reducer

kri*_*ang 9 java garbage-collection hadoop mapreduce hadoop-yarn

我正在尝试为我的映射器和缩减器记录垃圾收集指标.但是我无法让日志进入路径:
${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}

以下是我的mapred-site.xml及其相关属性:

<property> <name>mapreduce.map.java.opts</name> <value>-Xloggc:${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}/gc-@taskid@.log -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xloggc:${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}/gc-@taskid@.log -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value> </property>

但是,尽管有上述配置,但日志并未出现在正确的位置.任何有关此问题的见解都将受到高度赞赏.

kri*_*ang 0

我通过使用属性解决了这个问题: ${yarn.app.container.log.dir}登录${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}目录

所以我使用的完整配置如下:

<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xloggc:${yarn.app.container.log.dir}/gc-@taskid@.log -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xloggc:${yarn.app.container.log.dir}/gc-@taskid@.log -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value>
</property>
Run Code Online (Sandbox Code Playgroud)