IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java jmx学习---Hive metric -> 正文阅读

[大数据]Java jmx学习---Hive metric

1、问题

最近接到一个新需求,要求监控hive服务。监控这里,目前已知的大数据平台组件比如FusionInsight、CDH对服务的监控做的就很好,无奈,我司的产品属于小本经营,自己从apache里面拿来hive源码,然后直接改点配置文件,就准备上线。只是突然发现hive的监控还没有,目前只能调用hive 监控webui来监控,访问hive的jmx接口来做。但是我们自身还是想对hive的jmx进行一个包装,嵌入到自己的系统中。这里对新增了需求,要求对hive metric进行一番了解。

2、hive metric体系

源码所在位置:

metric的核心类为:CodahaleMetrics,依赖的是第三方度量库。该库的详细功能可以参考下文:

https://blog.csdn.net/houzhizhen/article/details/71540496

对于hive metric的源码解释可以看下面的博客:

https://blog.csdn.net/dabokele/article/details/84449789

3、疑问:

阅读上述博客以及相关源码后,可以知道hive metric的reporter有两种方式:json和jmx

在web界面可以通过访问http://hiveserver2Ip:10002/jmx就可以获取一个json结果。

这个json结果的实现类为:JMXJsonServlet,这个servlet只是tomcat中的servlet,用于实现http请求的处理,json结果的返回。但是并没有显示的看到CodahaleMetrics的调用。

不过,最后还是发现了一些蛛丝马迹,这里就需要对jmx的原理有一定的了解:

4、jmx基本原理

这里上个图,也是借鉴别人的博客,链接找不到了,如介意,我立马删掉,要发扬这种分享精神!

?一句话总结:

(1)java进程中需要启动MBeanServer,mbean需要注册在mbs中,每个mbs可以使用http协议、rmi协议进行访问,其实说到底都是对socket编程的一种封装

(2)java服务的业务server也是对socket编程的一种封装。

5、继续

回到上文中的问题JMXJsonServlet和CodahaleMetrics是怎么关联上的?

这里有个核心代码:

MBeanServer的初始化:

JMXJsonServlet类 使用ManagementFactory.getPlatformMBeanServer()来初始化,通过该方法获取的MBeanServer这个对象是一个单例

  @Override
  public void init() throws ServletException {
    // Retrieve the MBean server
    mBeanServer = ManagementFactory.getPlatformMBeanServer();
    jsonFactory = new JsonFactory();
  }

?CodahaleMetrics类中也使用了使用ManagementFactory.getPlatformMBeanServer()来初始化

 //register JVM metrics
    registerAll("gc", new GarbageCollectorMetricSet());
    registerAll("buffers", new BufferPoolMetricSet(ManagementFactory.getPlatformMBeanServer()));
    registerAll("memory", new MemoryUsageGaugeSet());
    registerAll("threads", new ThreadStatesGaugeSet());
    registerAll("classLoading", new ClassLoadingGaugeSet());

目前只是发现了这样的关系,但是CodahaleMetrics类的比较庞大,目前还没有了解到它是具体如何使用的。后续继续补充

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:55:47  更:2021-08-27 11:58:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:27:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码