2

我想为我的 hadoop 作业启用 JMX 监控(不是针对 JobTracker、DataNode 或其他东西,针对实际作业)。我正在寻找一种可能性,我可以从本地机器连接到正在运行作业的主机/集群/节点,jconsole并检索一些监视值。所以我需要远程访问 JMX。

我尝试向MAPRED_MAP_TASK_JAVA_OPTSand添加一些选项MAPRED_REDUCE_TASK_JAVA_OPTS

  1. 添加 -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,我都会收到“表中没有这样的对象”错误。

  2. -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?这个问题与我刚刚提出的另一个问题有关,该问题试图在另一个层面上提出问题。

4

3 回答 3

1

我认为您的问题的答案可以在这里找到: https ://forums.oracle.com/message/4798165#4798165

基本上,您可以使用 -Dcom.sun.management.jmxremote.port=0 然后检查日志以找到 JMX 连接器服务器正在侦听的端口。

这样做的技巧之一是您必须将根记录器的日志级别更改为 CONFIG。根据集群的配置和访问级别,可能很难修改 logging.properties 文件来执行此操作。

另一种方法是指定 java.util.logging.config.class 指向您自己的类来进行日志配置。您可以轻松地使用您的代码分发这样的类。那么在不访问本地文件系统的情况下应该很容易更改根日志级别。

我还没有在 Hadoop 集群上实际测试过这种方法,但我希望它应该可以工作。

于 2013-10-25T17:27:59.070 回答
0

你必须相应地设置你的 /etc/hadoop/hadoop-env.sh :

http://theholyjava.wordpress.com/2012/09/21/enabling-jmx-monitoring-for-hadoop-and-hive/

但是,我想知道这是否是最好的方法:如果你想观察特定的行为,你最好隔离一个特定的输入文件并针对本地伪集群进行调试,如果你想要系统指标,你可以这样做比给 Ganglia 一个外观更糟糕,因为它已经内置在 hadoop 中:

http://wiki.apache.org/hadoop/GangliaMetrics

于 2013-07-23T14:46:12.957 回答
0

对于那些仍在寻找答案的人,设置MAPRED_MAP_TASK_JAVA_OPTS配置实际上不起作用。相反,您必须在程序驱动程序(Runner)上设置此配置,以便将其传播到映射器/减速器:

configuration.set("mapreduce.map.java.opts", "-Xmx1600m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8008");

同样,对于 reducer,您可以将变量设置为mapreduce.reduce.java.opts.

看看它是否有效。只需登录其中一台机器并运行ps aux | grep 8008以查看 JMX 端口是否设置正确。

于 2020-02-05T15:41:50.190 回答