11 月 4 日,在 2021 腾讯数字生态大会上,腾讯宣布开源自主研发的分布式远程 Shuffle 服务 Firestorm。该服务的开源不但可以助推分布式计算的云原生部署,还能解决大数据分布式计算过程中的痛点,提升计算资源的利用率。
图片来源:pixabay
在分布式计算领域,Shuffle 过程由于存在着磁盘 IO 随机读写问题,一直是分布式计算任务的性能瓶颈,除了降低计算任务的运行效率,还降低硬件资源的利用率。同时,由于 Shuffle 过程对于本地磁盘有容量需求(如 Spark 计算引擎),对于计算引擎的云原生化也制造了阻碍。近年来,云原生的需求不断增加,而和大数据息息相关的分布式计算领域也在不断探索如何云原生化这样的课题。业界对于 Shuffle 过程存在的问题越来越关注,改善的需求也越来越迫切,不但出现了各种解决方案,部分国外厂商也开源了相关的实现。
腾讯大数据团队在推进云原生的过程中也遇到了相同的问题,由于缺乏一个通用,便于扩展的远程 Shuffle 服务的开源方案,团队提议进行自研并最终开源回馈社区,Firestorm 则在这样的背景下应然而生。相比已经开源的同类服务,腾讯 Firestorm 能适用于更多的应用场景,更灵活的接入各类分布式计算引擎,还能支持各种不同的存储系统。
为了达到支持云原生的部署模式并提升计算资源的使用率,Firestorm 具备诸多特性:
支持多种集群部署模式。Firestorm 将 Shuffle 数据存储在了远程,因此计算集群将不再需要大量存储空间。同时,大数据集群的部署模式也变得更加灵活,基于 Firestorm,计算存储分离,计算存储混布,在线离线混布等部署模式都得到很好的支撑。
支持 Shuffle 数据聚合。Firestorm 通过服务端对 Shuffle 数据进行分拣操作,从而达到了数据聚合的目的,大幅降低了在 Shuffle 过程中对于磁盘的随机访问。同时,Firestorm 在客户端和服务端都使用了数据缓存机制,最大化利用内存资源,从而降低了磁盘访问的性能损耗。
灵活适配各种计算引擎和存储方式。Firestorm 在实现上采用了计算引擎和存储方式的解耦,因此能通过实现引擎侧接口,灵活支持各类计算引擎(如 Spark,MR 等)。同样,对于 Shuffle 数据的存储方式也能支持,如本地文件,HDFS 文件及混合模式等。
支持 Shuffle 数据的正确性校验。Firestorm 以 Block 为单位存储 Shuffle 数据,对于每个 Block 都会存储 CRC 值等元数据。基于这些元数据,不但能过滤无效数据,还能检测数据在整条链路的传递过程中是否缺失,完整,保障计算任务执行过程中的数据正确性。
支持整体架构多活模式。Firestorm 采用了主从架构,能更好的管理集群的状况,在任务调度过程中也能采用更灵活的调度方式,提高整体集群资源利用率。为了满足服务高可用,对于主节点还增加了主-备多活模式,提升了集群服务的稳定性。
支持多种指标监控。Firestorm 对于集群的运行状况,采集了大量的运行时指标,基于这些指标能实时掌握集群的负载及健康状况,在使用过程中及时准确地发现问题,便于问题的排查。
支持服务在线升级。Firestorm 具备节点黑名单功能,客户端和服务端也采用了版本匹配机制。基于这些特征,Firestorm 能实现在生产环境在线升级,同时做到应用无感知,增强了生产的实用性。
目前 Firestorm 在腾讯内部已经在近万台规模的在线离线混布集群落地,每天支撑近 5W 的分布式计算作业,每天的 Shuffle 数据量接近 2PB,已经达到了初期制定的第一阶段目标,具备了相当的生产环境成熟度。除此以外,Firestorm 在 Shuffle 数据量较大的分布式计算任务中能显著提升性能和成功率,有效支撑现网 Shuffle 量 100TB+的分布式作业。
腾讯大数据团队表示:“将腾讯自主研发的分布式远程 Shuffle 服务 Firestorm 开源,不仅可以将腾讯在大数据分布式计算领域的技术和经验和全球开发者分享,还能够汲取该领域在全球范围内的优秀理念,最终推动分布式计算领域在云原生时代的进一步发展。” 未来团队还会进一步对其优化,在开源后,腾讯也将和社区的开发者一起对 Firestorm 不断完善。
开源版本地址:https://github.com/Tencent/Firestorm
(点击“阅读原文”即可访问)
本文转载自:腾讯大数据 公众号
作者:腾讯大数据
腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。