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