hadoop之MapReduce api编程

[TOC]

hadoop是我们上的课,要做实验了,顺便介绍和总结一下hadoop的内容吧

实验

基本原理

点击跳转- ->参考博文

MapReduce应用

1)Mapper任务
① 读取输入文件内容(可以来自于本地文件系统,或HDFS文件系统等),对输入文件的每一行,解析成key-value对[K1,V1]。K1表示行起始偏移量,V1表示读取的一行内容。
② 调用map()方法,将[K1,V1]作为参数传入。在map()方法中封装了数据处理的逻辑,对输入的key、value进行处理。
③ map()方法处理的结果也用key-value的方式进行输出,记为[K2, V2]。

2)Reducer任务
① 在执行Reducer任务之前,有一个shuffle的过程对多个mapper任务的输出进行合并、排序,输出[K2, {V2, …}]。
② 调用reduce()方法,将[K2, {V2, …}]作为参数传入。在reducer()方法中封装了数据汇总的逻辑,对输入的key、value进行汇总处理。
③ reduce()方法的输出被保存到指定的目录下。

代码实现

要继承MapReduceBase 并实现接口Mapper<LongWriteable,Text,Text,IntWriteable>这四个泛型其实是对java泛型的一个改变而已可以改的分别对应,分别指定map函数的输入键,输入值,输出键,输出值类型以上面的为例
map()函数的输入是一个键和值,首先将包含一行输入的Text转换成String,之后使用subString()方法提前感兴趣的列

reduce函数通过Reducer进行类似定义
extends MapReduceBase implents Reducer<Text,IntWriteable,Text,IntWritable>也是指定reduce函数的输入和输出类型,但是要和map对应,就是reducer的输入前两个和map的输出对应.

运行mapReduce作业Jobconf conf


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注