MapTask原理分析
一、MapTask运行机制详解
MapTask流程
详细步骤:
- 首先,读取数据组件InputFormat(默认TextInputFormat)会通过getSplits方法对输入目录中文
件进行逻辑切片规划得到splits,有多少个split就对应启动多少个MapTask。split与block的对应关
系默认是一对一。 - 将输入文件切分为splits之后,由RecordReader对象(默认LineRecordReader)进行读取,以\n
作为分隔符,读取一行数据,返回<key,value>。Key表示每行首字符偏移值,value表示这一行
文本内容。 - 读取split返回<key,value>,进入用户自己继承的Mapper类中,执行用户重写的map函数。
RecordReader读取一行这里调用一次。 - map逻辑完之后,将map的每条结果通过context.write进行collect数据收集。在collect中