前言:对于任意一个系统而言,做好监控都是非常重要的,HBase也不例外。经常,我们会从JMX中获取相关指标来做展示、对HBase进行监控,那这些指标是怎么生成的呢?如果你想自定义自己的监控指标又该怎么做呢?基于好奇之心和学习的目的,最近打算学习一下HBase监控相关原理及实现,今天先简单捋一捋思路。

1. 如何下手?

我一向比较喜欢先看项目所依赖的pom文件,打开HBase源码,有两个非常相关的模块:

  • hbase-metrics-api

  • hbase-metrics

分别打开两个子项目的pom文件查看,搜索关键词'metrics'碰碰运气,有两个小发现:

  1. 子项目hbase-metrics依赖子项目hbase-metrics-api,子项目hbase-metrics-api大部分是接口类,而子项目hbase-metrics基本上是对子项目hbase-metrics-api接口类的实现类。

  2. 子项目hbase-metrics中有metrics相关继承式依赖,如下:

<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
</dependency>

那这是个什么东西呢?凭直觉,要理解好HBase Metrics的实现,首先要先搞明白这是个什么东东。本文接下来也主要围绕io.dropwizard.metrics展开。

2. Dropwizard是什么?

经过一番调研,总感觉dropwizard是上个世纪的产物。看下官网介绍:

Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services.

翻译一下:

Dropwizard是一个Java框架,用于开发对操作友好的高性能RESTful Web服务。

感觉理解不太到位,RESTful Web服务也没听说过这个,百度扫扫盲吧!结果很意外,网上竟是Dropwizard与Spring Boot比较相关的文章。我抽两条比较重要的:

  1. Dropwizard定位:微服务框架
  2. 两者都有很强很大的社区支持。如果你更喜欢轻量,无疑Dropwizard胜出,如果你已经有Spring经验,无疑使用Spring Boot。

好稀罕!真的是孤陋寡闻了吗?竟然是跟Spring Boot相媲美的,也集成了众多框架,Dropwizard metrics 就是其自带的监控框架。下面就介绍一下Dropwizard metrics。

3. Dropwizard metrics

看下官网介绍:

Metrics is a Java library which gives you unparalleled insight into what your code does in production.

Metrics provides a powerful toolkit of ways to measure the behavior of critical components in your production environment.

With modules for common libraries like Jetty, Logback, Log4j, Apache HttpClient, Ehcache, JDBI, Jersey and reporting backends like Graphite, Metrics provides you with full-stack visibility.

翻译一下:

Metrics是一个Java库,可让您无比洞察代码在生产中的功能。Metrics提供了一种功能强大的工具包,该工具包可用于衡量生产环境中关键组件的行为。借助适用于常见库(如Jetty,Logback,Log4j,Apache HttpClient,Ehcache,JDBI,Jersey)的模块以及报告后端(如Graphite),Metrics可为您提供全栈可见性。

大白话:dropwizard-metrics是一个度量工具包,可集成于多种常见库,提供全栈监控可见性。

“目前最为流行的 metrics 库是来自 Coda Hale 的 dropwizard/metrics,该库被广泛地应用于各个知名的开源项目中。例如 Hadoop,Kafka,Spark,JStorm 中。”

然后我又不禁自己问自己了:市面上这么多监控系统和框架,dropwizard-metrics处于什么定位呢?

基于好奇,自己又展开了一番调研。

4. 监控体系梳理

提到监控,无非以下这些常见的词汇:

Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront、Micrometer、Spring-actuator、Pinpoint、Zipkin、Skywalking、Grafana等等。

我从数据流的角度将以上框架大致分为三种:

  • 生产类监控指标框架:进行指标统计与监控,首先要生产指标数据,这类框架如Micrometer,我们也叫埋点类指标框架。
  • 消费类监控指标框架:有了指标数据,我们就要采集处理进行消费,这类框架如Ganglia、Prometheus、Influx等。
  • 展示类监控指标框架:这类框架主要用于数据图标的前端展示,如:Graphite、Grafana等。

而今天我们了解到的Dropwizard-Metrics监控框架,就属于生产类监控指标框架。那Dropwizard-Metrics监控框架与Micrometer有什么关系吗?如何做选择呢?

回答是:没有关系,并存关系。

我们知道,Spring2监控框架是基于Micrometer,并深度集成的。然而Hadoop、HBase则是基于Dropwizard-Metrics拓展开来,你猜是为什么?先读读下面一句话。

“springboot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront)。1.x的metrics都有点对齐dropwizard-metrics的味道,而micrometer除了一些基本metrics与dropwizard-metrics相类似外,重点支持了tag。这是一个很重要的信号,标志着老一代的statsd、graphite逐步让步于支持tag的influx以及prometheus。”

看着好像Micrometer更强大似的,简直像Dropwizard-Metrics二代升级版呀!不仅对接的监控系统更加丰富,而且还重点支持了tag,对于伟大的集大成者、人人口中的强力胶——Spring而言,当然选择爸爸版咯~

而像Hadoop、HBase之类的数据层软件框架,或许我只能大概猜一猜了!

  • Micrometer固然强大,但我并不需要你那么强大,Dropwizard-Metrics够轻所以我选它!
  • 难道跟Spring家族是死对头?
  • 或许真的是当初选错了?
  • 还是Micrometer生的太晚了?

你猜呢?哈哈哈~ 魂力不足,不如继续学习吧!随后我们继续深入Dropwizard-Metrics~

转载请注明出处!欢迎关注本人微信公众号【HBase工作笔记】

HBase 监控 | HBase Metrics 初探(一)的更多相关文章

  1. 使用JConsole监控HBase内存状态

    使用JConsole或者VisualVM等工具监控HBase状态时,需要修改HBase的配置文件,以解决随机端口问题. 文件名:hbase-env.sh export HBASE_JMX_BASE=& ...

  2. hbase 监控指标项

    名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...

  3. Hbase监控指标项

    名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...

  4. HBase学习-HBase原理

    1.系统架构 1.1 图解   从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemS ...

  5. 大数据技术之_11_HBase学习_01_HBase 简介+HBase 安装+HBase Shell 操作+HBase 数据结构+HBase 原理

    第1章 HBase 简介1.1 什么是 HBase1.2 HBase 特点1.3 HBase 架构1.3 HBase 中的角色1.3.1 HMaster1.3.2 RegionServer1.3.3 ...

  6. 【HBase】HBase Getting Started(HBase 入门指南)

    入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...

  7. Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型

    Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', ...

  8. Hbase理论&&hbase shell&&python操作hbase&&python通过mapreduce操作hbase

    一.Hbase搭建: 二.理论知识介绍: 1Hbase介绍: Hbase是分布式.面向列的开源数据库(其实准确的说是面向列族).HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hb ...

  9. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误

    1:Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误,是因为jar包冲突了,所以对于和hadoop的jar包冲 ...

随机推荐

  1. Windows环境下docker的安装与配置

    Docker是一种容器技术,可以在操作系统中隔离出若干个独立的程序运行环境,这些环境既可以共享宿主机的资源,另一方面他们之间相互独立,互不影响,也不会对宿主机的环境产生影响.与虚拟化技术不同的是,Do ...

  2. 解决IOS下window.open页面打不开问题

    问题如标题所写,在ajax回调里面拿到即将要跳转的链接url,使用window.open(linkUrl),没有起作用,而且代码也没有报错,查找原因是:大部分现代的浏览器(Chome/Firefox/ ...

  3. Node.Js的热更新服务——supervisor

    因为目前项目每次修改文件要看效果,必须重启服务:node app.js再进入浏览器看效果,很是麻烦.所幸的是有很多第三方的管理工具(supervisor,hotnode,forever,pm2等),当 ...

  4. Mac 下 Docker 运行较慢的原因分析及个人见解

    在mac 使用 docker 的时候,我总感觉程序在 docker 下运行速度很慢,接下来我一一分析我遇到的问题,希望大家能进行合理的讨论和建议. 问题: valet 下打开 laravel 首页耗时 ...

  5. 什么是YUM

    什么是Yum Yum(全称为 Yellow dog Updater, Modified)是一个在RedHat以及CentOS等Linux系统中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...

  6. 简单认识并使用JavaScript【供后端人员作为了解】

    JS(JavaScript)Web的脚本语言 脚本语言:无法独立执行,必须嵌入到其他语言当中结合使用 作用:控制页面特效展示 注:JavaScript没有访问系统的权限,并且JavaScript和Ja ...

  7. EPX-Studio调用Dll模块

    procedure TForm1.BitBtn1Click(Sender: TObject); var REP : IExcelPanelXDisp; modulePath:string; begin ...

  8. 关于Quartz .NET(V3.0.7)的简要说明

    目录 0. 任务调度 1. Quartz .NET 1.1 基本概念 1.2 主要接口和对象 2. 使用示例 2.0 准备工作 2.1 每间隔一定时间间隔执行一次任务 2.3 某天的固定时间点执行任务 ...

  9. [转]【maven】解决Missing artifact jdk.tools:jdk.tools:jar:1.6

    解决在pom.xml文件中出现的Missing artifact jdk.tools:jdk.tools:jar:1.6问题 <dependency> <groupId>jdk ...

  10. 当程序执行一条查询语句时,MySQL内部到底发生了什么? (说一下 MySQL 执行一条查询语句的内部执行过程?

    先来个最基本的总结阐述,希望各位小伙伴认真的读一下,哈哈: 1)客户端(运行程序)先通过连接器连接到MySql服务器. 2)连接器通过数据库权限身份验证后,会先查询数据库缓存是否存在(之前执行过相同条 ...