知识大全 hadoop MapReduce Job失效模型

Posted

篇首语:成功无须解释,失败却有许多托辞。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 hadoop MapReduce Job失效模型相关的知识,希望对你有一定的参考价值。

hadoop MapReduce Job失效模型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  hadoop设计的初衷就是容错 计算任务(MapReduce task)能够在节点宕机或其它随机错误下自行恢复

  但是hadoop并不完美 在实际运营中 我发现MapReduce Job仍然经常会因为一些偶发性错误而

  运行失败 所以我决定深入探究一下各种不同因素是如何导致job失败的

  如果一个hadoop job的某个给定task在失败预定次(默认是 )后 整个job就会失败

  这可以通过 mapred map max attempts 和 mapred reduce max attempts 属性来设置

  一个task可能由于各种偶发原因而失败 比如我发现的情况就有磁盘满 hadoop本身的bug 或者硬件失效(e g : 磁盘只读)

  下面是针对job失败的概率总结的一个大致公式:

  P[个别task失败的最大次数] = P[task失败] ^ (task总失败次数)

  P[task成功] = P[个别task失败的最大次数]

  P[job成功] = P[task成功] ^ (task数量)

  P[job失败] = P[job成功]

  P[job失败] = ( P[task失败] ^ (task总失败次数) ) ^ (task数量)

  task失败的最大次数通过mapred max max tracker failures设置(默认为 )

  我们来分析一个负载为 个map task的job:

  task数量  最大失败数  P[task失败]  P[job失败]

        

        

        

        

        

        

        

        

        

        

  如果task失败概率低于 %的话 job失败概率几乎可以不计 重点就是保证集群稳定 保持较小失败概率  

  我们同样可以看到 mapred max tracker failures 参数的重要性 如果其取值小于 时 job失败的概率明显上升 就算task失败概率降低到 %  

  相较mapper而言 reducer运行的时间更长 这意味着其更容易遭受意外事故 也就是说 我们可以肯定reducer的失败概率比mapper要大很多 但是从另一方面来说 通常reducer task的数量要小于mapper数量 这个又作了一定补偿

  下面我们来看看一组基于reducer的失效概率分析:

  task数量  最大失败数  P[task失败]  P[job失败]

    

    

    

    

    

    

    

    

        

    

  

  

        

    

    

    

    

  从上述数据中可以发现 只有当reducer失败的概率超过 %时才会导致一定的job失败几率 (同样可发现 task最大失败数低于 时 job失败率显著上升)

  坏节点(有故障的机器节点)

  在整个失效模型中还有一个很重要的因子需要考虑 那就是失效节点 通常若出现整个节点失效 那么在此节点上运行的所有task都会失败 失效原因可能是因为磁盘损坏(通常的症状是出现 磁盘只读   或 盘符丢失   ) 磁盘写满等 一旦出现坏节点 你会发现在此节点被列入黑名单之前(被job列入黑名单的节点不会被job再次分配其任务) 会有一大堆 map/reduce task失败 为了简化我们的分析 我假设给定坏节点会导致固定数量的task失败 另外 我假设给定task只会在给定坏节点上中招一次 因为节点会在不久后被列入黑名单 我们用 b tasks 来标记在坏节点上失败过的task 其它task标记为 n tasks b task 会在坏节点上遭受一次失败 所以后续如果job再出现 最大task失败数 次失败task就会导致job失败 在我们的集群中 我曾发现一个坏节点引发 个task失败 那么我就以此为据 给出reduce阶段失效概率的公式:

  b tasks数量 = 坏节点数量 *

  P[所有b task都成功] = ( P[task失败概率] ^ (最大task失败数 )) ^ (b tasks数量)

  P[所有n task都成功] = ( P[task失败] ^ (最大task失败数)) ^ (task数量 b task数量)

  P[job成功] = P[所有b task成功] * P[所有n task成功]

  P[job成功] = ( P[task失败]^(最大task失败数 ))^(b task数量) * ( P[task失败]^(最大task失败数))^(最大task数 b task数)

  P[job失败] = P[job成功]

  因为mapper数量通常较多 所以少数坏节点对于以上公式计算的结果并没有太大的出入 但对reducer而言 其数量较少 所以以上公式计算出

  的结果就有比较明显的变化:

  task数量  最大失败数  P[task失败]  坏节点数量  P[job失败]

        

  

        

  

        

  

        

  

          

      

  

  

        

  

        

  

  值得庆幸的是结果并没有发生戏剧性的变化 在 个坏节点的情况下 只导致失败率提高到了排除坏节点条件下的 ~ 倍

cha138/Article/program/Java/hx/201311/25960

相关参考

知识大全 hadoop完全分布式和伪分布式有什么不同

hadoop完全分布式和伪分布式有什么不同,学习hadoop伪分布式可以吗先回答你标题的提问:hadoop完全分布式:3个及以上的实体机或者虚拟机组件的机群。hadoop伪分布式:一个节点看了以上两点

知识大全 vware安装linux需要运行hadoop定制哪些应用

vware安装linux需要运行hadoop定制哪些应用sshjava然后就可以安装hadoop了,具体操作可以参考下面的网址:linuxidc./Linux/2011-08/40153.htm要运行

知识大全 如何向 hadoop 导入数据

如何向hadoop导入数据1.2使用Hadoopshell命令导入和导出数据到HDFS实验准备实例需要用到的数据-weblog_entries.txt在namenode创建2个文件夹用来存放实验用的数

知识大全 在Hadoop上用C#编程

在Hadoop上用C#编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Microsoft在去

知识大全 hadoop分布式与伪分布式能同时在一台机子上实现么

hadoop分布式与伪分布式能同时在一台机子上实现么?如何实现?应该可以,因为hadoop的不同就是安装的文件夹不一样,你启动的时候进入不同的hadoop文件夹执行start-all就可以了如何实现分

知识大全 在eclipse下配置生成 hadoop-eclipse-plugin jar包

  想在eclipse下编写Hadoop的程序必须要在eclipse下安装个所谓的hadoopeclipseplugin即插件貌似从hadoop版本后都不直接提供jar包了所以必须得自己编译一个因为是

知识大全 hadoop中hdfs主节点会储存数据吗

hadoop中hdfs主节点会储存数据吗不会存储数据,数据节点专门存储数据,主节点存储了元数据信息。主节点的磁盘中存储了文件到块的关系,集群启动后,数据节点会报告名字节点机器和块的关系,这两个关系组合

知识大全 数据库与hadoop与分布式文件系统的区别和联系

数据库与hadoop与分布式文件系统的区别和联系1.用向外扩展代替向上扩展扩展商用关系型数据库的代价是非常昂贵的。它们的设计更容易向上扩展。要运行一个更大的数据库,就需要买一个更大的机器。事实上,往往

知识大全 oracle中job的使用

  一设置初始化参数job_queue_processes  sql>altersystemsetjob_queue_processes=n;(n>)  job_queue_process

知识大全 如何在51job上发布招聘信息

如何在51job上发布招聘信息先在“企业报务”上申请一个企业用户,然后登录,里面有相关招聘发布的板块,也可以联系51JOB的客服帮助怎么在51job上发布招聘信息到工商去注册,然后51上认证企业,就可