我想为我的 hadoop 作业启用 JMX 监控(不是针对 JobTracker、DataNode 或其他东西,针对实际作业)。我正在寻找一种可能性,我可以从本地机器连接到正在运行作业的主机/集群/节点,jconsole
并检索一些监视值。所以我需要远程访问 JMX。
我尝试向MAPRED_MAP_TASK_JAVA_OPTS
and添加一些选项MAPRED_REDUCE_TASK_JAVA_OPTS
:
添加
-Dcom.sun.management.jmxremote.authenticate=fals-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Djava.net.preferIPv4Stack=true
对我没有帮助,因为我不知道如何使用jconsole
. 一个端口被打开,但每当我尝试使用 连接时jconsole
,我都会收到“表中没有这样的对象”错误。-Dcom.sun.management.jmxremote.authenticate=fals-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.port=1412
确实按预期工作:我可以hostname:1412
使用jconsole
. 这里的主要问题:由于 mapper/reducer 可能在同一个节点上运行多次并且端口不能被使用两次,所以我的 mapper/reducer 第二次启动失败并出现异常。
是否有任何解决方案允许我在 hadoop 作业中使用 JMX?这个问题与我刚刚提出的另一个问题有关,该问题试图在另一个层面上提出问题。