Hadoop 推测式任务 Hadoop Speculative Task
2015-06-29 22:29
183 查看
转:http://blog.csdn.net/yfkiss/article/details/10589137
在分布式计算环境中,一个job会被拆解为多个task,由于各种软硬件异常,某些task运行速度较慢,拖慢了整个job完成时间
对于这些运行速度较慢的task,Hadoop不会尝试诊断或者修复,而是分析出哪些task运行较慢,针对这些运行较慢的task,启动一些backup的task,我们称之为speculative task,speculative task会与原有task一起运行,哪个task首先执行结束,则使用这个task的结果作为整个job的输出
speculative task并不是在job启动的时候随着task启动,而是在整个job运行一段时间后,判断哪些task落后于整体进度,针对这些task启动speculative task,具体算法参考“Hadoop中Speculative
Task 调度策略”
speculative task是一种优化手段,而不是提高任务可靠性的手段,speculative task不能解决程序或者数据本身引发的问题。
在某些情况下,speculative task可以减少任务的运行时间,但是,在集群较忙碌时,speculative task会导致集群throughput下降。
此外,当任务需要和一些外部storage交互时,例如Hbase,启用speculative task会给外部storage带来额外压力,在有修改/更新操作时,有可能导致数据异常。
MapReduce任务有两个参数可以控制Speculative Task:
mapred.map.tasks.speculative.execution: mapper阶段是否开启推测执行
mapred.reduce.tasks.speculative.execution: reducer阶段是否开启推测执行
这两个参数默认都为true
java 应用可以通过如下语句关闭speculative task:
conf.setBoolean("mapred.map.tasks.speculative.execution", false);
conf.setBoolean("mapred.reduce.tasks.speculative.execution", false);
在分布式计算环境中,一个job会被拆解为多个task,由于各种软硬件异常,某些task运行速度较慢,拖慢了整个job完成时间
对于这些运行速度较慢的task,Hadoop不会尝试诊断或者修复,而是分析出哪些task运行较慢,针对这些运行较慢的task,启动一些backup的task,我们称之为speculative task,speculative task会与原有task一起运行,哪个task首先执行结束,则使用这个task的结果作为整个job的输出
speculative task并不是在job启动的时候随着task启动,而是在整个job运行一段时间后,判断哪些task落后于整体进度,针对这些task启动speculative task,具体算法参考“Hadoop中Speculative
Task 调度策略”
speculative task是一种优化手段,而不是提高任务可靠性的手段,speculative task不能解决程序或者数据本身引发的问题。
在某些情况下,speculative task可以减少任务的运行时间,但是,在集群较忙碌时,speculative task会导致集群throughput下降。
此外,当任务需要和一些外部storage交互时,例如Hbase,启用speculative task会给外部storage带来额外压力,在有修改/更新操作时,有可能导致数据异常。
MapReduce任务有两个参数可以控制Speculative Task:
mapred.map.tasks.speculative.execution: mapper阶段是否开启推测执行
mapred.reduce.tasks.speculative.execution: reducer阶段是否开启推测执行
这两个参数默认都为true
java 应用可以通过如下语句关闭speculative task:
conf.setBoolean("mapred.map.tasks.speculative.execution", false);
conf.setBoolean("mapred.reduce.tasks.speculative.execution", false);
相关文章推荐
- 如何自定义菜单(点击菜单键,弹出一个popwindow)
- Linux文件,文件描述符以及dup()和dup2()
- 为什么要fork两次来避免产生僵尸进程
- opencv 数字图象处理 镜像变换 cvFlip()
- Centos6.6 安装Subversion服务
- 【原创】Linux opensource-src-4.3.2.tar.gz的安装。
- 大型网站图片服务器架构的演进
- XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
- XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
- opencv 数字图象处理 图像平移变换
- Linux输入输出重定向
- 底层架构的搭建
- hadoop yarn resouce manager如何避免单点问题
- MySQL在Linux Ubuntu中安装
- mysql备份单实例(一)shell
- Apache Qpid Broker的安全机制
- linux下的蓝牙驱动程序详解
- 谈谈对AOP的认识三——优化AOP,进一步解耦
- linux0.12之内存管理(1)-整体框架思路
- linux内核之关于内存屏障