IFile存储格式
IFile是支持行压缩的存储格式。 保存的是有序数据集,因为MapTask会根据key值进行排序。
排序
对于Map Task:将处理的结果暂时放到一个缓冲区中,当缓冲区使用率到达一定阈值后,再对缓冲区中的数据进行一次排序,并将这些有序数据以IFile文件形式写到磁盘中,而当数据处理完毕后,会对磁盘上所有文件进行一次合并,将小文件合并到一个大文件。
对于Reduce Task:它从每个Map Task上远程拷贝相应的数据文件,如果文件大小超过一定阈值,则放到磁盘上,否则放到内存中,如果磁盘上文件数目达到一定阈值,则进行一次合并以生成一个更大文件;如果内存中文件大小或者数目超过一定阈值,则进行一次合并后将数据写到磁盘上。当所有数据拷贝完毕后,Reduce Task统一对内存和磁盘上的所有数据进行一次合并。
Map Task和Reduce Task运行过程中,缓冲区排序用快排,IFile用堆排序。
Reporter
Task周期性向Task Tracker汇报最新进度和计数器值,由Reporter组件实现的。 在Map/Reduce Task中,TaskReporter类实现了Reporter接口,并且以线程形式启动,TaskReporter汇报信息包括两部分:任务执行进度和任务计数器值。
|