Ballista:使用Apache Arrow在Rust中实现的分布式计算平台

2021-01-19 02:01:26

Ballista是一个概念验证的分布式计算平台,主要在Rust中实现,使用Apache Arrow作为主题模型。它建立在一个架构上,该架构允许其他编程语言作为一等公民被支持,而无需为序列化成本付出任何代价。

随着Apache Arrow 3.0.0的发布,Rust实现中发生了许多重大更改,因此有必要注释掉该存储库中的许多代码,并逐步使每个Rust模块与3.0.0版本一起使用。

下图突出显示了这种独特体系结构可能实现的一些集成。请注意,此处显示的并非所有组件都可用。

选择Rust作为主要执行语言意味着内存使用是确定性的,并且避免了GC暂停的开销。

Ballista从头开始设计为使用列数据,从而实现了许多效率,例如矢量化处理(SIMD和GPU)和高效压缩。尽管Spark确实提供了一些列支持,但是今天它仍然很大程度上基于行。

Rust和Arrow的结合提供了出色的内存效率,在某些情况下,内存使用量可能比Apache Spark低5到10倍,这意味着更多的处理可以在单个节点上进行,从而减少了分布式计算的开销。

使用Apache Arrow作为内存模型和网络协议,意味着可以用任何编程语言在执行程序之间交换数据,而序列化开销却最小。

现在可在crates.io,Maven Central和Docker Hub上找到Ballista版本。 请参阅用户指南以获取有关使用Ballista发行版的说明。 该用户指南位于https://ballistacompute.org上,还有发布新闻和发行说明的博客。