整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

8.1.1. 内置计数器

hadoop 小红牛 8℃ 0评论

Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。

这些内置计数器被划分为若干个组,参见表8-1。

8-1. 内置的计数器分组

组别

 

名称/类别

 

参考

 

MapReduce任务计数器

org.apache.hadoop.mapred.Task$Counter(1.x版本)

org.apache.hadoop.mapreduce.TaskCounter(1.x之后版本)

表8-2

文件系统计数器

FileSystemCounters(1.x版本)

org.apache.hadoop.mapreduce.FileSystemCounter(1.x之后的版本)

表8-3

FilelnputFormat

计数器

org.apache.hadoop.mapred.FileinputFormat$Counter(1.x版本)

org.apache.hadoop.mapreduce.lib.input.FilelnputFormatCounter(1.x之后的版本)

表8-4

FilelnputFormat

计数器

org.apache.hadoop.mapred.FileOutputFormat$Counter(1.x版本)

org.apache.hadoop.mapreduce.lib.output.FileOutputFormatCounter(1.x之后的版本)

表8-5

作业计数器

org.apache.hadoop.mapred.JobInProgress$Counter(1.x版本)

org.apache.hadoop.mapreduce.JobCounter(1.x之后的版本)

表8-6

各组要么包含任务计数器(在任务处理过程中不断更新),要么包含作业计数器(在作业处理过程中不断更新)。这两种类型将在后续章节中进行介绍。

1.1.1. 任务计数器

在任务执行过程中,任务计数器采集任务的相关信息,每个作业的所有任务的结果会被聚集起来。例如,MAP_INPUT_RECORDS计数器统计每个map任务输入记录的总数,并在一个作业的所有map任务上进行聚集,使得最终数字是整个作业的所有输入记录的总数。

任务计数器由其关联任务维护,并定期发送给tasktracker,再由tasktracker发送给jobtracker。因此,计数器能够被全局地聚集。(参见6.1.1节中对进度和状态更新的介绍。注意,该流程与YARN不同,详情参见6.L2节)。任务计数器的值每次都是完整传输的,而非自上次传输之后再继续尚未完成的传输,从而避免由于消息丢失而引发的错误。另外,如果一个任务在作业执行期间失败,则相关计数器的值会减小。

虽然只有当整个作业执行完之后计数器的值才是完整可靠的,但是部分计数器仍然可以在任务处理过程中提供一些有用的诊断信息,以便由Web界面监控。例如,PHYSICAL_MEMORY_BYTES、VIRTUAL_MEMORY_BYTES 和COMMITTED_HEAP_BYTES计数器显示特定任务执行过程中的内存使用变化情况。

内置的任务计数器包括在MapReduce任务计数器分组中的计数器(表8-2), 以及在文件相关的计数器分组(表8-3、表8-4和表8-5)中。

8-2.内置的MapReduce任务计数器

计数器名称

说明

map输入的记录数

(MAP_INPUT_RECORDS)

作业中所有map已处理的输入记录数。每次 RecordReader读到一条记录并将其传给map的map()函数时,该计数器的值增加

map跳过的记录数(MAP_SKIPPED_RECORDS)

作业中所有map跳过的输入记录数,详情参见6.5.5节

map输入的字节数

(MAP一INPUT一BYTES)

作业中所有map已处理的未经压缩的输入数据的字节数。每次RecordReader读到一条记录并将其传给map的map()函数时,该计数器的值增加

分片(split)的原始字节数 (SPLIT一RAW一BYTES)

由map读取的输入分片对象的字节数。这些对象描述分 片元数据(文件的位移和长度),而不是分片的数据自 身,因此总规模是小的

map输出的记录数(MAP_OUTPUT_RECORDS)

作业中所有map产生的map输出记录数。每次某一个map的OutputCollector调用collect()方法时,该计数器的值增加

map输出的字节数 (MAP_OUTPUT_BYTES)

作业中所有map产生的未经压缩的输出数据的字节数。每次某一个map的OutCollector调用collect()方法时,该计数器的值增加

map输出的物化字节数

(MAP一OUTPUT_MATERIALIZED_BYTES)

Map输出后确实写到磁盘上的字节数;若map输出压缩 功能被启用,则会在计数器值上反映出来

combine输入的记录数 (COMBINE_INPUT—RECORDS)

作业中所有combiner(如果有)已处理的输入记录数。
comWner的迭代器每次读一个值,该计数器的值增加。 注意:本计数器代表combiner已经处理的值的个数,并
非不同的码分组数(后者并无实质意义,因为对于 combiner而言,并不要求毎个键对应一个组,详情参见 2.4.2节和6.4节

combine输出的记录数(COMBINE__OUTPUT_RECORDS)

作业中所有combiner(如果有)已产生的输出记录每 当一个 combiner 的OutputCollector 调用 collect() 方法时,该计数器的值增加数。

reduce输入的组(REDUCE_INPUT_GROUPS)

作业中所有reducer已经处理的不同的码分组的个数。毎当某一个reducer的reduce()被调用时,该计数器的值增加

reduce输入的记录数 (REDUCE_INPUT_RECORDS)

作业中所有reducer已经处理的输入记录的个数L每‘某 个reducer的迭代器读一个值时,该计数器的值增加。如 果所有reducer已经处理数完所有输入,则该计数器的值 与计数器“map输出的记录”的值相同

reduce输出的记录数(REDUCE_OUTPUT_RECORDS)

作业中所有map已经产生的reduce输出记录数。每当某 个 reducer 的 OutputCollector 调用 collect()方法时,该计数器的值增加

reduce跳过的组数(REDUCE_SKIPPED_GROUPS)

作业中所有reducer已经跳过的不同的码分组的个数。详 情参见6.5.5节

reduce跳过的记录数(REDUCE—SKIPPED_RECORDS)

作业中所有reducer已经跳过的输人记录数

reduce经过shuffle的字节数(REDUCE_SHUFFLE—BYTES)

shuffle将map的输出数据复制到reducer中的字节数

溢出的记录数 (SPILLED_RECORDS)

作业中所有map和reduce任务溢出到磁盘的记录数

CPU毫秒(CPU_MILLISECONDS)

总计的CPU时间,以毫秒为单位,由/proc/cpuinfo获取

物理内存字节数(PHYSICAL__MEMORY_BYTES )

一个任务所用物理内存的字节数,由/proc/meminfo获取

虚拟内存字节数 (VIRTUAL一MEMORY一BYTES)

一个任务所用虚拟内存的字节数,由/proc/meminfo获取

有效的堆字节数(COMMITTED__HEAP_BYTES)

在JVM中的总有效内存量(以字节为单位),可由Runtime. getRuntime().totalMemory()获取

GC运行时间毫秒数(GC_TIME_MILLIS)

在任务执行过程中,垃圾收集器(garbage collection)花费 的时间(以毫秒为单位),可由GarbageCollector MXBean.getCollectionTime()获取:该计数器并未出现在1.x版 本中

由shuffle传输的map输出数(SHUFFLED_MAPS)

由shuffle传输到reducer的map输出文件数,详情参见6.4节,该计数器没有包含在l.x版本中

失败的shuffle数 (FAILED_SHUFFLE)

在shuffle过程中,发生拷贝错误的map输出文件数,该计数器并没有包含在1.x版本中

被合并的map输出数 (MERGED—MAP—OUTPUTS)

在shuffle过程中,在reduce端被合并的map输出文件数,该计数器没有包含在1.x版本中

8-3.内置的文件系统任务计数器

计数器名称

说明

文件系统的读字节数(BYTES_READ)

由map和reduce等(Filesystem)任务在各个文件系统中 读取的字节数,各个文件系统分别对应一个计数器,可以是LocalHDFSS3和KFS等

文件系统的写字节数(BYTES_WRITTEN)

由map和reduce等任务在各个文件系统中写的字节数

8-4.内置的FilelnputFormat任务计数器

计数器名称

说明

读取的字节数 (BYTES__READ)

由map任务通过FilelnputFormat读取的字节数

8-5.内置的FileOutputFormat任务计数器

计数器名称

写的字节数

(BYTES_WRITTEN)

说明

由map任务(针对仅含map的作业)或者reduce任务通过FileOutputFormat写的字节数

1.1.2. 作业计数器

作业计数器(表8-6)由jobtracker(或者YARN中的应用宿主)维护,因此无需在网络间传输数据,这一点与包括“用户定义的计数器”在内的其他计数器不同。这些计数器都是作业级別的统计量,其值不会随着任务运行而改变。例如,TOTAL_LAUNCHED_MAPS统计在作业执行过程中启动的map任务数,包括失败的map任务。

8-6.内置的作业计数器

计数器名称

说明

启用的map任务数 (TOTAL_LAUNCHED_MAPS)

启动的map任务数,包括以“推测执行”方式启动的 任务

启用的reduce任务数(TOTAL_LAUNCHED_REDUCES)

启动的reduce任务数,包括以“推测执行”方式启动的任务

启用的uber任务数(TOTAL_LAUNCHED_UBERTASKS)

启用的uber任务数(详情参见6.1.2节),该计数器仅限干基于YARN 的 MapReduce

uber中的map任务数 (NUM_UBER_SUBMAPS)

在uber任务中的map任务数,该计数器仅限于基于YARN 的 MapReduce

uber中的reduce任务数(NUM_UBER__SUBREDUCES)

在uber任务中的reduce任务数,该计数器仅限于于YARN 的 MapReduce

失败的map任务数 (NUM_FAILED_MAPS)

失败的map任务数,用户可参见6.2.1节对任务失败的 讨论,了解失败原因

失败的reduce任务数 (NUM_FAILED_REDUCES)

失畋的reduce任务数

失败的uber任务数 (NUM_FAILED_UBERTASKS)

失败的uber任务数,该计数器仅限于基于YARN的 MapReduce

数据本地化的map任务数 (DATA_L0CAL_MAPS)

与输入数据在同一节点上的map任务数

机架本地化的map任务数 (RACK_LOCAL_MAPS)

与输入数据在同一机架范围内、但不在同一节点上的 map任务数

其他本地化的map任务数(OTHER_LOCAL_MAPS)

与输入数据不在同一机架范围内的map任务数。由于机 架之间的带宽资源相对较少,Hadoop会尽量让map任务靠近输入数据执行,因此该计数器值一般比较小。详情参见图2-2

map任务的总运行时间 (SLOTS_MILLIS__MAPS)

map任务的总运行时间,单位毫秒。该计数器包括以推 测执行方式启动的任务

Reduce任务的总运行时间 (SLOTS_MILLIS_REDUCES)

reduce任务的总运行时间,单位毫秒。该值包括以推测 执行方式启动的任务

在保留槽之后,map任务 等待的总时间fallow_slots_ MILLIS一MAPS)

在为map任务保留槽之后所花费的总等待时间,单位是 .毫秒。槽保留是针对大内存作业的容量调度器特性,参 见9.4.4节,该计数器在基于YARN的MapReduce中

无效

在保留槽之后,reduce任务等待的总时间(FALLOW_SLOTS_MILLIS一REDUCES)

在为reduce任务保留槽之后,花在等待上的总时间,单位是毫秒。槽保留是针对大内存作业的容量调度器特性,详情参见9.4.4节,该计数器在基于YARN的MapReduce中无效

转载请注明:全栈大数据 » 8.1.1. 内置计数器

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址