Note:这里描述的黑名单是指jobtracker网页summary表格中显示的”Blacklisted Nodes",称之为集群黑名单.

在HADOOP-4305之前,Hadoop中每个job会维护一个TaskTracker黑名单,这里称之为job黑名单。简单来讲就是当一个job中有4个task曾经在某个tasktracker上失败过,则该job就将这个tasktracker加入自己的job黑名单,即该job的其他task不再调度到这个tasktracker上。HADOOP-4305中认为所有的job黑名单应该汇总一起,让jobtracker从全局的角度排除那些导致大量task失败的TaskTracker。因为如果很多job将某一个tasktracker加入了job黑名单,很可能这个tasktracker确实有问题,不应该再让他跑task了。

从以往运维Hadoop集群经验来看,确实存在这样的tasktracker导致了大量task失败从而拖慢整个业务线。而调查该tasktracker后发现其自身确实有问题,如userlogs的子目录达到上限、根盘空间满了等。而我们的解决方案通常是根据实际案例增加对应监控来逐个解决。比如监控userlogs子目录数达到阈值后即清理最老的目录。再比如监控根盘空间,如果达到了阈值就停掉tasktracker进程,并报警给管理员等。而HADOOP-4305希望Hadoop自身智能地发现类似问题并自己解决。智能解决当然能减轻运维人员的负担,但也引入了很多问题。比如判断错误,将不该黑掉的tasktracker黑了等。而且一旦一个tasktracker被黑了,运维人员需要调查被黑原因,也要想办法去恢复。有时候这个负担比外围监控更大。但是对于运维一个已经启用集群黑名单机制的集群来说,只能先去熟悉这个机制,再去优化并监控。下面描述下HADOO-4305给出的机制。

Part 1/2:Tasktracker加入集群黑名单机制:

当一个job成功结束时,对该job黑名单中的tasktracker做如下三个判断:

/**

* 强调下这里值的是成功的job,因为失败job的task失败大多是因为自身有bug导致的,不能冤枉tasktracker。

* 而事实上成功job中失败的task也可能是job自身问题导致的,所以我不认可这个机制。

**/

1、这个tasktracker已经被至少4个job加入了黑名单;

/**

* 这里的4个是可配置的,配置参数为:

mapred.max.tracker.blacklists

**/

2、到目前为止该tasktracker被加入job黑名单的次数,超过了集群中所有tasktracker被加入job黑名单平均次数的50%;

/**

* 这里的50%也是可配置的,配置参数为:

mapred.cluster.average.blacklist.threshold

**/

3、已经加入黑名单的tasktracker个数不超过集群总tasktracker的50%;

/**

* 这条限制是不能有超过一半的tasktracker被放入黑名单,目的是防止因太多tasktracker放入黑名单而严重影响集群工作。

* 这里的50%是不可配置的。

**/

以上三条如果均满足,则将job黑名单中的tasktracker加入集群黑名单,以后将不在该tasktracker上调度任何task。

Part 2/2: 已加入集群黑名单的tasktracker的恢复机制:

Jobtracker收到集群黑名单中的tasktracker发来的心跳时,做如下判断:

/**

* 加入集群黑名单的tasktracker仍然照常发送心跳。

**/

1、如果该tasktracker已经重启,则直接从集群黑名单中取出,并完全恢复正常;

/**

* 这是最常用的恢复方法。

**/

2、如果该tasktracker在24小时内未被加入过job黑名单,则其加入job黑名单的计数减1,并允许调度task。

/**

* 这里的24小时是不可配置的;

* 由于tasktracker加入集群黑名单后不能调度task,也就没有机会加入job黑名单了,因此几乎所有集群黑名单中tasktracker都会在24小时之后开始调度,然后被一个job加入job黑名单后又不能调度了。

* 如此反复,因此这条其实没啥用,常用的恢复方法还是重启tasktracker。

**/

以上描述了HADOOP-4305给出的黑名单机制,个人感觉问题很多,最好不要启用。如果已经启用的话,最好把可配置的两个参数设大些。

Hadoop的TaskTracker黑名单机制相关推荐

  1. hadoop黑名单机制

    转自:http://blog.csdn.net/liangliyin/article/details/7606275 Note:这里描述的黑名单是指jobtracker网页summary表格中显示的& ...

  2. Hadoop1.2.1 tasktracker容错机制分析,黑名单与灰名单

    hadoop1.2.1 tasktracker容错机制分析 1.job级别黑名单 每个Job都会维护自己的黑名单.如果tasktracker被加入该黑名单,则该Job不会再分配给这个节点分配task. ...

  3. Hadoop之Yarn工作机制详解

    Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...

  4. Hadoop之ReduceTask工作机制

    Hadoop之ReduceTask工作机制 目录 设置ReduceTask并行度(个数) 注意 实验:测试reducetask多少合适 ReduceTask工作机制 1. 设置ReduceTask并行 ...

  5. Hadoop之MapTask工作机制

    Hadoop之MapTask工作机制 目录 并行度决定机制 MapTask工作机制 1. 并行度决定机制 问题引出 maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度 ...

  6. Hadoop之DataNode工作机制

    Hadoop之DataNode工作机制 目录 DataNode工作机制 数据完整性 掉线时限参数设置 1. DataNode工作机制 DataNode工作机制如下图 一个数据块在DataNode上以文 ...

  7. hadoop配置文件加载机制

    hadoop配置文件加载机制 @(HADOOP)[hadoop] hadoop通过Configuration类来保存配置信息 1.通过Configuration.addResource()来加载配置文 ...

  8. spark2.2以后版本任务调度将增加黑名单机制

    问题导读 1.spark如何开启黑名单机制? 2.哪些条件将将executors列入黑名单? 3.整个节点被列入黑名单,executors如何处理? spark2.2中在任务调度中,增加了黑名单机制, ...

  9. 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序...

    一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象. Java序列化(java.i ...

最新文章

  1. 【每日一算法】二叉树中所有距离为 K 的结点
  2. ma应用、超级短线、分钟短线买卖和看盘心得
  3. Day12 CSS简单用法
  4. cookie session token区别_彻底理解cookie,session,token
  5. 7.定义一个有80个元素的字符数组,从键盘输入一串字符,将其中的大写字母转换为小写字母,而将原来为小写的字母转换为大写字母,其他字符不变。
  6. nginx File not found 错误(转)
  7. Solr的安装和使用
  8. 『收藏向 期末SSM课设救急』 教你从搭建到测试运行手撸一个SSM项目实战,附带源码,前端页面、解析和一般遇到的问题(排雷)
  9. 查看gpio状态_基于Arduino开发,借助blinker平台,让NodeMCU实现8路继电器APP端状态监视和控制...
  10. 小型数控雕刻机制作Arduino_【图片】广州玉邦雕刻机厂家【玉石雕刻机吧】
  11. python实现典型相关分析_典型相关分析 CCA
  12. 最新版云铺购ds网系统全开源可运营程序源码
  13. Blender:超详细的甜甜圈制作教程(一)【原教程 油管:Blender Guru】——建模篇
  14. Linux date对时间戳的转换
  15. 分享一个动态sql编写工具
  16. Gini和AUC的关系(Gini=2AUC-1真的成立吗?)
  17. Linux apt-get 安装离线包
  18. Java初始化大乱斗
  19. pest分析和swot分析的区别
  20. Image Processing Algorithms

热门文章

  1. Andorid实现皮皮蟹App的核心功能-语音播放
  2. Linux grep之正则表达式
  3. android fork 子进程,fork子进程
  4. 深蓝学院,激光slam第二讲作业,踩坑总结
  5. 任何一句话都可以品味一辈子
  6. redis实战(5):对文章进行分组
  7. python3 爬虫数据处理 爬取华为应用市场 APP应用评论(二)根据评论生成词云——学霸君
  8. 一位90后的自述:如何从年薪3w到30w
  9. 修改练习1中的Gerbil类,将其放入Map中,将每个Gerbil的名字与每一个Gerbil关联起来。为keySet()获取Iterator,使它遍历Map,针对每个键查询Gerbil,然后打印出键。
  10. 4976: [Lydsy1708月赛]宝石镶嵌 dp