首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果执行器发生故障,使用外部洗牌服务可以使用保存的洗牌文件吗?

如果执行器发生故障,使用外部洗牌服务可以使用保存的洗牌文件吗?
EN

Stack Overflow用户
提问于 2021-05-10 08:04:59
回答 3查看 906关注 0票数 0

星火文档州:

火花执行器在失败或关联应用程序也已退出时退出。在这两种情况下,与执行器关联的所有状态不再需要,可以安全丢弃。

但是,在星火集群配置和数据集导致偶尔执行程序故障OOM深入作业的情况下,死执行器编写的洗牌文件最好继续用于作业,而不是重新计算它们。

在启用外部洗牌服务的情况下,我似乎注意到星火继续提取前面提到的洗牌文件,并且只重新运行执行者去世时活动的任务。与之形成对比的是,由于外部洗牌服务被禁用,我已经看到星火重新运行了先前完成的部分阶段,以重新计算丢失的洗牌文件。

因此,如果执行程序出现故障,是否可以使用已保存的洗牌文件,就像我所观察到的那样?我想是的,但是文件让我怀疑。

我正在运行Spark3.0.1与Yarn 6.2与动态分配禁用。

当然,先发制人的评论最好是配置集群,这样执行器OOM就不会发生。然而,当最初的目标是完成昂贵的星火作业时,优化的集群配置还没有实现。正是在这个时候,面对执行者的失败,洗牌重用是很有价值的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-13 13:49:02

我认为火花黑名单设计博士回答了这个问题(在HealthTracker类注释中引用):

在获取洗牌块时,Spark已经对失败节点进行了一些处理。这会自动导致火花标记混乱数据为缺失,并使用阶段故障机制来根据血统重新生成丢失的块。

也就是说,是抓取失败触发了阶段故障和随后的洗牌块再生。在启用Service并为获取请求提供服务时,当执行者死亡时,将不会出现提取失败,从而导致后续阶段失败。此外,黑名单设计或驱动程序的HeartBeatReceiver中没有任何东西可以显式地删除丢失的执行器编写的洗牌块。因此,由死执行者编写的洗牌块将继续由相关节点上的洗牌服务提供服务。

票数 0
EN

Stack Overflow用户

发布于 2021-05-12 16:21:58

你引用的一句话:

火花执行器在失败或关联应用程序也已退出时退出。在这两种情况下,与执行器关联的所有状态不再需要,可以安全丢弃。

来自“行刑人的优雅退役”一节。

这个特性的主要目的是提供一个解决方案,当Kubernetes被用作资源管理器时。在没有外部洗牌服务的地方。它正在将磁盘持久化RDD块和洗牌块迁移到其余的执行器中。

对于Yarn ,当启用外部洗牌服务时,将从作为Yarn的辅助服务运行的外部洗牌服务(在节点管理器中)获取块。该服务知道执行者的内部目录结构,并能够为块提供服务(就像在同一台主机上一样)。这样,当节点存活并且只有执行者死亡时,块就不会丢失。

票数 1
EN

Stack Overflow用户

发布于 2021-05-12 17:38:05

动态资源分配要求在Yarn中启用ESS。请参阅同一文档中的

ESS是在节点管理器中运行的独立服务。当executor死掉时,当远程执行程序试图获取时,同一节点上的ESS能够服务其映射输出文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67466878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档