分布式计算框架
需要编写代码执行,执行时会数据所在服务器上运行相同的计算代码
计算过程分为map 和reduce过程
map对多份数据进行拆分计算
reduce将分开的map结果合并一起计算
map的计算程序数量由文件块个数据决定,每个map计算一个块的数据
reduce的个数默认是一个;在进行数据拆分存储时,reduce个数由分区数和分桶数决定
map将数据传递给reduce过程称为shuffle过程
包含 分区,排序,合并
Map阶段
1-按照块数量进行split的块数据读取
2-split切割后的数据传递给对应的map进行处理,会对数据转为kv (张三,1) (张三,1),(李四,1)
3-map将处理的后的数据写入buffer缓存区
4-对缓冲区内的数据进行spill溢出(读取缓冲区内的数据)
5-对读取的数据进行分区,将数据拆分多份
6-对每份拆分的数据进行排序 sort
7-将拆分的数据写入不同的文件
8-在将每次溢出的数据合并merge在一起,保存同一文件,文件是临时文件,计算后会删除
Reduce阶段
1-根据的分区数创建出多个reduce
2-每个reduce从不同的map中fetch获取相同分区的文件数据
3-在将fetch后的文件合并,对合并后的数据进行排序
4-reduce对合并后的文件数据进行计算
5-reduce对结果输出到hdfs的目录下