sstutu 发表于 2014-4-25 00:02:11

根据自定义Hadoop中的计数器,根据控制台输出,判断mapreduce运行情况

问题导读:1.如何自定义计数器?2.计数器有多少个?3.计数器分为几种?
static/image/hrline/4.gif


计数器是用来记录job的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况。
1. 内置计数器我们运行上一章中的例子,看一下计数器的输出内容,如图6-1
图6-1在图6-1中,计数器有19个,分为四个组:File Output Format Counters、FileSystemCounters、File Input Format Counters和Map—Reduce Framkework。分组File Input Format Counters包括一个计数器Bytes Read,表示job执行结束后输出文件的内容包括19个字节(空格、换行都是字符)。分组File Output Format Counters包括一个计数器Bytes Written,表示job执行时读取的文件内容包括19个字节(空格、换行都是字符)。

2. 自定义计数器以上分析的是系统内置的标准计数器。除此之外,我们也可以自己定义计数器使用。在上一章例子中,我们打算在map方法中统计空行记录的数量。代码如图6-2。
图6-2在图6-2中,我们首先通过Mapper.Context类直接获得计数器对象。这里有两个形参,第一个是计数器组的名称,第二是计数器的名称。然后通过第62行判断是否存在空行。如果有,进入条件判断语句块,调用计数器对象的increment方法。执行输出如图6-3所示。
图6-3在这里,计数器是20个,多了一个计数器组“Error Rows”,多了一个计数器“Empty Row”。



perfri 发表于 2014-4-27 16:15:01

新手学习中,汲取经验了
页: [1]
查看完整版本: 根据自定义Hadoop中的计数器,根据控制台输出,判断mapreduce运行情况