在MapReduce当中没有block块的概念,每一个maptask处理的一部分数据都叫做一个切片,默认的一个切片对应一个block块的大小,可以理解为一个block块对应一个maptask
步骤:
map阶段
第一步:读取文件,解析成key、value对,这里是我们的k1、v1
第二步:接收我们的k1、v1,自定义我们的map逻辑,转换成新的key2、value2进行输出,往下发送k2、v2
shuffle阶段
第三步:分区,形同key的value发送到同一个reduce里面去,key合并,value形成一个集合
第四步:排序,默认按照字段顺序进行排序
第五步:规约
第六步:分组
reduce阶段
第七步:接收我们的k2 、v2,自定义我们的reduce逻辑,转换成新的k3、v3进行输出
第八步:将k3、v3进行输出
APPmaster:很重要,全权负责任务的划分,资源的申请,任务进度的监控等工作
单词统计:
hello world
hadoop hive
sqoop hive
hadoop hive
第一步:读取文件,解析成key,value对,key是行偏移量,value是行文本内容(下一行是上一行的行偏移量)
key1 value1
0 hello world
11 hadoop hive
22 sqoop hive
#32 hadoop hive
第二步:自定义map逻辑,接收key1,value1转换成新的key2,value2进行输出
获取value1,按照空格进行切割
[hello,world],[hadoop,hive],[sqoop,hive]
hello world
hadoop hive
sqoop hive
转换成新的key2,value2往下发送
key2 value2
hello 1
world 1
hadoop 1
hive 1
sqoop 1
hive 1
第三步:分区,相同key的value发送到同一个reduce当中去,key进行合并,value形成一个集合
hive [1,1]
第四步:排序
第五步:规约
第六步:分组
第七部:reduce阶段,接收key2、value2,转换成新的key3、value3进行输出
接收 key2 value2
hive [1,1]
转换成新的key3,value3
hive3 value3
第八步:输出key3、value3
hive 2
....