Ich versuche, Garbage Collection-Messwerte für meine Mapper und Reducer zu protokollieren. Ich kann die Protokolle jedoch nicht in den Pfad einfügen:
${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}
Hier ist, was meine mapred-site.xml mit den relevanten Eigenschaften aussieht:
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xloggc:${yarn.nodemanager.log-dirs}/application_${appid}/container_${contid}/gc-@[email protected] -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-@[email protected] -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value>
</property>
Aber die Protokolle erscheinen trotz der oben genannten Konfigurationen nicht an der richtigen Stelle. Alle Einblicke in dieses Thema würden sehr geschätzt.
Ich habe dieses Problem mithilfe der folgenden Eigenschaft behoben:
${yarn.app.container.log.dir}
, um sich im Verzeichnis $ {yarn.nodemanager.log-dirs} / application _ $ {appid} / container _ $ {contid}
Also die vollständige Konfiguration, die ich verwendet habe, ist wie folgt:
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xloggc:${yarn.app.container.log.dir}/gc-@[email protected] -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-@[email protected] -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintCommandLineFlags</value>
</property>
In Anbetracht der Tatsache, dass die von Ihnen präsentierten Flags ungefähr richtig sind, würde ich vorschlagen, die Flags zu drucken, die der Prozess Java
lädt, wie von der 8472 vorgeschlagen.
Persönlich bin ich nicht mit hadoop vertraut, aber einer meiner ersten Schritte in dem von Ihnen beschriebenen Szenario wäre es, den Wert der verwendeten Variablen zu überprüfen, hauptsächlich ${yarn.nodemanager.log-dirs}
könnte etwas wie: /opt/path to my/app
haben, das könnte Der -Xloggc
-Wert darf nur /opt/path
sein.
Schließlich würde ich vorschlagen, dass Sie einige Tests durchführen, um sicherzustellen, dass die Werte korrekt interpretiert werden:
%Vor%Ich werde versuchen, diese Antwort zu verbessern und später ein bisschen genauer zu beschreiben.
Tags und Links java garbage-collection hadoop mapreduce yarn