gpt4 book ai didi

java - 在 Hadoop 作业中启用 JMX

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:22 25 4
gpt4 key购买 nike

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

我尝试向 MAPRED_MAP_TASK_JAVA_OPTS 添加一些选项和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 连接到 JMX 。端口被打开,但每当我尝试使用 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这里的主要问题:由于映射器/ reducer 可能会在同一节点上运行多次,并且端口不能使用两次,因此第二次启动我的映射器/ reducer 会失败并出现异常。

是否有任何解决方案允许我在 hadoop 作业中使用 JMX?这个问题与the other question有关我只是问哪个试图在另一个层面上阐述问题。

最佳答案

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

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

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

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

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

关于java - 在 Hadoop 作业中启用 JMX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17813385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com