jmx 替代
有许多选项可用于监视MapR集群的性能和运行状况。 在本文中,我将介绍使用Java管理扩展(JMX)监视CLDB的鲜为人知的方法。
据最受尊敬的MapR数据工程师之一,Akihiko Kusanagi称,与使用Ganglia相比,使用JMX获取CLDB指标可以被视为一种访问实时性能指标的更现代,更简单的方法。 Ganglia作为分布式集群(尤其是Hadoop)的指标收集服务已有很长的历史,在MapR文档中已很好地证明了其在此角色中的使用。
对于不使用此类工具的集群,使用JMX监视CLDB可能是一个明智的选择,可以避免安装和配置第三方监视解决方案。 在非常特定的情况下,实时,精细地监视CLDB可能很有用,在这种情况下,针对生产集群收集的普通指标未提供解决集群运行状况或性能方面某些问题所需的所有详细信息。 就CLDB而言,在MapR-FS的运行状况和性能方面尤其如此。
这篇文章主要面向经验丰富的MapR集群管理员和顾问。 为了使经验不足的读者受益,在深入了解本主题之前,我将花一些时间来介绍一些基本知识。
CLDB指标
CLDB(容器位置数据库)是MapR文件系统的核心,是MapR特定的技术,是Hadoop HDFS分布式文件系统的高性能且可靠的替代品。
CLDB通过替换NameNode打破了其他Hadoop发行版众所周知的单点故障。 这样,CLDB维护有关群集中数据位置的信息。 它的可靠性来自通常在群集的三个节点上运行,其中一个节点随时可作为主节点。
度量标准仅由CLDB主服务器收集,其他CLDB节点则作为从属服务器保持只读模式,因此不收集任何度量标准。
一个相当简明扼要的列表收集可以发现指标这里在MAPR文档。 这些指标与节点的硬件,CPU,内存和网络指标以及与卷,容器和RPC调用有关的MapR-FS特定指标相关。 最后,该服务还收集群集范围的CPU,磁盘空间和内存的总计指标。
特别令人感兴趣的是CLDB主站的CPU负载。 在少于100个节点的典型群集中,CLDB节点还运行其他服务。 随着群集大小的增加,CLDB节点可能会变得超负荷工作,并且很高的CPU使用率可能表明需要转向仅CLDB的节点设计,这是非常大的群集的最佳实践( 链接 )。
Java管理扩展(JMX)
JMX在2004年与J2SE 5.0 JDK一起引入,旨在用于企业应用程序中,以使系统可配置或在任何时间点获取应用程序状态。 CLDB服务包括已注册MBean的运行JMX服务器。
使用众多JMX控制台实现中的任何一种,都可以实时读取CLDB应用程序状态。 在这里,我将重点介绍Jconsole,它是Oracle JDK的标准工具。
有许多在线资源可从Oracle的出色Java文档和教程以及JournalDev的教程中学习有关JMX的更多信息。
使用JConsole进行实时CLDB监视
在Mac OS和Linux中,jconsole已自动安装到/ usr / local / bin,因此可以使用。 唯一的依赖关系是Oracle的JDK。
执行jconsole会启动一个带有登录提示的Java应用程序:
要进行连接,请选择“远程进程”并输入:<master CLDB host>:7220,然后按“ Connect”。 “用户名”和“密码”字段可以保留为空白。 提示将报告无法安全连接,并提出仍要连接或取消连接。 只需选择“不安全的连接”。
JMX控制台默认情况下会打开“概述”选项卡,如上所示。 它显示内存和CPU的实时指标。 这是一个非常“ Java JVM监视视图”,仅包含许多实用的CPU图表。 所有操作都在“ MBeans”选项卡和“ com.mapr.cldb” MBean中。
该视图允许访问由主CLDB收集的所有内部指标。 收集的指标从群集级别的指标(例如“群集内存容量”和“已使用的磁盘空间”)到非常细粒度的指标,这些指标可能仅对MapR内部软件工程师感兴趣(“已处理的重复ACR数量”吗? )。
MapR建议的指标是Ganglia公开的指标,并在文档中列出了这些指标。 在这种情况下不方便的是,没有与CLDB MBean相关的图。 一次只能访问一个值,并且该值不会自动刷新。
当然,可以使用Java以编程方式访问这些数字,而这会花费一些时间和精力。 按照此博客文章中的说明,也可以使用Python(通过JPype1包)。 以编程方式获取感兴趣的指标,仅花了我几分钟的时间就使用了该博客中的信息。 通过Python,可以轻松地将指标转发到数据库,ElasticSearch索引甚至是平面文件。
不过,老实说,实际上,我宁愿建议使用MapR REST API来满足生产集群的日常监视需求,这将是另一篇博客文章的主题。
结论
当然,对CLDB的JMX监视不太可能成为MapR集群管理员日常工具箱的一部分。 但是,我发现它很有趣,可以窥视MapR技术的这一关键部分的内部功能。 希望您会发现它和我一样有趣。
翻译自: https://www.javacodegeeks.com/2016/05/cldb-monitoring-using-jmx-modern-alternative-ganglia.html
jmx 替代