`
lt200819
  • 浏览: 181641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop Metrics收集机制

 
阅读更多

Hadoop通过Metrics机制,对集群中各机器的执行参数进行收集和发送。hadoop metrics中主要的功能块为:

MetricsContext

通过org.apache.hadoop.metrics.ContextFactory,可以获得一个MetricsContext对象,它保存这一组metrics的上下文信息,context启动一个monitor线程来按一定周期来收集和发送收集到的数据。Context的主要机制由一个虚类org.apache.hadoop.metrics.spi.AbstractMetricsContext提供,其中主要功能就是类实例化时启动monitor线程及定时器,在定时器到时时调用注册到其上的Updater(之后描述)的update方法更新数据,然后调用emitRecord方法将数据发送出去。
简单的例子,org.apache.hadoop.metrics.ganglia.GangliaContext继承了AbstractMetricsContext,并在其emitRecord方法中实现向ganglia发送数据的功能。

Updater

org.apache.hadoop.metrics.Updater,是一个Java Interface。可以理解为数据收集的主体,接口中只有一个doUpdates方法。实现一个updater的扩展类,并注册到以上描述的MetricsContext中,context的monitor线程就会定期调用updater的doUpdates方法来抓取数据。通常在doUpdates里我们会对系统的各种metrics做初步计算处理并push到MetricsRecord中。

MetricsRecord

org.apache.hadoop.metrics.MetricsRecord为一个Interface,其实际实现类为org.apache.hadoop.metrics.MetricsRecordImpl。MetricsRecord可以定位唯一标识名称,且与context关联。MetricsRecord中包含一个Map结构,存储所有其包含的Metrics对象。每个context下可以包含多个MetricsRecord。Context调用doUpdates收集到MetricsRecord后,再将它发送给文件或者ganglia。

MetricsBase

所有具体的metrics数据类都会继承MetricsBase,常用的有以下几种:
MetricsIntValue:整型数值
MetricsLongValue:长整型数值
MetricsTimeVaryingInt:一个时间周期内整型累积值,push到MetricsRecord后从0开始累积。
MetricsTimeVaryingLong:一个时间周期内长整型累积值
MetricsTimeVaryingRate:保存了操作所花费的时间和该时间内的操作次数。最终发送出去会是两个数值:一个时间周期内的总操作次数和每个操作所花费的平均时间(操作总时间/操作次数)。该metrics内部还保存了单次操作时间的min和max。

Hbase也扩展了几种metrics类型:
MetricsAvgValue:记录用户设置的值及设置的次数,最终输出的是平均值,收集完清零。
MetricsIntervalInt:一个时间周期内整型数值,收集完清零。
MetricsRate:一个时间周期内的数据/时间周期的长度,收集完清零。
MetricsString:一个字符串,主要用于JMX,ganglia不支持。

Hadoop metrics的配置

配置文件在hadoop的配置目录下,名称为hadoop-metrics.properties,下面是一个metrics的常用配置:

# Configuration of the “hbase” context for ganglia
# Pick one: Ganglia 3.0 (former) or Ganglia 3.1 (latter)
mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext
mapred.period=15
mapred.servers= hostname:8649

其中mapred.class定义了名叫mapred的MetricsContext 实现类是GangliaContext(在代码实现中,context实例化时通过调用MetricsUtil.getContext(“mapred”)获取该信息,并将这里配置context类实例化,每次收集数据的周期是15秒,发送数据到servers中定义的gmond地址。

实例

具体的metrics实现,可以参考org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics, org.apache.hadoop.metrics.jvm.JvmMetrics以及我们自己实现的org.apache.hadoop.mapred.metrics.TaskMetrics等。
简单的初始化Metrics操作如:
public TaskMetrics(Configuration conf, boolean mapperTask) {
String sessionId = conf.get(“session.id”);     // Initiate reporting of Java VM metrics
JvmMetrics.init(“Task”, sessionId);
MetricsContext context = MetricsUtil.getContext(“mapred”);
String taskType = mapperTask == true? “maptask” : “reducetask”;
MetricsRecord metricsRecord = MetricsUtil.createRecord(context, taskType);
metricsRecord.setTag(“sessionId”, sessionId);
context.registerUpdater(this);
}

Hadoop 与 ganglia

Hadoop通过其Metrics机制收集到统计信息之后,将通过GangliaContext将信息发送到ganglia的gmond。ganglia的gmetad会定期从gmond拖取数据并存为rrd文件显示在网页上。不能上传图片…… ganglia的结构图如下链接:http://linux.net527.cn/uploads/allimg/c101015/12W121E140-1U26.jpg

分享到:
评论

相关推荐

    GraphiteMetrics2:与metrics2一起使用的石墨的hadoop上下文包

    石墨上下文 像 Hadoop 的 GangliaContext 一样,将指标发送到 Graphite 编译: ... *.sink.graphite.class=org.apache.hadoop.metrics2.graphite.GraphiteContext # default sampling period *.p

    Hadoop RPC机制分析

    NULL 博文链接:https://wmwork2010.iteye.com/blog/632016

    hadoop0.23.9离线api

    org.apache.hadoop.log.metrics org.apache.hadoop.mapred org.apache.hadoop.mapred.gridmix org.apache.hadoop.mapred.gridmix.emulators.resourceusage org.apache.hadoop.mapred.jobcontrol org.apache....

    06.hadoop-HA机制整体解析--引入zookeeper.mp4

    06.hadoop-HA机制整体解析--引入zookeeper.mp4

    Hadoop序列化机制

    NULL 博文链接:https://wmwork2010.iteye.com/blog/629320

    hadoop數據收集入庫flume與sqoop

    hadoop數據收集入庫flume與sqoop,hadoop數據收集入庫flume與sqoop

    基于Hadoop的云计算平台安全机制研究.pdf

    基于Hadoop的云计算平台安全机制研究.pdf

    hadoop2.7.3 hadoop.dll

    在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第五天 hadoop2.x中HA机制的原理和全分布式集群安装部署及维护 01-zookeeper.avi 02-zookeeper2.avi 03-NN高可用方案的要点1.avi 04-hadoop-HA机制的配置文件.avi 05-hadoop分布式集群HA模式部署.avi 06-hdfs...

    hadoop2.7安装演示

    A new Hadoop metrics sink that allows writing directly to Graphite. Specification work related to the Hadoop Compatible Filesystem (HCFS) effort. HDFS Support for POSIX-style filesystem ...

    Hadoop权威指南 中文版

    mapreduce的工作机制:mapreduce的类型和格式;mapreduce的特性:如何安装hadoop集群,如何管理hadoop;pig简介:hbase简介:zookeeper简介,最后还提供了丰富的案例分析。  本书是hadoop权威参考,程序员可从中...

    Optimizing Hadoop for MapReduce(PACKT,2014)

    Starting with how MapReduce works and the factors that affect MapReduce performance, you will be given an overview of Hadoop metrics and several performance monitoring tools. Further on, you will ...

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf

    《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf...

    Hadoop里的RPC机制过程

    Hadoop里的RPC机制过程,代码示例rpc调用过程

    Hadoop下载 hadoop-2.9.2.tar.gz

    Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo...

    hadoop-2.6.0-hadoop.dll-winutils.exe

    log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See ...

    Hadoop下载 hadoop-3.3.3.tar.gz

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不...

    Hadoop HDFS原理分析,技术详解

    HDFS概述,HDFS客户端操作,HDFS数据流,namenode工作机制,datanode工作机制,HDFS 高可用集群配置

    Apache Hadoop 2.7.2

    A new Hadoop metrics sink that allows writing directly to Graphite. Specification work related to the Hadoop Compatible Filesystem (HCFS) effort. HDFS Support for POSIX-style filesystem ...

    hadoop_tutorial hadoop入门经典

    hadoop_tutorial hadoop入门经典 Hadoop 是一个能够对大量数据进行分布式处理的软件框架。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。...

Global site tag (gtag.js) - Google Analytics