Hadoop学习19--推测式执行
所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果。产生原因一般是程序bug、负载倾斜。
那么这个较慢,是怎么判断的呢?
有如下具体的算法:
比较两个时间。一是根据推测式算法计算出来的task最终完成时刻,也就是按着任务当前的运行速度,推测出来的时刻。暂且命名为oldtime
二是如果此刻启动该任务,则推测出来将要完成的时刻,这个是按着已运行完的任务推测出来的时刻。暂且命名为newtime
如果newtime的时间点在oldtime之后,则不会启动推测任务。因为即使启动了,最终完成时间是更晚的,没有意义。
oldtime计算方式: (timestamp – start) / Math.max(0.0001, progress) +taskbegintime
解释:
timestamp是当前时刻
start是任务已经运行的时间
progress是任务运行的比例(0.1-1)
taskbegintime是任务启动所用时间
加号前面计算出,按当前这个task已运行完部分的速度,计算出整个运行完会占用多少时间。
newtime计算方式:当前的时刻+已经运行完的task的平均所使用的时间是多长。
那么执行这个推测任务,都有什么先决条件呢?
1、每个task只能有一个备份任务
2、当前job已完成的task必须不小于0.05(5%)
那么,MRv2就会选择oldtime-newtime值最大的task执行推测式任务。
那么是谁来执行这个推测任务的呢?
是一个叫DefaultSpeculator(实现了Speculator)的服务,定时扫一遍task,判断是否有task需要启动备份任务。
题外话:看到大牛blog里有这么一段话,摘抄过来:
hadoop中有三种特殊的任务,failed task,killed task和speculative task,其中,failed task是由于硬件、程序bug等原因异常退出的任务,比如磁盘空间不足等,是task自己退出, killed task是Hadoop主动将其杀死的任务,比如一个任务占用过多的内存,为了不影响其他作业的正常运行,Hadoop需将这种恶心的任务杀死,以保证为所有作业提供一个“和谐”的任务执行环境。在容错方面,failed task再次调度时不会在那些曾经失败的节点上运行,而killed task则可能被再次调度到任何一个节点上(包括曾经失败多的节点),因此,如果你目测一个作业的任务运行很慢,你可以使用“bin/hadoop job -fail-task xxx”让这个任务换一个节点重新运行,而不是使用“bin/hadoop job -kill-task xxx”。 speculative task是Hadoop针对那些慢任务(慢任务会拖慢一个作业的完成时间),为他们额外启动一个备份任务,一起处理同一份数据,哪个先执行完,则采用哪个的处理结果,同时将另外一个任务杀死。也就是说,推测执行是Hadoop对慢任务的一种优化机制(实际上就是“空间换时间”的经典优化思想),不属于容错调度范畴。
Hadoop学习19--推测式执行的更多相关文章
- hadoop学习;hdfs操作;执行抛出权限异常: Permission denied;api查看源代码方法;源代码不停的向里循环;抽象类通过debug查找源代码
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/26587251 eclipse快捷键alt+s ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
一.HDFS出现的背景 随着社会的进步,需要处理数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是却不方便管理和维护—>因此,迫切需要一种系统来管理多 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...
- Hadoop学习总结之五:Hadoop的运行痕迹
Hadoop学习总结之五:Hadoop的运行痕迹 Hadoop 学习总结之一:HDFS简介 Hadoop学习总结之二:HDFS读写过程解析 Hadoop学习总结之三:Map-Reduce入门 Ha ...
- Hadoop学习笔记(2)
Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...
- Hadoop学习笔记(2) ——解读Hello World
Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...
- hadoop学习路线
学习hadoop,首先我们要知道hadoop是什么? 说到底Hadoop只是一项分布式系统的工具,我们在学习的时候要理解分布式系统设计中的原则以及方法,只有这样才能以不变应万变.再一个就是一定要动手, ...
- Hadoop 学习路线
大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图 描述 本路线图是一个专门针对大数据实时处理.Hadoop工程师和数据分析师所设计的课程体系介绍,在实时计算方向主要包括了从数据收集框架. ...
随机推荐
- php的特性
PHP的特性包括: 1. PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法. 2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比 ...
- codeforces 451D Count Good Substrings
题意:给定一个字符串,求有多少个奇数子串和多少偶数子串为 “回文串” 这边回文串很特殊之含有 ab 两种字母 而且 相邻的字母相同则消去一个 一直到不存在相邻的相同. 思路: 在这种串 ...
- const 放在函数后
const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数.const 限定符,它把一个对象转换成一个常量.举例:为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数 ...
- Array 、 Dictionary 、 Object 3大数据结构 以及 for ... in for each的研究
Array:存储方式-------索引存储 (要求key是大于等于0的整数) Dictionary.Object:存储方式---------索引存储 区别:可以说它们的 key 都 对应 各自的引用, ...
- 黑马程序员——OC语言 三大特性之多态
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之一的多态 (一)多态的基本概念 OC对象具有多态性体现在 Per ...
- sql整型字段模糊查询
select count(*) cnt from vhuiy where CAST(id as text) like'%12%'--id为int类型 更详细的链接:http://www.studyof ...
- CSS第四天总结 更多的属性 圆角 边框图片 段落属性 颜色渐变 盒子阴影
圆角边框: border-radius 一个值时表示四个角用的圆半径,4个值时分别是左上角.右上角.左下角.右下角,单位可以是px和百分比,百分比是半径相对于边框长度的比例 在CSS3中我们终于 ...
- 数据结构《16》----自动补齐实现《一》----Trie 树
1. 简述 Trie 树是一种高效的字符串查找的数据结构.可用于搜索引擎中词频统计,自动补齐等. 在一个Trie 树中插入.查找某个单词的时间复杂度是 O(len), len是单词的长度. 如果采用平 ...
- 【LeetCode OJ】Construct Binary Tree from Inorder and Postorder Traversal
Problem Link: https://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-trav ...
- HttpContext.Current.Cache 和HttpRuntime.Cache的区别
先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cac ...