MapReduce说的其实是applicationmaster把任务交给datanode之后,datanode中任务的执行过程,大家有必要可以看一下我之前发的yarn在任务进行时的工作流程https://blog.youkuaiyun.com/dudadudadd/article/details/111586667
最好还是看一下,因为如果其他人问出来,我们还是要从数据的提交那一块说起的
如上图,我以单个的datanode为例来说,在applicationmaster向yarn申请完资源之后,会把任务交给申请到的资源所在的datanode上,并通知启动容器来运行maptask,而启动的数量是由applicationmaster申请资源时就决定的,内部参考以数据切片数量为核心的一系列必要条件有相应的算法决定,每个mapTask拉那些数据applicationmaster也会通知
如果我们没有对任务做特定的自定义切片操作,那么为了节约资源理论上applicationmaster优先采用数据块同等数量的MapTask启动,MapTask拉数据时也会优先考虑机架感知,这是考虑到要减少网络IO等资源的消耗
在2.0版本中,maptask拉数据依靠的是自身默认的FileInputFormat中的recordreader组件,它会将数据拉取并组合成:行偏移量–对应行数据,这样的键值对交给setup、map(在读取期间会一直回调map方法)、cleanup这三个方法去执行
当数据经历了