设为首页 加入收藏

TOP

【转】MapReduce:默认Counter的含义(一)
2019-09-03 03:28:35 】 浏览:49
Tags:MapReduce: 默认 Counter 含义

MapReduce Counter为提供我们一个窗口:观察MapReduce job运行期的各种细节数据。今年三月份期间,我曾经专注于MapReduce性能调优工作,是否优化的绝大多评估都是基于这些Counter的数值表现。MapReduce自带了许多默认Counter,可能有些朋友对它们有些疑问,现在我分析下这些默认Counter的含义,方便大家观察job结果。 

    我的分析是基于Hadoop0.21,我也看过Hadoop其它版本的Counter展现,细节大同小异,如果有差异的地方,以事实版本为主。 

    Counter有"组group"的概念,用于表示逻辑上相同范围的所有数值。MapReduce job提供的默认Counter分为五个组,下面逐一介绍。这里也拿我的一份测试数据来做详细比对,它们会以表格的形式出现在各组描述中。 

FileInputFormatCounters 
    这个group表示map task读取文件内容(总输入数据)的统计 
   

  Counter Map Reduce Total
FileInputFormatCounters BYTES_READ 1,109,990,596 0 1,109,990,596


    BYTES_READ 
         Map task的所有输入数据(字节),等于各个map task的map方法传入的所有value值字节之和。


FileSystemCounters 
    MapReduce job执行所依赖的数据来自于不同的文件系统,这个group表示job与文件系统交互的读写统计 
 

  Counter Map Reduce Total
FileSystemCounters FILE_BYTES_READ 0 1,544,520,838 1,544,520,838
  FILE_BYTES_WRITTEN 1,544,537,310 1,544,520,838 3,089,058,148
  HDFS_BYTES_READ 1,110,269,508 0 1,110,269,508
  HDFS_BYTES_WRITTEN 0 827,982,518 827,982,518

  
    FILE_BYTES_READ
        job读取本地文件系统的文件字节数。假定我们当前map的输入数据都来自于HDFS,那么在map阶段,这个数据应该是0。但reduce在执行前,它的输入数据是经过shuffle的merge后存储在reduce端本地磁盘中,所以这个数据就是所有reduce的总输入字节数。 

    FILE_BYTES_WRITTEN 
        map的中间结果都会spill到本地磁盘中,在map执行完后,形成最终的spill文件。所以map端这里的数据就表示map task往本地磁盘中总共写了多少字节。与map端相对应的是,reduce端在shuffle时,会不断地拉取map端的中间结果,然后做merge并不断spill到自己的本地磁盘中。最终形成一个单独文件,这个文件就是reduce的输入文件。 

    HDFS_BYTES_READ 
        整个job执行过程中,只有map端运行时,才从HDFS读取数据,这些数据不限于源文件内容,还包括所有map的split元数据。所以这个值应该比FileInputFormatCounters.BYTES_READ 要略大些。 

    HDFS_BYTES_WRITTEN 
        Reduce的最终结果都会写入HDFS,就是一个job执行结果的总量。 


Shuffle Errors 
    这组内描述Shuffle过程中的各种错误情况发生次数,基本定位于Shuffle阶段copy线程抓取map端中间数据时的各种错误。 

  Counter Map Reduce Total
Shuffle Errors BAD_ID 0 0 0
  CONNECTION 0 0 0
  IO_ERROR 0 0 0
  WRONG_LENGTH 0 0 0
  WRONG_MAP 0 0 0
  WRONG_REDUCE 0 0 0


    BAD_ID 
        每个map都有一个ID,如attempt_201109020150_0254_m_000000_0,如果reduce的copy线程抓取过来的元数据中这个ID不是标准格式,那么此Counter增加 



    CONNECTION 
        表示copy线程建立到map端的连接有误 

    IO_ERROR 
        Reduce的copy线程如果在抓取map端数据时出现IOException,那么这个值相应增加 

    WRONG_LENGTH 
        map端的那个中间结果是有压缩好的有格式数据,所有它有两个length信息:源数据大小与压缩后数据大小。如果这两个length信息传输的有误(负值),那么此Counter增加 

    WRONG_MAP 
        每个c

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQLServer?学习笔记之超详细基础S.. 下一篇Database coalesce

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目