JMX Port Monitoring for Cloudera CDH4

本文介绍如何通过配置 Hadoop 的 JMX 选项实现远程监控 NameNode 的状态,并提供了具体的命令示例。此外,还介绍了如何查询 NameNode 的详细信息,包括线程数量、磁盘使用情况等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

By default, JMX info is only accessible via the JMX JSON servet (https://issues.apache.org/jira/browse/HDFS-2083). For example, you can query the NameNode status via:

curl -i http://n1.example.com:50070/jmx

 or be more specifically:

curl -i http://n1.example.com:50070/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo

 or use your browser as an alternative. The output of the last query is:

HTTP/1.1 200 OK
Cache-Control: no-cache
Expires: Mon, 08 Jul 2013 14:56:16 GMT
Date: Mon, 08 Jul 2013 14:56:16 GMT
Pragma: no-cache
Expires: Mon, 08 Jul 2013 14:56:16 GMT
Date: Mon, 08 Jul 2013 14:56:16 GMT
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Server: Jetty(6.1.26.cloudera.2)

{
  "beans" : [ {
    "name" : "Hadoop:service=NameNode,name=NameNodeInfo",
    "modelerType" : "org.apache.hadoop.hdfs.server.namenode.FSNamesystem",
    "Threads" : 65,
    "Total" : 78674993973,
    "ClusterId" : "cluster50",
    "BlockPoolId" : "BP-1455653694-192.168.1.201-1373100840050",
    "Used" : 219303936,
    "PercentUsed" : 0.2787467,
    "PercentRemaining" : 84.45627,
    "Version" : "2.0.0-cdh4.3.0, r48a9315b342ca16de92fcc5be95ae3650629155a",
    "Free" : 66445963264,
    "Safemode" : "",
    "UpgradeFinalized" : true,
    "NonDfsUsedSpace" : 12009726773,
    "BlockPoolUsedSpace" : 219303936,
    "PercentBlockPoolUsed" : 0.2787467,
    "TotalBlocks" : 228,
    "TotalFiles" : 385,
    "NumberOfMissingBlocks" : 0,
    "LiveNodes" : "{\"n3.example.com\":{\"numBlocks\":228,\"usedSpace\":73142272,\"lastContact\":2,\"capacity\":26224997991,\"nonDfsUsedSpace\":3542431335,\"adminState\":\"In Service\"},\"n2.example.com\":{\"numBlocks\":223,\"usedSpace\":73080832,\"lastContact\":1,\"capacity\":26224997991,\"nonDfsUsedSpace\":3546506855,\"adminState\":\"In Service\"},\"n1.example.com\":{\"numBlocks\":223,\"usedSpace\":73080832,\"lastContact\":0,\"capacity\":26224997991,\"nonDfsUsedSpace\":4920788583,\"adminState\":\"In Service\"}}",
    "DeadNodes" : "{}",
    "DecomNodes" : "{}",
    "NameDirStatuses" : "{\"failed\":{},\"active\":{\"/dfs/nn\":\"IMAGE_AND_EDITS\"}}"
  } ]

 

 

You can also configure hadoop-env.sh (usually located in /etc/hadoop/..., for example, the mapreduce1 configure file path is /etc/hadoop/conf.cloudera.hdfs1) in CDH4, update HADOOP_NAMENODE_OPTS with 

-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.password.file=$HADOOP_CONF_DIR/jmxremote.password
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8004

 Then connect to the JMX server at port 8004 with JConsole, VisualVM or use the built-in JMXGet tool as well.

[root@n1 conf.cloudera.hdfs1]# hadoop org.apache.hadoop.hdfs.tools.JMXGet --help
usage: jmxget options are:
 -help                           print help
 -localVM <VM's connector url>   connect to the VM on the same machine;
                                 use:
                                 jstat -J-Djstat.showUnsupported=true
                                 -snap <vmpid> | grep
                                 sun.management.JMXConnectorServer.address
                                 to find the url
 -port <mbean server port>       specify mbean server port, if missing -
                                 it will try to connect to MBean Server in
                                 the same VM
 -server <mbean server>          specify mbean server (localhost by
                                 default)
 -service <NameNode|DataNode>    specify jmx service (NameNode by default)

 

Above is the configuration of NameNode, you can configure the JMX monitoring to SecondaryNameNode, DataNode, JobTracker, TaskTracker just like the NameNode. See this blog post.

<think>嗯,用户问的是JMX端口,我需要先回忆一下JMX的相关知识。JMX是Java管理扩展,主要用于监控和管理Java应用。端口部分的话,JMX通常需要配置端口号,让远程客户端连接。 首先,JMX端口默认是什么?可能没有默认端口,需要手动配置?或者在某些情况下有默认值?比如JConsole连接本地的时候可能不需要显式配置端口,但远程连接就需要。常见的配置参数是-Dcom.sun.management.jmxremote.port=端口号,这个参数指定了JMX远程连接的端口。 接下来,用户可能想知道JMX端口的作用,为什么需要配置。JMX允许通过MBean服务器暴露管理和监控的接口,端口用于远程访问这些接口。比如监控应用的内存使用、线程状态、CPU负载等。 然后,可能需要说明如何启用JMX远程管理。除了端口,还需要设置其他参数,比如禁用SSL、禁用认证,虽然不推荐在生产环境这样做,但测试时可能用到。例如:-Dcom.sun.management.jmxremote.ssl=false 和 -Dcom.sun.management.jmxremote.authenticate=false。 另外,安全方面的问题也需要提及。开放JMX端口可能带来安全风险,所以需要确保有适当的防火墙规则和认证机制。可能还要提到JMX over RMI和JMXMP的区别,但大部分情况下使用的是RMI,所以端口可能涉及RMI注册端口和随机连接端口,这时候可能需要配置额外的参数来控制。 还有,JMX端口配置的例子,比如启动Java应用时添加JVM参数。例如: java -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar MyApp.jar 另外,工具方面,JConsole和VisualVM可以通过JMX端口连接,用户可能需要知道如何使用这些工具进行连接。 可能用户的问题还涉及端口冲突或者无法连接的情况,这时候需要检查防火墙设置,端口是否正确开放,以及所有必要的参数是否配置正确。比如,如果主机名绑定问题,可能需要设置-Djava.rmi.server.hostname为正确的IP地址。 总结下来,回答的结构应该是先介绍JMX的作用,然后说明JMX端口的作用,如何配置,安全注意事项,以及常见问题解决方法。需要分步骤解释,确保用户能够理解配置过程和相关概念。</think>### JMX Port 介绍 #### 1. **JMX 是什么?** - **JMX(Java Management Extensions)** 是 Java 平台提供的管理和监控工具框架。它允许开发者通过暴露 **MBean(Managed Bean)** 接口,实现应用运行时状态(如内存、线程、CPU 使用率等)的动态监控与管理。 --- #### 2. **JMX Port 的作用** - JMX Port 是用于 **远程连接** 到 JVM 的端口。通过该端口,监控工具(如 JConsole、VisualVM)或程序可以与目标 Java 进程通信,获取性能数据或执行管理操作。 - **本地连接** 通常无需显式配置端口,但 **远程连接** 必须指定端口。 --- #### 3. **配置 JMX Port** - 启动 Java 应用时,通过 JVM 参数启用 JMX 远程访问: ```bash java -Dcom.sun.management.jmxremote.port=9999 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -jar MyApp.jar ``` - **`port=9999`**: 指定 JMX 监听端口(例如 `9999`)。 - **`ssl=false`**: 禁用 SSL(仅测试环境建议)。 - **`authenticate=false`**: 禁用认证(生产环境需启用)。 --- #### 4. **安全注意事项** - **风险**:开放 JMX 端口可能导致未授权访问(如敏感信息泄露、进程控制)。 - **建议**: 1. 启用 SSL 加密通信。 2. 配置用户名/密码认证。 3. 使用防火墙限制访问来源 IP。 --- #### 5. **常见问题** - **无法连接 JMX 端口?** - 检查防火墙是否放行端口。 - 确认 JVM 参数正确(尤其是 `java.rmi.server.hostname` 需绑定公网 IP)。 - **端口冲突?** - 更换为未占用的端口。 --- #### 6. **工具示例** - **JConsole**:内置 Java 监控工具,支持通过 JMX Port 连接。 - **VisualVM**:功能更强大的性能分析工具。 - **Prometheus + JMX Exporter**:将 JMX 数据导出为监控指标。 --- ### 总结 JMX Port 是远程管理 Java 应用的关键入口,需谨慎配置安全策略。通过合理使用 JMX,可实现高效的运维监控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值