Firestorm分布式远程 Shuffle 服务
Firestorm 是一个远程 Shuffle 服务,它为 Apache Spark 应用程序提供了在远程服务器上存储 shuffle 数据的能力。
特性:
- 支持多种集群部署模式。Firestorm将Shuffle数据存储在了远程,因此计算集群将不再需要大量存储空间。同时,大数据集群的部署模式也变得更加灵活,基于Firestorm,计算存储分离,计算存储混布,在线离线混布等部署模式都得到很好的支撑。
- 支持Shuffle数据聚合。Firestorm通过服务端对Shuffle数据进行分拣操作,从而达到了数据聚合的目的,大幅降低了在Shuffle过程中对于磁盘的随机访问。同时,Firestorm在客户端和服务端都使用了数据缓存机制,最大化利用内存资源,从而降低了磁盘访问的性能损耗。
- 灵活适配各种计算引擎和存储方式。Firestorm在实现上采用了计算引擎和存储方式的解耦,因此能通过实现引擎侧接口,灵活支持各类计算引擎(如Spark,MR等)。同样,对于Shuffle数据的存储方式也能支持,如本地文件,HDFS文件及混合模式等。
- 支持Shuffle数据的正确性校验。Firestorm以Block为单位存储Shuffle数据,对于每个Block都会存储CRC值等元数据。基于这些元数据,不但能过滤无效数据,还能检测数据在整条链路的传递过程中是否缺失,完整,保障计算任务执行过程中的数据正确性。
- 支持整体架构多活模式。Firestorm采用了主从架构,能更好的管理集群的状况,在任务调度过程中也能采用更灵活的调度方式,提高整体集群资源利用率。为了满足服务高可用,对于主节点还增加了主-备多活模式,提升了集群服务的稳定性。
- 支持多种指标监控。Firestorm对于集群的运行状况,采集了大量的运行时指标,基于这些指标能实时掌握集群的负载及健康状况,在使用过程中及时准确地发现问题,便于问题的排查。
- 支持服务在线升级。Firestorm具备节点黑名单功能,客户端和服务端也采用了版本匹配机制。基于这些特征,Firestorm能实现在生产环境在线升级,同时做到应用无感知,增强了生产的实用性。
评论