MapReduce
MapReduce是一种可用于数据处理的编程模型。
Hadoop可以运行各种语言版本的MapReduce程序。
MapReduce程序本质上是并行运行的,因此可以将大规模的数据分析任务分发给任何一个拥有足够多机器的数据中心。
MapReduce的优势在于处理大规模数据集。
map和reduce
MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段。
每阶段都以键-值对作为输入和输出,其类型由程序员来选择。程序员还需要写两个函数:map函数和reduce函数。
MapReduce对数据的处理:都是以键值对<key,value>的形式
(input) <k1, v1> -> map -> <k2, v2> -> reduce -> <k3, v3> (output)
编写MapReduce程序(单词统计)
- 创建java项目,导入jar包
- 编写map函数
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
/*
* Mapper类型是一个泛型类型:
* Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
* 有四个形参类