返回介绍

MapReduce 推测执行

发布于 2024-06-23 12:22:10 字数 1893 浏览 0 评论 0 收藏 0

Hadoop 并不会尝试诊断或者修复执行缓慢的任务,相反,在一个任务运行比预期慢的时候,它会尽量检测,并启动另一个相同的任务作为备份。这就是所谓的任务的 “推测执行”

什么是推测执行

让我们首先理解一下,什么是 Hadoop 推测执行。

推测执行

在 Hadoop 中,MapReduce 把作业分解成多个任务,为了减少作业的整体运行时间,这些任务会被并行执行,这使得作业的运行时间对运行缓慢的任务很敏感,因为这些运行缓慢的任务会增加作业的整体运行时间。

任务执行缓慢可能有多种原因,比如硬件老化,软件配置错误,但检测具体原因很困难,因为任务总能运行成功,尽管比预计时间长。Hadoop 并不会尝试诊断和修复执行缓慢的任务,相反,它会尝试检测他们并为他们执行备份任务。这就是所谓的推测执行,这些备份任务被称为推测任务。

推测执行工作原理

现在让我们来看一下 Hadoop 推测执行的过程。
首先,job 的所有任务都会被执行,如果某些任务在运行了一段时间(至少 1 分钟)之后,任务执行进度还未达到作业的平均进度,那么 Hadoop 就会为这些任务启动推测任务。如果原任务在推测任务之前执行完成,则推测任务会被中止,相反,如果推测任务在原任务之前完成,则原任务会被中止。

推测执行是否有好处

Hadoop MapReduce 推测执行在某些情况下是有好处的,因为具有 100 个节点的集群里面,硬件故障或者网络堵塞是比较普遍的情况,那么推测执行任务会使 MapReduce 作业更快完成,因为不需要等待有问题的任务执行完成。如果同时启动两个重复的任务,他们会互相竞争,导致推测执行无法工作,这对集群资源是一种浪费。

推测执行的关闭和启用

推测执行是 MapReduce 作业的一种优化技术,默认是启用的。你可以在 mapred-site.xml 配置文件中为 mapper 和 reducer 关闭推测执行技术。配置如下:

  1. <property>
  2. <name>mapred.map.tasks.speculative.execution</name>
  3. <value>false</value>
  4. </property>
  5. <property>
  6. <name>mapred.reduce.tasks.speculative.execution</name>
  7. <value>false</value>
  8. </property>

什么情况下需要关闭推测执行

推测执行的主要作用是减少作业的执行时间,然而,重复任务会影响到集群的性能。因为推测执行会启动许多冗余任务,这将降低集群整体吞吐量。基于这样的原因,有些集群管理员更倾向于在集群上关闭推测执行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文