概念简述
简介
MapReduce是一种计算框架,计算模型用来解决海量数据计算问题。在运行时一部分负责管理叫MRAppMaster运行在yarn容器中,剩下的统称为任务task也是在yarn容器中运行。
MR分为Map阶段和Reduce阶段,Map读取hdfs中的数据经过处理后交给Reduce进行处理将结果存入hdfs中。实际工作中我们只需要实现map,reduce,dirver阶段的工作,其他的读取传输排序组合由框架完成。
Map任务为一个java进程分布式运行在很多节点上,这样hdfs的海量数据就可以被很多的map任务处理。一个block对应一个map任务,比如hdfs数据由3个block组成就会有3个map任务来处理,这样可以并行进行数据处理。
Map处理的结果会交给Reduce任务,而一般map任务和reduce任务不在同一个节点,map通过网络将数据传输给reduce,map和reduce分布执行不同的逻辑。Map读取hdfs数据是按照一行一个<k1,v1>键值对的形式进行读取的,K1为字节顺序,v1为一行的内容。
例
文件hello
twofour
one two three
map函数
public void map(k1,v1,context){
context.write(k2,v2);//执行map处理逻辑
}
Hdfs的文件hello中的会被解析为<0,two four>和<9,one two three>,第二行的第一个字节顺序是9。
框架会对map输出的<k2,v2>进行排序