`
xinklabi
  • 浏览: 1586201 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

JMX对Hadoop和HBase的集群监控

 
阅读更多

说到对Hadoop和HBase的集群监控,大家知道的和用的最多的可能还是第三方的监控工具,cacti,ganglia,zabbix之类的。玩的深一些的,会用zenoss之类的。这些工具确实不错,也能发挥很大的作用,但时间长了总感觉监控粒度还是比较粗,不够详细。毕竟是第三方的监控,即便Hadoop自带了ganglia的接口,也还是觉得不够。

 

其实Hadoop本身是带有监控接口的,各公司的发行版还有自己定制的接口,不过可能知道的人就不太多了。这个不详细的看文档和源码一般是找不到的,属于隐藏属性。事实上,我写的EasyHadoop管理界面里面就用到了这个监控的接口,能够对整个集群有一个比较详细的状态监控,目前还在不断扩展。下一步会实现对Java进程的Heap使用的监控,这样对整个集群的性能调优就会起到比较重要作用。

 

其实这个接口特别简单,但是非常详细,也非常方便,就是JMX。

 

Hadoop的http监控端口基本所有人都知道,namenode 50070,jobtracker 50030,datanode 50075,tasktracker 50060。不过当用户访问这些端口的时候,会自动跳转到dfshealth.jsp或者jobtracker.jsp这样的监控页面。jmx的访问很简单,只需要把网页的名字换成jmx就可以了。

例如

http://your_namenode:50070/dfshealth.jsp

的地址替换成

http://your_namenode:50070/jmx

即可,其他如50030,50060等等,也依次类推,HBase的系统信息也可以用这种方法获取。

 

返回值全部是JSON,非常便于自己进行处理。返回的信息也非常详细,内存状态,内存池状态,java堆信息等等。甚至还有操作系统信息,版本,JVM版本信息等等,很全面。

 

但是这个接口获取的JSON往往很大,而且对于某一项的监控,整个抓一串JSON信息就太浪费了。所以,这又是一个隐藏属性了,只在Hadoop源码中可以了解到。源码在src/core/org/apache/hadoop/jmx中。

 

JMXJsonServlet.java的一个public类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public void doGet(HttpServletRequest request, HttpServletResponse response) {
  try {
    // Do the authorization
    if (!HttpServer.hasAdministratorAccess(getServletContext(), request,
        response)) {
      return;
    }
    response.setContentType("application/json; charset=utf8");
    PrintWriter writer = response.getWriter();
    JsonFactory jsonFactory = new JsonFactory();
    JsonGenerator jg = jsonFactory.createJsonGenerator(writer);
    jg.useDefaultPrettyPrinter();
    jg.writeStartObject();
    if (mBeanServer == null) {
      jg.writeStringField("result""ERROR");
      jg.writeStringField("message""No MBeanServer could be found");
      jg.close();
      return;
    }
    String qry = request.getParameter("qry");
    if (qry == null) {
      qry = "*:*";
    }
    listBeans(jg, new ObjectName(qry));
    jg.close();
  catch (IOException e) {
    LOG.error("Caught an exception while processing JMX request", e);
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
  catch (MalformedObjectNameException e) {
    LOG.error("Caught an exception while processing JMX request", e);
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
  }
}

 

从源码中可以看到json的获取可以带有http验证,另外还可以有一个参数叫qry。这个参数的值就是在获取整个长JSON中每个"name"key所对应的名字。也就是,可以用

http://your_tasktracker:50060/jmx?qry=GarbageCollector,name=PS MarkSweep

这种方式来获取关于JVM对内存垃圾回收的处理状态信息。很简单不是吗?

 

在EasyHadoop的Agent中获取HDFS和MR的实时状态监控就是通过JMX的接口,处理代码如下:

 

1
2
3
4
5
6
7
class EasyHadoopHandler:
    def GetJmx(self,host,port,qry):
        url = 'http://'+host+':'+port+'/jmx?qry='+qry
        jmx = urllib.urlopen(url)
        json = jmx.read().replace('\n','')
        jmx.close()
        return json

 

由Central主动发起查询JMX的请求,Agent在获取了相关的监控信息后将json返回给Central,Central再用js将数据进行绘图实时返回给用户。

 

各发行版还有不同的监控接口,例如cloudera版还多加了一个叫metrics也不metrics2的接口。

 

这样来自己做Hadoop的监控,就比光使用cacti和ganglia就详细了许多。HBase也可对60010等端口进行同样的处理,进行监控。

分享到:
评论

相关推荐

    Hbase和Hadoop JMX监控实战

    在本实战中,我们将深入探讨如何利用JMX对HBase和Hadoop进行监控,以确保系统的稳定性和性能。 首先,我们需要理解HBase。HBase是一个基于Google的Bigtable设计的开源NoSQL数据库,它运行在Hadoop之上,提供高度可...

    监控HBase集群

    HBase是一个分布式的NoSQL数据库,监控HBase集群对于确保系统的高可用性和性能非常重要。在这里,我们将讨论如何使用Java代码来实现HBase集群的监控。 监控HBase集群的重要性: 在生产系统中,运维人员需要监控...

    ganglia+hadoop+hbase nagios 学习参考链接

    集成Ganglia和Hadoop/HBase的监控数据到Nagios,可以实现更全面的集群监控。 文档"ganglia安装和监控Hadoop.doc"应该包含了详细的步骤指导,如安装Ganglia组件,配置Ganglia以监控Hadoop集群,以及如何将Nagios与...

    prometheus grafana 基于开源监控apache Hadoop模板大全

    首先,JMX(Java Management Extensions)是Java平台提供的一种标准管理框架,它允许我们对Java应用程序,包括Hadoop组件进行监控和管理。Prometheus通过jmx_exporter这样的插件可以与JMX接口交互,收集Hadoop组件的...

    hbase-0.98.12.1-hadoop1-bin.tar.gz

    HBase提供了丰富的监控工具,如JMX、Web UI,可以实时查看集群状态、Region分布、请求延迟等。针对性能调优,可以调整Region大小、优化数据模型、合理划分RowKey等。 总结,HBase 0.98.12.1是Hadoop1生态中的关键...

    基于HadoopHBase的一淘搜索离线系统PPT课件.pptx

    监控系统采用Ganglia和JMX,确保集群的稳定运行和性能监控。 - **HBase主要数据**:存储的数据包括大规模的电子商务网页库、全网B2C商品信息、全网导购信息(如资讯、问答、论坛、点评等)、淘宝与天猫的商品数据...

    基于hadoop监控的grafana模板

    为了实现这些功能,你需要配置Grafana的数据源(可能是Prometheus或JMX Exporter等),将Hadoop组件的日志和指标数据暴露出来。然后,导入提供的模板文件,调整配置以匹配你的环境。一旦设置完成,Grafana将成为你...

    hbase-2.4.17-bin 安装包

    1. 使用HBase自带的JMX监控工具或第三方监控工具(如Ambari、Grafana)监控HBase集群的性能指标。 2. 定期进行健康检查,排查可能存在的问题,如Region不均、内存溢出等。 3. 对HBase进行定期备份,以防数据丢失。...

    【推荐】大数据时代,你不得不知的Hadoop使用技巧

    例如,使用JMX监控工具监控Hadoop和HBase集群,可以帮助运维人员实时了解集群状态,及时发现并解决问题。 在Hadoop的学习过程中,理解并应用其生态系统中的其他工具也是不可或缺的。例如,ZooKeeper是一个分布式...

    hbase-0.98.12.1-hadoop2-bin.tar.gz

    HBase提供了丰富的监控工具,如JMX、Web UI等,用于查看系统状态、性能指标和日志。根据监控数据,可以进行系统调优,如调整Region大小、优化缓存策略等。 总结,HBase 0.98.12.1与Hadoop 2的结合,为企业提供了...

    HBase官方文档中文版-HBase手册中文版

    1. 监控指标:包括内存使用、磁盘I/O、网络流量等,通过JMX和Hadoop Metrics2提供。 2. 故障处理:Master节点和Region服务器的故障切换,数据的自动恢复。 七、HBase与其他系统集成 1. Hadoop集成:与HDFS、...

    hbase 数据库

    9. **监控与维护**:可以使用HBase提供的JMX监控工具,或者集成Zabbix、Prometheus等第三方监控系统来监控HBase的性能和稳定性。 10. **扩展性**:随着数据的增长,可以通过增加RegionServer节点来横向扩展HBase...

    hbase相关的安装包

    HBase提供了一系列的管理和监控工具,例如HBase Shell用于执行管理命令,HBase Master UI用于监控集群状态,以及JMX服务用于远程监控。管理员应定期检查这些工具以确保系统健康运行。 通过理解并熟练掌握这些知识...

    hbase-0.96.2-hadoop2-bin.tar.gz

    10. **监控与调优**:使用Hadoop的metrics2系统和JMX监控HBase的性能,根据情况调整HBase的配置参数,如内存分配、Region大小等。 以上是关于HBase-0.96.2-hadoop2在CentOS上安装及使用的基本知识,理解并掌握这些...

    apache_hbase_reference_guide.pdf

    HBase 提供了多种监控和维护工具,包括 HBase 管理控制台、HBase Shell 和 HBase JMX 等,可以帮助用户监控和维护 HBase 集群。 11. HBase Troubleshooting HBase 提供了多种故障诊断和解决方法,包括日志分析、...

    Hbase+Spring boot实战分布式文件存储

    监控集群状态 5-1 HBase备份与恢复 5-2 HBase监控简介 5-3 Hadoop JMX监控实战 5-4 HBase JMX监控实战 第6章 Phoenix & Sqoop 对HBase业务应用过程中常用到的第三方开源工具Phoenix和Sqoop进行介绍和实战操作。...

    HBase 应用平台 balancer 功能

    HBase 是一个分布式、版本化的NoSQL数据库,它构建在Hadoop之上,专门设计用于处理大规模数据。在HBase应用平台中,`balancer`功能是至关重要...深入理解balancer的工作机制和配置,对于优化HBase集群的性能至关重要。

    Hbase-GUI-1.2.3.zip

    HBase是一款基于Google Bigtable设计思想的开源分布式数据库,...总的来说,“Hbase-GUI-1.2.3.zip”可能是为了提供一个图形化的工具,使得非程序员也能轻松地对HBase集群进行操作和管理,降低使用门槛,提高工作效率。

Global site tag (gtag.js) - Google Analytics