【Hadoop实战】Hadoop指标系统V2分析

news2024/11/26 9:34:11

Hadoop指标系统V2分析

文章目录

  • Hadoop指标系统V2分析
    • 架构
      • 主要组成部分
      • 根据图表解释数据流向
      • 指标过滤
      • JMX的应用
      • 开启指标系统的组件
      • 指标项说明
    • 使用HTTP(JMXJsonServlet)获取指标
      • 接口
      • 调用方式GET
      • 查询的逻辑
      • 数据的来源,以及更新的原理

架构

在Hadoop中基于JMX开发了Metrics2版本的指标系统。

源码包:org.apache.hadoop.metrics2

预备知识JMX。官方学习地址

主要组成部分

  • metrics sources:生产和更新指标的地方,提供了一个getMetris接口,用来获取指标值。
  • metrics sinks:汇集指标记录
  • metricsSystem:指标系统会定期轮询指标源,将指标记录汇集给指标sink。提供了一个putMetrics接口,用来接受指标记录。

类图

在这里插入图片描述

UML代码作图工具

PlantUML中文网

jetbrains IDEA plantuml插件主页

根据图表解释数据流向

指标数据的流向,由MetricsSystemImpl中的定时线程timer驱动,去调用每个MetricsSource适配器的getMetrics方法来采集每个指标源中的指标值,将指标数据写入对应的MetricsSink适配器中的SinkQueue队列中(半阻塞队列(生产者为非阻塞队列,消费者为阻塞队列),
当队列满时,新元素会被丢弃,以便在队列填充事件开始时保留 "有趣 "的元素。)。同时在每个MetricsSink适配器中都有一个sinkThread线程,用来消费SinkQueue队列中的指标数据,构造指标记录存储,存入对应的介质中。

指标过滤

支持三个级别的指标过滤,指标源级别,指标记录,指标名称。过滤的成本(内存和CPU)按下方列表顺序增加,

  1. 全局源名称过滤:在调用 getMetrics 时,跳过任何名称匹配的指标源。
  2. 每个指标槽名称过滤:在调用 putMetrics 时,跳过任何名称匹配的指标槽。
  3. 每个指标源的记录过滤:getMetrics 调用中的MetricsRecordImpl.getRecord()调用将跳过任何名称或标记值匹配的记录。
  4. 每个指标槽的记录过滤:在 putMetrics 调用中跳过任何名称或标签值匹配的记录。
  5. 每个源的指标名称过滤:getMetrics 调用中的 MetricsRecordBuilderImpl.add*()调用将跳过名称匹配的任何度量。
  6. 每个槽的指标名称过滤:在 putMetrics 调用中迭代 MetricsRecord时,跳过任何名称匹配的度量。

JMX的应用

MetricsSystemMXBean实现JMX MBean接口,以允许现有的JMX客户端(JConsole、jManage等)在运行时停止和启动指标系统或指标源。将实现JMX MBean接口,以允许现有的JMX客户端(JConsole、jManage等)在运行时停止和启动度量系统。

使用场景:

  1. 基于MXBeanMetricsSystemImpl,主要是为了支持CompositeData类型的数据

  2. 基于DynamicMBeanMetricsSourceAdapter,主要是为了重写getAttribute(String attribute), getAttributes(String[] attributes)getMBeanInfo()方法。

  3. 基于StandardMBeanorg.apache.hadoop.yarn.server.resourcemanager.RMNMInfo。从设计上看,这个简单的实现,没必要使用DynamicMBean那种复杂的实现。

JDK自带的MXBeans在包java .lang.management中,JVM指标使用到。

开启指标系统的组件

2.10.2版本可以开启指标系统的组件角色列表。即为指标命名中的服务名称。

  • WebAppProxyServer

  • SharedCacheManager

  • NodeManager

  • ApplicationHistoryServer

  • JobHistoryServer

  • MRAppMaster

  • SecondaryNameNode

  • DataNode

  • JournalNode

  • Router

  • NameNode

  • ResourceManager

指标系统启动的入口:DefaultMetricsSystem.initialize("服务名称"),如DefaultMetricsSystem.initialize("ResourceManager");

指标项说明

官网说明

指标分类列表:

  • JvmMetrics
  • rpc
  • RetryCache/NameNodeRetryCache
  • FairCallQueue
  • rpcdetailed
  • namenode
  • FSNamesystem
  • JournalNode
  • datanode
  • FsVolume
  • RouterRPCMetrics
  • StateStoreMetrics
  • ClusterMetrics
  • QueueMetrics
  • NodeManagerMetrics
  • ContainerMetrics
  • UgiMetrics
  • MetricsSystem
  • StartupProgress

使用HTTP(JMXJsonServlet)获取指标

接口

接口类org.apache.hadoop.jmxJMXJsonServlet

接口地址:

  • `http://节点域名:webapp服务的port/jmx``
  • ``http://节点域名:webapp服务的port/jmx?get=Hadoop:service=ResourceManager,name=RMNMInfo`

调用方式GET

查询的逻辑

  1. 创建MBean服务器。
  2. 查询MBean服务器中注册的所有Mbean(指标信息)。
  3. 根据条件过滤指标源Bean下的所有attribute信息,不传入条件默认查询全部指标源beans。
  4. 组织成json返回值。

数据的来源,以及更新的原理

对应发现的三类JMX MBeans。

  1. RMNMInfo,去获取所有节点汇报的健康信息,在调用MBean的成员方法时,才回去查询最新的节点数据。
  2. MetricsSourceAdapter,这类的动态MBeans在实现的时候,重写了获取属性的方法,都会去调用updateJmxCache()方法,继而调用updateAttrCacheupdateInfoCache方法,将最新的指标信息构造成Bean的Attribute更新进JMX缓存中,从而返回最新的指标属性值。
  3. MetricsSystemImpl,其中的指标需要在开启指标系统且拥有sink的情况下数据才会进行更新,主要的原因其更新指标的方法sampleMetrics(),依赖于调度线程调度的onTimerEvent()和即时发布指标方法publishMetricsNow()。这两个方法均要求sinks.size() > 0才会指标采样更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1193242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode2246. 相邻字符不同的最长路径

Every day a Leetcode 题目来源:2246. 相邻字符不同的最长路径 解法1:树形 DP 如果没有相邻节点的限制,那么本题求的就是树的直径上的点的个数,见于Leetcode543. 二叉树的直径。 考虑用树形 DP 求直径。 枚举子树 x 的所有子…

开发ios电脑app的费用受到哪方面的影响?

开发iOS电脑应用程序的费用受到多方面的影响,包括市场需求、功能复杂度、设计要求、开发人员经验、市场竞争以及后期维护等因素,下面我们将详细介绍这些影响因素,帮助您更好地了解开发iOS应用程序的费用构成。 一、市场需求 市场需求是影响…

【JavaEE初阶】 TCP三次握手四次挥手(超详细版)

文章目录 🌴三次握手四次挥手总览🛫三次握手(建立连接)🚩为什么要三次握手📌解决彼此双发彼此认同的问题📌验证双方的接听发送能力是否正常 🚩建立连接阶段涉及到的两个重要状态: &a…

iOS 设置图标和upload包时显示错误

右键-show in finder-AppIcon.appiconset-然后替换图片 然后遇到个问题 就是图片不能有alpha [Xcode]应用图标:ERROR ITMS-90717: “Invalid App Store Icon. The App Store Icon in the asset catalog in x… 具体操作:只需确保【AppIcon】图片集中不…

【23真题】简单!原题很多!211!

今天分享的是23年内蒙古869的信号与系统试题及解析。 本套试卷难度分析:22年内蒙古大学869考研真题,若有需要,戳这里自取!该院校是考察通信原理信号的,从信号部分来看,本套试题内容难度中等偏下&#xff0…

类图复习:类图简单介绍

入职新公司在看新项目的代码,所以借助类图梳理各个类之间的关系,奈何知识已经还给了老师,不得不重新学习下类图的相关知识,此处将相关内容记录下方便后续使用。 文章目录 类图语法类与类的关系画类图 类图语法 语法描述public-pr…

电机应用-无刷直流电机

无刷直流电机 无刷直流电机(Brushless Dirent Current Motor,简称BLDCM)由电动机主体和驱动器组成,无电刷和无换向器,是除了有刷电机外用得最多的一种电机。 无刷直流电机不使用机械的电刷装置,采用方波自控…

网络安全专业的就业方向有哪些?

网络安全专业的就业方向有哪些? 网络安全专业毕业生就业较多,可以从事计算机科学与技术、信息与通信、电子商务、互联网金融、电子政务等领域的相关工作。还可以从事政府机关事业单位、银行、保险等信息安全产品的研发、信息系统安全分析与设计、信息安…

Leetcode_3:无重复字符的最长子串

题目描述: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s "bbbbb"…

STM32——端口复用与重映射概述与配置(HAL库)

文章目录 前言一、什么是端口复用?什么是重映射?有什么区别?二、端口复用配置 前言 本篇文章介绍了在单片机开发过程中使用的端口复用与重映射。做自我学习的简单总结,不做权威使用,参考资料为正点原子STM32F1系列精英…

【Kurbernetes资源管理】陈述式资源管理方式(Kubectl命令详解)

陈述式 一、 理论部分1.1 管理K8s资源的基本方法1.1.1 陈述式资源管理方式1.1.2声明式资源管理方式1.1.3 GUI式资源管理方法 1.2 陈述式资源管理方式1.2.1 Kubelet工具简介1.2.2 kubectl 的基本语法1.2.3 Kubectl工具的自动补全功能 1.3 Kubernetes Service1.4 Service 的类型(…

Java开发者的囧境:那些让你苦笑不得的Bug

Java开发者的囧境:那些让你苦笑不得的Bug 《Java开发者的囧境:那些让你苦笑不得的Bug》摘要引言1. 编码时的“眼瞎病”小心!变量名不要写错了哦!情景描述建议与注意事项代码示例扩展 2. 时间的“穿越者”Bug原来是发生在几天前的代…

强化学习 - 策略梯度(Policy Gradient)

引言 强化学习常见的方法为基于值函数或者基于策略梯度。 值函数:值函数最优时得到最优策略,即状态s下,最大行为值函数maxQ(s,a)对应的动作。 但对于机器人连续动作空间,动作连续时,基于值函数,存在以下问…

Linux友人帐之网络编程基础FTP服务器

一、概述 1.1FTP基本概念 FTP(File Transfer Protocol)是一种用于文件传输的标准协议。FTP服务是一种能够让用户通过FTP协议在本地计算机和远程服务器之间进行文件传输的服务。FTP服务可以允许用户上传或下载文件,也可以进行目录浏览、文件删…

如何低门槛开发有趣实用的ZigBee产品?

一、什么是 Zigbee 协议? Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术,其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信,并嵌入各种智能设备,最终实现自动控制和远程…

关于mac下pycharm旧版本没删除的情况下新版本2023安装之后闪退

先说结论,我用的app cleaner 重新删除的pycharm ,再重新安装即可。在此记录一下 之前安装的旧版的2020的pycharm,因为装不了新的插件,没办法就升级了。新装2023打开之后闪退,重启系统也不行,怀疑是一起破解…

物奇平台耳机宕机恢复功能实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机宕机恢复功能实现 一 需求与场景 1 使…

城市内涝积水的原因有哪些?万宾科技内涝积水监测仪工作原理

一旦有暴雨预警出现多地便会立即响应,以防城市内涝问题出现。随着人口迁移,越来越多的人口涌入城市之中,为了完善城市基础设施建设,城市应急管理部门对内涝的监测越来越严格,在信息化时代,城市管理也趋向于…

机器学习——奇异值分解案例(图片压缩-代码简洁版)

本想大迈步进入前馈神经网络 但是…唉…瞅了几眼,头晕 然后想到之前梳理的奇异值分解、主成分分析、CBOW都没有实战 如果没有实际操作,会有一种浮在云端的虚无感 但是如果要实际操作,我又不想直接调用库包 可是…如果不直接调包,感…

【苍穹外卖 | 项目日记】第九天 万字总结

前言: 之前就写完了,用了几天补一下项目总结,本文会从宏观上介绍整体项目构架和所应用的技术以及项目亮点,最后再加上我个人的感悟。本文适合打算开始写苍穹外卖的小伙伴阅读,提高对整体项目的认知。 往期项目日记&am…