计数器参数详解

发布时间:2017-6-29 10:33:31编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"计数器参数详解",主要涉及到计数器参数详解方面的内容,对于计数器参数详解感兴趣的同学可以参考一下。

计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计。计数器还可以辅助诊断系统故障。
MapReduce 计数器(Counter)为我们提供一个窗口,用于观察 MapReduce Job 运行期的各种细节数据。对MapReduce性能调优很有帮助,MapReduce性能优化的评估大部分都是基于这些 Counter 的数值表现出来的。
MapReduce包含如下内置计数器:
1、MapReduce任务计数器
MAP_INPUT_RECORDS
map 输入的记录数。作业中所有 map 已处理的输入记录数。每次 RecorderReader 读到一条记录并将其传给 map 的 map() 函数时,该计数器的值增加。
MAP_SKIPPED_RECORDS
map 跳过的记录数。作业中所有 map 跳过的输入记录数。
MAP_INPUT_BYTES
map 输入的字节数。作业中所有 map 已处理的未经压缩的输入数据的字节数。每次 RecorderReader 读到一条记录并 将其传给 map 的 map() 函数时,该计数器的值增加。
SPLIT_RAW_BYTES
分片split的原始字节数。由 map 读取的输入-分片对象的字节数。这些对象描述分片元数据(文件的位移和长度),而不是分片的数据自身,因此总规模是小的
与map task 的split相关的数据都会保存于HDFS中,而在保存时元数据也相应地存储着数据是以怎样的压缩方式放入的,它的具体类型是什么,这些额外的数据是 MapReduce框架加入的,与job无关,这里记录的大小就是表示额外信息的字节大小
MAP_OUTPUT_RECORDS
map 输出的记录数。作业中所有 map 产生的 map 输出记录数。每次某一个 map 的Context 调用 write() 方法时,该计数器的值增加
Map的输出结果key/value都会被序列化到内存缓冲区中,所以这里的bytes指序列化后的最终字节之和
MAP_OUTPUT_BYTES
map 输出的字节数。作业中所有 map 产生的 未经压缩的输出数据的字节数。每次某一个 map 的 Context 调用 write() 方法时,该计数器的值增加。
MAP_OUTPUT_MATERIALIZED_BYTES
map 输出的物化字节数。map 输出后确实写到磁盘上的字节数;若 map 输出压缩功能被启用,则会在计数器值上反映出来
COMBINE_INPUT_RECORDS
combine 输入的记录数。作业中所有 Combiner(如果有)已处理的输入记录数。Combiner 的迭代器每次读一个值,该计数器的值增加。
COMBINE_OUTPUT_RECORDS
combine 输出的记录数。作业中所有 Combiner(如果有)已产生的输出记录数。每当一个 Combiner 的 Context 调用 write() 方法时,该计数器的值增加。
REDUCE_INPUT_GROUPS
reduce 输入的组。作业中所有 reducer 已经处理的不同的码分组的个数。每当某一个 reducer 的 reduce() 被调用时,该计数器的值增加。
REDUCE_INPUT_RECORDS
reduce 输入的记录数。作业中所有 reducer 已经处理的输入记录的个数。每当某个 reducer 的迭代器读一个值时,该计数器的值增加。如果所有 reducer 已经处理完所有输入, 则该计数器的值与计数器 “map 输出的记录” 的值相同
REDUCE_OUTPUT_RECORDS
reduce 输出的记录数。作业中所有 map 已经产生的 reduce 输出记录数。每当某一个 reducer 的 Context 调用 write() 方法时,该计数器的值增加。
REDUCE_SKIPPED_GROUPS
reduce 跳过的组数。作业中所有 reducer 已经跳过的不同的码分组的个数。
REDUCE_SKIPPED_RECORDS
reduce 跳过的记录数。作业中所有 reducer 已经跳过输入记录数。
REDUCE_SHUFFLE_BYTES
reduce 经过 shuffle 的字节数。shuffle 将 map 的输出数据复制到 reducer 中的字节数。
REDUCE_SHUFFLE_BYTES
Reduce端的copy线程总共从map端抓取了多少的中间数据,表示各个map task最终的中间文件总和
SPILLED_RECORDS
溢出的记录数。作业中所有 map和reduce 任务溢出到磁盘的记录数。
CPU_MILLISECONDS
CPU 毫秒。总计的 CPU 时间,以毫秒为单位,由/proc/cpuinfo获取。
PHYSICAL_MEMORY_BYTES
物理内存字节数。一个任务所用物理内存的字节数,由/proc/cpuinfo获取
VIRTUAL_MEMORY_BYTES
虚拟内存字节数。一个任务所用虚拟内存的字节数,由/proc/cpuinfo获取
COMMITTED_HEAP_BYTES
有效的堆字节数。在 JVM 中的总有效内存量(以字节为单位),可由Runtime().getRuntime().totaoMemory()获取。
GC_TIME_MILLIS
GC 运行时间毫秒数。在任务执行过程中,垃圾收集器(garbage collection)花费的时间(以毫秒为单位), 可由 GarbageCollector MXBean.getCollectionTime()获取;该计数器并未出现在1.x版本中。
SHUFFLED_MAPS
由 shuffle 传输的 map 输出数。有 shuffle 传输到 reducer 的 map 输出文件数。
每个reduce几乎都得从所有map端拉取数据,每个copy线程拉取成功一个map的数据,那么增1,所以它的总数基本等于 reduce number * map number
Failed Shuffles
失败的 shuffle 数。在 shuffle 过程中,发生拷贝错误的 map 输出文件数,该计数器并没有包含在 1.x 版本中。
Merged Map outputs
被合并的 map 输出数。在 shuffle 过程中,在 reduce 端被合并的 map 输出文件数,该计数器没有包含在 1.x 版本中。
记录着shuffle过程中总共经历了多少次merge动作
2、文件系统计数器
BYTES_READ
文件系统的读字节数。由 map 和 reduce 等任务在各个文件系统中读取的字节数,各个文件系统分别对应一个计数器,可以是 Local、HDFS、S3和KFS等。
BYTES_WRITTEN
文件系统的写字节数。由 map 和 reduce 等任务在各个文件系统中写的字节数。
FILE: Number of bytes read=13780
FILE: Number of bytes written=323356936
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
job读取本地文件系统的文件字节数。假定我们当前map的输入数据都来自于HDFS,那么在map阶段,这个数据应该是0。但reduce在执行前,它 的输入数据是经过shuffle的merge后存储在reduce端本地磁盘中,所以这个数据就是所有reduce的总输入字节数。
map的中间结果都会spill到本地磁盘中,在map执行完后,形成最终的spill文件。所以map端这里的数据就表示map task往本地磁盘中总共写了多少字节。与map端相对应的是,reduce端在shuffle时,会不断地拉取map端的中间结果,然后做merge并 不断spill到自己的本地磁盘中。最终形成一个单独文件,这个文件就是reduce的输入文件。
HDFS: Number of bytes read=176389306399
HDFS: Number of bytes written=0
HDFS: Number of read operations=4835
HDFS: Number of large read operations=0
HDFS: Number of write operations=1378
整个job执行过程中,只有map端运行时,才从HDFS读取数据,这些数据不限于源文件内容,还包括所有map的split元数据。所以这个值应该比FileInputFormatCounters.BYTES_READ 要略大些。
Reduce的最终结果都会写入HDFS,就是一个job执行结果的总量。

3、作业计数器
TOTAL_LAUNCHED_MAPS
启用的map任务数。启动的map任务数,包括以“推测执行” 方式启动的任务。
TOTAL_LAUNCHED_REDUCES
启用的 reduce 任务数。启动的reduce任务数,包括以“推测执行” 方式启动的任务。
NUM_FAILED_MAPS
失败的map任务数。
NUM_FAILED_REDUCES
失败的 reduce 任务数
DATA_LOCAL_MAPS
与输入数据在同一节点的 map 任务数。
Job在被调度时,如果启动了一个data-local(源文件的幅本在执行map task的taskTracker本地)
RACK_LOCAL_MAPS
机架本地化的 map 任务数。与输入数据在同一机架范围内、但不在同一节点上的 map 任务数。
OTHER_LOCAL_MAPS
其它本地化的 map 任务数。与输入数据不在同一机架范围内的 map 任务数。由于机架之间的宽带资源相对较少,Hadoop 会尽量让 map 任务靠近输入数据执行,因此该计数器值一般比较小。
SLOTS_MILLIS_MAPS
map 任务的总运行时间。map 任务的总运行时间,单位毫秒。该计数器包括以推测执行方式启动的任务。
SLOTS_MILLIS_REDUCES
reduce 任务的总运行时间。reduce任务的总运行时间,单位毫秒。该值包括以推测执行方式启动的任务。
FALLOW_SLOTS_MILLIS_MAPS
在保留槽之后,map任务等待的总时间。在为 map 任务保留槽之后所花费的总等待时间,单位是毫秒。
当前job为某些map task的执行保留了slot,总共保留的时间是多少
FALLOW_SLOTS_MILLIS_REDUCES
在保留槽之后,reduce 任务等待的总时间。在为 reduce 任务保留槽之后,花在等待上的总时间,单位为毫秒。


上一篇:DecorView 拦截上层app中的 触摸事件
下一篇:什么时运行时,什么是编译时?

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款