求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
 
 
     
   
    全部     工程实例     标准规范     名校讲义     知识库    
 
 

Hadoop教程
Hadoop大数据解决方案
Hadoop介绍快速入门
Hadoop安装
Hadoop HDFS入门
MapReduce简介和入门
Hadoop程序入门实践
理解 MapReducer
MapReduce计数器和连接
MapReduce程序连接数据
Flume和Sqoop
Pig & Hive介绍
OOZIE 五分钟入门学习
 
 

MapReduce计数器和连接

    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助

在MapReduce的计数器是用于收集关于 MapReduce 工作的统计信息的机制。这个信息在MapReduce的作业处理的问题的诊断是很有用的。 计数器类似于将在 map 或 reduce 在代码日志信息中。

通常情况下,这些计数器在一个程序(map 或 reduce)中定义,当一个特定事件或条件(特定于该计数器)发生执行期间递增。计数器是一个很好的应用来从输入数据集跟踪有效和无效的记录。

有两种类型的计数器:

1. Hadoop 内置计数器: 有一些内置计数器存在每个作业中。下面是内置计数器组:

MapReduce任务计数器 - 收集任务的具体信息(例如,输入记录的数量)在它的执行期间。

文件系统计数器 - 收集信息像由一个任务读取或写入的字节数

FileInputFormat计数器 - 收集通过FileInputFormat读取的字节数的信息

FileOutputFormat计数器 - 收集的字节数量的信息通过 FileOutputFormat 写入

Job 计数器- 这些计数器使用 JobTracker。它们收集统计数据包括如,任务发起了作业的数量。

2. 用户定义的计数器

除了内置的计数器,用户可以定义自己的计数器,通过使用编程语言提供了类似的功能。 例如,在 Java 的枚举用于定义用户定义的计数器。

一个MapClass例子使用计数器计算缺失和无效值的数量:

上面的代码片段显示在 Map Reduce 实现计数器的示例。

在这里,SalesCounters是用“枚举”定义的计数器。它被用来计算 MISSING 和 INVALID 的输入记录。

在代码段中,如果 “country” 字段的长度为零那么它的值丢失,因此相应的计数器 SalesCounters.MISSING 递增。

接下来,如果 “sales” 字段开头是符号 '' ,则记录被视为无效。这通过递增计数器 SalesCounters.INVALID 来表示。

MapReduce 连接

连接两个大的数据集可以使用 MapReduce Join 来实现。然而,这个过程需要编写大量的代码来执行实际的连接操作。

连接两个数据集开始是通过比较每个数据集的大小。如果因为相比其他数据集一个数据集小,那么小数据集被分布到集群中的每个数据节点。一旦分散,无论是 Mapper 或 Reducer 使用更小的数据集进行查找匹配的大型数据集的记录,然后结合这些记录,形成输出记录。

这取决于在实际连接进行的地方,这个连接分为:

1. 映射端连接 - 当该联接是由映射器执行的,它称为映射端链接。在这种类型中,联结前的数据由映射函数实际来消耗的处理。它是强制性的,输入到每个映射是在分区中的形式,并且是按排序顺序。另外,必须有一个相等数目的分区,它必须由连接键进行排序。

2. Reduce端连接- 当连接是通过减速器进行的,称为reduce端连接。没有必要在此连接有数据集中在以结构化形式(或分区)。

在这里,映射端的处理发出连接这两个表的关键字和对应的元组。作为该处理的效果,所有的元组相同连接键都落在相同的 reducer,然后使用相同的连接键连接记录。

整体处理流程示于下图。

 


    您可以捐助,支持我们的公益事业。

金额: 1元 10元 50元

姓名:

邮件:

电话:

公司:

说明:

认证码: 验证码,看不清楚?请点击刷新验证码 必填



 
 捐助