Hadoop权威指南-ch2 MapReduce(1)

2018-04-25  本文已影响0人  元素周期表的十七君

注:本文涉及书中2.1~2.3小结

1. MapReduce任务过程:map和reduce

MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段。每个阶段都以键值对作为输入和输出,其类型有程序员来选择。程序员还需要写两个函数:map函数和reduce函数。

本书以气象数据的例子讲述了MapReduce的工作原理。

2. Java MapReduce

实现MapReduce需要三个部分:map函数、reduce函数和一些用来运行作业的代码。

1. map函数Mapper类实现,Mapper类声明一个map()虚方法。Mapper类是一个泛型类型,有4个形参类型,分别指定map函数的输入键、输入值、输出键、输出值的类型


补充

Mapper类是Hadoop提供的一个抽象类,我们可以继承这个基类并实现其中的相关接口函数.

Hadoop1.2.1中对Mapper类的定义如下:

public class Mapper<KEYIN, VALUEIN, KEYIN, VALUEIN>

Mapper类包含4个方法:setup(), map(), cleanup(), run()。其中,map方法是Mapper类的核心成员,主要工作都是在这里完成的,应用程序一般都会根据实际需要override该方法。

protected void map(KEYIN key, VALUEIN value, Context context)

其中key是传入map的键值,value是对应键值的value值,context是环境对象变量,供程序访问Hadoop的环境参数

map方法对输入的键值对进行处理,产生一系列的中间键值对,转换后的中间键值对可以有新的键值类型。


看完源码,感觉需要看看Java了T T

注:Hadoop本身提供了一套可优化网络序列化传输的基本类型,而不直接使用Java内嵌的类型,这些类型都在org.aache.hadoop.io包中。

2. 同理,reduce函数Reducer类实现。Reducer类也有4个形参类型,用于指定输入键、输入值、输出键、输出值的类型。reduce函数的输入类型必须匹配map函数的输出类型。

3. 写运行MapReduce的作业代码

注:

书中2.3小结给出了Hadoop在本地文件系统上的分析最高气温的实例,下一步准备对其进行复现。

上一篇下一篇

猜你喜欢

热点阅读