1. 为什么需要推测执行?

MapReduce将作业分解成多个任务并行运行的机制,决定了作业运行的总体时间对运行缓慢的任务比较敏感。为了尽量避免运行缓慢的任务对作业运行时间“托后腿”的情况,需要启动作业的推测执行。

2. 什么是推测执行?

在分布式集群环境下,因为程序Bug(包括Hadoop本身的bug),负载不均衡或者资源分布不均等原因,会造成同一个作业的多个任务之间运行速度不一致,有些任务的运行速度可能明显慢于其他任务(比如一个作业的某个任务进度只有50%,而其他所有任务已经运行完毕),则这些任务会拖慢作业的整体执行进度。为了避免这种情况发生,Hadoop采用了推测执行(Speculative Execution)机制,它根据一定的法则推测出“拖后腿”的任务,并为这样的任务启动一个备份任务,让该任务与原始任务同时处理同一份数据,并最终选用最先成功运行完成任务的计算结果作为最终结果。

3. 推测执行配置

设置开启推测执行参数:Hadoop的mapred-site.xml文件中进行配置

<property><name>mapreduce.map.speculative</name><value>true</value><description>如果任务运行较慢,决定是否运行相应Map任务的推测执行</description>
</property><property><name>mapreduce.reduce.speculative</name><value>true</value><description>如果任务运行较慢,决定是否运行相应Reduce任务的推测执行</description>
</property>

hive本身也提供了配置项来控制reduce-side的推测执行

<property><name>hive.mapred.reduce.tasks.speculative.execution</name><value>true</value><description>Whether speculative execution for reducers should be turned on.     </description>
</property>

4. 总结

关于调优这些推测执行变量,还很难给一个具体的建议。如果用户对于运行时的偏差非常敏感的话,那么可以将这些功能关闭掉。如果用户因为输入数据量很大而需要执行长时间的map或者Reduce task的话,那么启动推测执行造成的浪费是非常巨大。

  • 任务运行缓慢的原因有多种,可能是硬件老化,也可能是软件问题。若是软件问题,需优化程序,推测执行不能从根本上解决问题。
  • 推测执行是利用资源来优化时间的一种策略。若资源本来就紧张的情况下,是无法通过推测执行来优化系统性能的。

Hive 优化之 推测执行相关推荐

  1. 大数据笔记30—Hadoop基础篇13(Hive优化及数据倾斜)

    Hive优化及数据倾斜 知识点01:回顾 知识点02:目标 知识点03:Hive函数:多行转多列 知识点04:Hive函数:多行转单列 知识点05:Hive函数:多列转多行 知识点06:Hive函数: ...

  2. hive sql 报错后继续执行_Hive优化之Spark执行引擎参数调优(二)

    Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主要有数据 ...

  3. 智慧出行/spark Streaming-Dstream流优化:1.消费并行度,2.序列化,3.限流,压背,冷启4.cpu空转时间,5.不要在代码中判断这个表是否存在,6.推测执行7.开启动态资源分配

    1.设置合理的消费并行度 最优的方案是:kafka分区数:broker *3/6/9 kafka分区能不能增加,能不能减少? kafka分区数是可以增加的,但是不能减少 2.序列化 java的序列化, ...

  4. CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|

    一.SQL优化 ### --- SQL优化~~~ 列裁剪和分区裁剪 ~~~ 列裁剪是在查询时只读取需要的列:分区裁剪就是只读取需要的分区. ~~~ 简单的说:select 中不要有多余的列,坚决避免 ...

  5. [hive]hive优化

    1.fetch抓取 1)什么是fetch抓取 fetch抓取是指hive对select 所有字段.select 指定字段.limit可以不必使用MapReduce计算,在这种情况下,hive可以简单地 ...

  6. Hive优化笔记(1 - 非数据倾斜)

    目录 列裁剪和分区裁剪 谓词下推 本地模式(local mode) 并行执行 严格模式 Map端聚合 调整mapper数 调整reducer数 小文件合并优化 设置jvm重用 引擎选择 输出结果压缩 ...

  7. 一篇文章让你通透Hive优化

    Hive优化 一.hive参数优化 1.map数优化 2.reduce数优化 3.Fetch抓取(Hive可以避免进行MapReduce) 4 .模式选择  1)本地模式  2)并行模式  3)严格模 ...

  8. hive优化之参数调优

    hive优化之参数调优 1.hive参数优化之默认启用本地模式 启动hive本地模式参数,一般建议将其设置为true,即时刻启用: hive (chavin)> set hive.exec.mo ...

  9. Forerunner:首个面向“多未来”的推测执行技术

    来源:微软研究院AI头条 编者按:10月26-29日,系统领域的全球顶会 SOSP 2021 在线上举办.在本届大会上,微软亚洲研究院研究员陈洋.郭众鑫.李润怀(实习生,浙江大学).陈硕.周礼栋.张宪 ...

  10. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...

    前言 「1024,1GB,一级棒!程序仔们节日快乐!」 ❝ 指尖流动的 1024 行代码,到底是什么? ❞ ❝ 是10行的迷茫?是101行的叛逆?是202行的理性思考?是307行对渴望的冲动?还是40 ...

最新文章

  1. 独家 | 一文读懂序列建模(deeplearning.ai)
  2. 2019年美国国家人工智能战略报告(中文翻译版)
  3. ftp服务----基于虚拟用户的创建
  4. 虚拟机屏幕界面自适应调整
  5. linux_unix系统编程手册源代码编译
  6. php重定向error,将nginx错误重定向到php
  7. 前端html面试题及答案2019,前端面试题及答案2019-20210415034948.docx-原创力文档
  8. Module not found: Error: Can't resolve 'XXX' in 'XXXX'
  9. 按键精灵--VS挤房器_Fly_v2.5版
  10. ACDsee_14中文许可证秘钥
  11. VS2015安装教程
  12. 唯读---图书微服务接口设计(持续更新)
  13. adams打不开提示msc license_adams安装后打不开
  14. Win10家庭中文版如何更改Users下的中文用户名
  15. PostgreSQL数据库学习手册之大对象
  16. 利用zabbix监控网宿cdn的流量
  17. radius pap 加/解密算法实现-golang
  18. mysql 获取当前使用的数据库名称 及 表结构
  19. ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks
  20. 判断带头结点单链表是否递增

热门文章

  1. vl53l1x+stm32激光测距分析(待修改)
  2. 亿级用户下的新浪微博平台架构解析
  3. mysql数据库断开连接_mysql 数据库断开连接
  4. 大陆打电话到香港要怎么打?那发信息呢?
  5. 想从事Python后端开发?如何入门和学习,这篇文章来告诉你。
  6. 宝塔远程连接助手使用方法
  7. 最简单的可拖拽窗口教程
  8. 我的世界服务器无限刷东西指令,我的世界无限刷物品命令方块指令 | 手游网游页游攻略大全...
  9. elasticsearch索引health 健康状态变为yellow,red处理
  10. 百度的镜像网站,有意思…………