Hadoop 推测任务执行

2024-05-23

在Google的MapReduce论文中,他们有一个备份任务,我认为这与Hadoop中的推测任务是一样的。推测任务是如何实现的?当我启动一项推测任务时,该任务是从一开始就作为较旧且缓慢的任务开始,还是从较旧的任务到达的位置开始(如果是这样,是否必须复制所有中间状态和数据?)


Hadoop 系统的一个问题是,通过将任务划分到多个节点,一些慢速节点可能会限制程序其余部分的速率。

任务可能会因各种原因而缓慢,包括硬件性能下降或软件配置错误,但原因可能很难检测,因为任务仍然成功完成,尽管时间比预期更长。 Hadoop 不会尝试诊断和修复运行缓慢的任务;而是尝试诊断和修复运行缓慢的任务。相反,它会尝试检测任务运行速度是否低于预期,并启动另一个等效任务作为备份。这称为任务的推测执行。

例如,如果一个节点具有较慢的磁盘控制器,那么它读取输入的速度可能仅为所有其他节点的 10%。因此,当 99 个 Map 任务已经完成时,系统仍在等待最后一个 Map 任务签入,这比所有其他节点花费的时间要长得多。

通过强制任务彼此隔离运行,各个任务不知道它们的输入来自哪里。任务信任 Hadoop 平台来提供适当的输入。因此,相同的输入可以并行处理多次,以利用机器能力的差异。由于作业中的大部分任务即将结束,Hadoop 平台将在多个没有其他工作要执行的节点上安排剩余任务的冗余副本。此过程称为推测执行。当任务完成时,他们向 JobTracker 宣布这一事实。任务的哪个副本首先完成将成为最终副本。如果其他副本正在推测性地执行,Hadoop 会告诉 TaskTracker 放弃任务并丢弃其输出。然后,Reducers 从第一个成功完成的 Mapper 接收输入。

默认情况下启用推测执行。您可以通过设置来禁用映射器和化简器的推测执行mapred.map.tasks.speculative.execution and mapred.reduce.tasks.speculative.executionJobConf 选项设置为 false,分别使用旧的 API,而使用较新的 API,您可以考虑更改mapreduce.map.speculative and mapreduce.reduce.speculative.

因此,要回答您的问题,它确实会重新开始,并且与其他任务已完成/完成的量无关。

参考:http://developer.yahoo.com/hadoop/tutorial/module4.html http://developer.yahoo.com/hadoop/tutorial/module4.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop 推测任务执行 的相关文章

随机推荐

  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • 从 freshdesk api 获取所有用户时获取curl_error(): 2 不是有效的 cURL 句柄资源

    我正在创建自己的系统来管理通过其 API 来自 freshdesk com 的所有票证 我正在发出curl 请求以从freshdesk com 获取数据 通过获取与股票相关的数据 它的工作正常 但是当我通过curl请求请求所有用户时 它会给
  • 使用 Maven 和 Spring REST 配置 Angular 2 项目

    我想将我的小型应用程序从 Angular 1 升级到 Angular 2 我对 Angular 2 和节点配置有点陌生 我的网络应用程序使用 eclipse 和 Maven 问题是我无法使用 Angular 2 进行配置 我应该使用什么目录
  • 对于 1GB 堆,在可视虚拟机中运行计算保留大小需要多长时间?

    我有一个来自 java 进程的 1 GB 堆转储 该进程耗尽了堆空间 我已将堆上传到 java6 发行版附带的 jvisualm 中 我大约 16 小时前开始了 计算保留大小 过程 它仍在运行 计算 1GB 堆上前 20 个对象的保留大小需
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • Java:如何使用自定义 Ant build.xml 将 ProGuard 集成到 Jar 项目中

    我有一个简单的 java 项目 它引用两 2 个库 jar 文件 想要集成 ProGuard 这是我当前的 build xml
  • Visual Studio 调试器 - 自动变量分配

    我正在开发一个多开发人员项目 正在开发的应用程序是通过启动器应用程序启动的 该应用程序传递登录用户 位置等参数 现在 当我调试应用程序时 我在代码上设置了一个断点解析输入参数 并将用户名变量分配给我的用户名等 我可以对这些值进行硬编码 但是
  • 如何使用 YouTube API 访问视频中包含的许可内容

    我想要访问或收集视频中包含的许可内容的 URL 我准备了一张图片 以防无法正确传达我想要的内容 这是我使用的代码的一部分 def youtube videos options youtube build API SERVICE NAME A
  • 这个 HTML 结构有效吗? UL > DIV > { LI, LI } , DIV > { LI, LI } , DIV > { LI, LI }

    这个 HTML 结构有效吗 ul class blog category div class three column li Item 1 li li Item 2 li li Item 3 li div div class three c
  • 提高序列化性能:文本与二进制格式

    如果性能是一个问题 我应该更喜欢二进制序列化而不是 ascii 文本序列化吗 有人用大量数据测试过吗 我使用 boost serialization 来存储表示查找表的矩阵和向量以及 一些内存大小约为 200MByte 的元数据 字符串 I
  • 2D Numpy 数组花式索引 + 掩码

    I have import numpy as np a np array 4 99 2 3 4 99 1 8 7 8 6 8 Why is a True True False False 1 2 等于 array 99 99 And not
  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • Tkinter ttk 背景样式的自定义未显示

    在下面的代码中 show widget validity 函数要么应用仅更改小部件现有样式的背景颜色的自定义样式 要么恢复原始样式 这是一个库例程 因此不能完全控制样式 背景颜色似乎已正确重新配置 如每次更改后条目小部件中报告的背景样式描述
  • Rspec:期望与期望与块 - 有什么区别?

    刚刚学习 rspec 语法 我注意到这段代码有效 context given a bad list of players do let bad players it fails to create given a bad player li
  • 构建 C# Web API - REST

    我即将开始一个 C 项目 我从未使用过 C 我希望在犯下愚蠢的错误并走上错误的道路之前能得到一些实施建议 我想要实现的目标基本上是在服务器上拥有一个可以通过 Web API 访问的 C 应用程序 该应用程序将接受一些字符串变量 然后返回一个
  • 如何使用heroku设置环境变量?

    我正在尝试使用此命令行设置环境变量 heroku config set ENV PRODUCTION 但我有这个错误 缺少必需的标志 a app APP 应用程序运行命令 使用 help 查看更多帮助 我的应用程序名称是 disquaire
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • 从表单中选择枚举以设置角色

    Ruby on Rails 4 1 我正在将 Devise 与枚举角色一起使用 目前 它在创建用户时使用默认角色 我想在创建用户的表单中添加一个字段来设置枚举角色 I read this https github com RailsApps
  • 我在没有任何用户操作的情况下显示 javascript 输出时遇到问题

    这就是问题 如果一个整数大于 1 并且只能被 1 和它本身整除 则该整数被称为素数 例如 2 3 5和7是素数 但4 6 8和9不是素数 a 编写一个函数来确定一个数是否为素数 b 在脚本中使用此函数来确定并打印 1 到 10000 之间的
  • Hadoop 推测任务执行

    在Google的MapReduce论文中 他们有一个备份任务 我认为这与Hadoop中的推测任务是一样的 推测任务是如何实现的 当我启动一项推测任务时 该任务是从一开始就作为较旧且缓慢的任务开始 还是从较旧的任务到达的位置开始 如果是这样