Hadoop权威指南-ch2 MapReduce(1)

注:本文涉及书中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在本地文件系统上的分析最高气温的实例,下一步准备对其进行复现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容