MapReduce 编程模型
使用者只需要对Map()和Reduce()进行编程
多个<key,value集合>根据key,每个Key分一个reduce
实例解释:文件词频统计
hdfs处理 文件为数据块
-
框架将hdfs处理的数据块处理为<key(位置),value(每行文本)>的模式
【eg.<0,Hello World> <12, Bye World>】 -
map(2个):
一个block的过程:
1.<key(位置),value(每行文本)>输入到map函数中
【eg.<0,Hello World> <12, Bye World>】
2.map函数对每个<key,value>的value分词
3.输出形成<key(每个词),value(1)>
【eg.<Hello,1> <World,1> <Bye,1> <World,1>】
4.再merge为 <key,value集合>
【eg.<Hello,<1>>,<World,<1,1>>,<Bye,<1>>】
同理另一个Block:<Hello,<1>>,<Hadoop,<1,1>>,<Bye,<1>> -
在进入reduce前,多个block的结果merge:
<Hello,<1,1>>, <World,<1,1>>, <Hadoop,<1,1>>, <Bye,<1,1>> -
reduce(4个)
<Hello,<1,1>>的过程
1.合并后的<key,value集合>输入到reduce函数
2.reduce函数计数
3.输出形成 多个<key,value>
【eg. <Hello,2>】
同理其他key:<World,2>, <Hadoop,2>, <Bye,2> -
结果传给hdfs
细化的原理步骤,有篇文章很好:
https://www.cnblogs.com/yx-zhang/p/9572221.html