MR 原理简单总结
1读取
job 读取输入路径、遍历文件,根据文件数量和大小切片
2获得数据
TextInputFormat 获得每个切片的数据 调用LineRecoderReader方法,读取一行内容,key为行起始信息,value为行内容,nextKeyValue判断后面还有没有数据了。
3Maptask核心逻辑
4HashPartitioner分区器
计算key哈希值模以reduce的个数
5 MapOutBuffer 从内存溢出到磁盘中
有一个环形数组作为缓冲区,将接受到的数据,排序放入缓冲区中,当数据占据容器80%左右时会溢出,开始将数据写到磁盘上,内存从终点继续存储数据并排序。
Merge组件
merge组件读取磁盘中的数据,并将其按reduce任务区归并,排序并提供http下载服务。
shuffle
Fatch
从maptask机器上拉取属于自己任务的数据
Merge组件归并排序
GroupingComparator
排序并验证相邻的两个key是否相同。
Redece核心逻辑
输出到文件中
TextOutputFormat