流程图与过程详解
MapTask阶段
-
既然需要进行数据处理,自然需要我们提供数据,那么首先我们需要提供待处理的文件,可以是一个也可以是多个
-
在我们(客户端)提交(submit())数据前,客户端会获取数据的信息,根据参数配置,形成任务分配的规划,即计划切片数(默认一个切片大小128M,hadoop老版本是64M)
注:虽然切片的大小是按照128M为一个分界线,但是如果有两个文件需要被切片,那么不论第二的文件多小,都独占一个切片,不需要跟在第一个文件最后一个切片的末尾,如图
-
然后需要提交切片信息,包含job.split(切片)、wc.jar(本地模式无需提交,集群下需要)、job.xml(配置信息),这些信息
-
接着Yarn会调用RM(ResourceManager)会创建MrAppmaster(job资源的老大)、NodeManager。其中MrAppmaster会根据split(分片)决定启动MapTask的数量。
-
开始读取数据,调用InputFormat这个接口去读取,其中默认情况下是采用InputFormat下的TextInputFormat这个具体实现类进行的,特点是每次读取文本数据,是一