Shuffle Service 的容错机制是什么?
Shuffle service 的归集思想在公司内外都有不同的工作展现类似的思想,但都限于 “跑分”和小范围使用。因为这种模式对于各环节的错误天生处理困难。
以 shuffle agent 文件丢失/损坏是大数据作业的常见问题为例,传统的文件系统shuffle 可以直接定位到出错的数据文件来自哪个 mapper,只要重跑这个 mapper 即可恢复。但在前述 shuffle service 流程中,由于 shuffle agent 输出的 shuffle这个文件包含了来自所有 mapper 的 shuffle 数据,损坏文件的重新生成需要以重跑所有 mapper 为代价。如果这种机制应用于所有线上作业,显然是不可接受的。设计了数据双副本机制解决了这个问题,使得大多数通常情况下 reducer 可以读取到高效的 agent 生成的数据,而当少数 agent 数据丢失的情况,可以读取备份数据,备份数据的重新生成只依赖特定的上游 mapper。
具体来说,mapper 产生的每份 shuffle 数据除了发送给对于 shuffle agent 外,也会按照与传统文件系统 shuffle 数据类似的格式,在本地写一个备份。按前面所述,这份数据写的代价较小但读取的性能不佳,但由于仅在 shuffle agent 那个副本出错时才会读到备份数据,所以对作业整体性能影响很小,也不会引起集群级别的磁 盘压力升高。
有效的容错机制使得 shuffle service 相对于文件系统 shuffle,在提供更好的作业性能的同时,因 shuffle 数据出错的 task 重试比例降低了一个数量级,给线上全面投入使用打好了稳定性基础。
以上内容摘自《“伏羲”神算》电子书,点击https://developer.aliyun.com/topic/download?id=873
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。