在MapReduce计算框架中,一个应用程序被划分为Map和Reduce两个计算阶段。他们分别由一个或多个Map Task 和Reduce Task组成。

  1. Map Task: 处理输入数据集合中的一片数据,并将产生的若干个数据片段写到本地磁盘。

    1. 按照用户提供的InputFormat将对应的InputSpilt解析成一系列的key/value, 并以此交给用户编写的map()函数处理。
    2. 按照指定的Partitioner对数据分片,以确定每个key/value将交给哪个Reducer Task处理。
    3. 将数据交给用户定义的Combiner进行以此本地规约(用户没有定义则直接跳过)
    4. 将处理结果保存到本地磁盘。
  2. Reduce Task: 从每个Map Task上远程拷贝相应的数据片段,经过分组聚集和规约后,将结果写到HDFS上作为最终结果。
    1. 通过HTTP请求从各个已经运行完成的Map Task上拷贝对应的数据分片。
    2. 待数据拷贝完成,以key为关键字对所有数据进行排序。通过排序,key相同的记录聚集在一起形成若干分组。
    3. 将每组数据交给用户编写的reduce()函数处理。
    4. 将结果直接写到HSFS上面作为最终输出结果。

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文件合并则使用了基于堆实现的优先队列。

快排

  1. 枢轴选择:使用序列的首尾和中间元素的中位数作为枢轴
  2. 子序列划分:两个索引i,j分别从左右两端扫描,i扫描到大于等于枢轴的等值,j扫描到小于等于枢轴的元素停止,然后交换两个元素。重复直到相遇
  3. 相同元素的优化: 每次划分子序列,将于枢轴相同的元素集中存放到中间位置,让它们不再参与后续的递归处理过程。即序列划分三部分:小于枢轴、等于枢轴、大于枢轴
  4. 减少递归次数:当子序列中元素数目小于13时,直接使用插入排序算法,不再递归。

优先队列

文件归并由类Merger完成。其采用多轮递归合并的方式。每轮选取最小的前io.sort.factor(默认是10,用户可配置)个文件进行合并。并将产生的文件重新加入带合并列表中。知道剩下的文件数目小于io.sort.factor个,此时,他会返回指向由这些文件组成的小顶堆的迭代器。

Reporter

Reporter用来完成Task周期性的向TaskTracker汇报最新进度和计数器值。TaskReporter类实现了Reporter接口,并以线程形式启动。其汇报的信息中包含两部分:

  1. 任务执行进度

    1. Map Task 而言: 使用已读取数据量占数据总量的比例作为任务当前进度值
    2. Reduce Task: 其可以分解为三个阶段: Shuffle、Sort、Reduce。每个阶段占任务总进度的1/3.考虑在Shuttle阶段,Reduce Task需要从M(M为Map Task数目)个Map Task上读取数据。因此,可被分解为M个阶段,每个阶段占Shuffle进度的1/M。
  2. 任务计数器值: 是由Hadoop提供的,用于实现跟踪任务运行进度的全局技术功能。任务计数器由两部分组成<name, value>.计数器以组为单位进行管理,一个计数器属于一个计数器组。Hadoop规定一个作业最多包含120个计数器(可通过参数mapreduce.job.counters.limit设定),50个计数器组。

转载于:https://www.cnblogs.com/lovemdx/p/3236182.html

Hadoop–Task 相关相关推荐

  1. Hadoop/Spark相关面试问题总结

    Hadoop/Spark相关面试问题总结 面试回来之后把当中比較重要的问题记了下来写了个总结: (答案在后面) 1.简答说一下hadoop的map-reduce编程模型 2.hadoop的TextIn ...

  2. hadoop mapreduce相关类 FileInputFormat

    hadoop mapreduce相关类 FileInputFormat 官方链接 http://hadoop.apache.org/docs/r2.9.1/api/ 功能 InputFormat会生成 ...

  3. CCAH-CCA-500-4题:Where are Hadoop task log files stored?

    4.Where are Hadoop task log files stored? For each YARN job, the Hadoop framework generates task log ...

  4. Hadoop 中文编码相关问题 -- mapreduce程序处理GBK编码数据并输出GBK编码数据

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop 中文编码相关问题 -- mapreduce程序处理GBK编码数据并输出GBK编码数据 输入是GBK文件, 输出也 ...

  5. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  6. 【Android】Activity的task相关

    转自:http://blog.csdn.net/liuhe688/article/details/6761337 古人學問無遺力,少壯工夫老始成.紙上得來終覺淺,絕知此事要躬行.南宋.陸遊<冬夜 ...

  7. Activity的task相关

    上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大家介绍一下.task是一个具有栈结构的容器,可以放置多个Activity实例.启动一个应用,系统就会为之 ...

  8. Android Task 相关

    在日常开发过程中,只要涉及到activity,那么对task相关的东西总会或多或少的接触到,不过对task相关的一些配置的作用一直理解的还不是很透彻,官方文档在细节上说的也不够清楚,要透彻理解还是得自 ...

  9. 基础总结篇之三:Activity的task相关

    古人學問無遺力,少壯工夫老始成.紙上得來終覺淺,絕知此事要躬行.南宋.陸遊<冬夜讀書示子聿(yù)> 软件行业也是一样,多少前辈不遗余力的奋斗才出现了软件行业的繁荣的景象,其中已有不少成为 ...

最新文章

  1. 如何看待程序媛们的职场焦虑和未来职业规划?
  2. 怎么看待传菜机器人_太科幻了!这家顺德菜餐厅里全是机器人,炒菜送菜样样行...
  3. 【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
  4. Go的GOPATH与GOROOT
  5. 从Ecipse中导出程序至apk
  6. 谷歌浏览器实现直接打印效果
  7. C# via CLR之IL中间语言初步探索
  8. Notepad2 巧妙替换回车换行符
  9. HTML——添加网页背景音乐
  10. 史话上:量子物理学的前世今生
  11. webpack-theme-color-replacer 路由跳转之后,样式丢失
  12. 别墅家庭无线WiFi覆盖解决方案
  13. java实现Word 文档形式的导出功能
  14. MVC用filter做权限过滤
  15. win10系统警告unknown hard error开不了机怎么办
  16. Rust GUI 编程漫谈:超越 Web 与原生 GUI
  17. 继承 super的讲解
  18. sin函数对照表_三角函数表值对照表格
  19. 沪深A股分析数据投资参考信息API接口(JSON标准格式,Get请求方式)
  20. VR多人协同演示(2)

热门文章

  1. mysql分表方法-----MRG_MyISAM引擎分表法
  2. Python中的matplotlib xticks
  3. SSIS - 5.优先约束
  4. bzoj 1016: [JSOI2008]最小生成树计数【dfs+克鲁斯卡尔】
  5. freemarker入门教程
  6. Apache,php,mysql整合安装包 for Windows 2000/xp/2003
  7. 判断一个where条件的对错php,sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是一个错误?...
  8. Windows Pe 第三章 PE头文件(中)
  9. POJ1679判断最小生成树的唯一性
  10. LA3708墓地雕塑