Hadoop–Task 相关
在MapReduce计算框架中,一个应用程序被划分为Map和Reduce两个计算阶段。他们分别由一个或多个Map Task 和Reduce Task组成。
IFile
IFile是一种支持行压缩的存储格式。为了减少MapTask写入磁盘的数据量和跨网络传输的数据量,IFile支持按行压缩数据记录。当前Hadoop提供了ZLib(默认压缩方式)、BZip2等压缩算法。
IFile文件格式:<key-len, value-len, key, value>
排序
排序是MapReduce框架中最重要的从a组之一。Map Task和Reduce Task均会对数据(按照key)进行排序。该操作属于Hadoop的默认行为。任何应用程序均会被排序,而不管逻辑上是否需要。
对于Map Task,它会将处理的结果暂时存放到一个缓冲区,当缓冲区使用率达到一定阈值后,在对缓冲区中的数据进行以此排序。并将这些有序集合以IFile文件的形式写到磁盘上。而当数据处理完毕后,它会对磁盘上所有文件进行一次合并。已将这些文件形成一个大的有序文件。
对于Reduce Task,它从每个Map Task上面远程拷贝相应的数据文件,如果文件大小超过一定阈值,则放到磁盘,否则放到内存。如果磁盘上文件数目达到一定阈值,则进行一次合并以生成一个更大文件;如果内存中文件大小或者数目超过一定阈值,则进行一次合并后写到磁盘上。当所有数据拷贝完毕后,Reduce Task统一对内存和磁盘上的所有数据进行一次合并。
Map Task和Reduce Task的缓冲区数据合并使用Hadoop自己实现的快排算法,而IFile文件合并则使用了基于堆实现的优先队列。
快排
优先队列
文件归并由类Merger完成。其采用多轮递归合并的方式。每轮选取最小的前io.sort.factor(默认是10,用户可配置)个文件进行合并。并将产生的文件重新加入带合并列表中。知道剩下的文件数目小于io.sort.factor个,此时,他会返回指向由这些文件组成的小顶堆的迭代器。
Reporter
Reporter用来完成Task周期性的向TaskTracker汇报最新进度和计数器值。TaskReporter类实现了Reporter接口,并以线程形式启动。其汇报的信息中包含两部分:
转载于:https://www.cnblogs.com/lovemdx/p/3236182.html
总结
以上是生活随笔为你收集整理的Hadoop–Task 相关的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 同步复位和异步复位
- 下一篇: java的Access restrict