Ballista:Apache Arrow 的分布式调度器
已发布 2021 年 4 月 12 日
作者 Andy Grove (agrove)
我们很高兴地宣布,Ballista 已捐赠给 Apache Arrow 项目。
Ballista 是一个主要使用 Rust 实现的分布式计算平台,由 Apache Arrow 提供支持。它基于一种架构构建,允许其他编程语言(例如 Python、C++ 和 Java)作为一等公民得到支持,而无需支付序列化成本。
Ballista 的基础技术是
- Apache Arrow 内存模型和计算内核,用于高效地处理数据。
- Apache Arrow DataFusion 查询规划和执行框架,由 Ballista 扩展以提供分布式规划和执行。
- Apache Arrow Flight 协议,用于在进程之间高效地传输数据。
- Google Protocol Buffers,用于序列化查询计划。
- Docker,用于将执行器与用户定义的代码打包在一起。
Ballista 可以作为独立集群部署,也支持 Kubernetes。在任何一种情况下,都可以将调度器配置为使用 etcd 作为后备存储,以便在调度器发生故障时(最终)提供冗余。
状态
Ballista 项目处于早期开发阶段。但是,它能够在分布式集群中以合理的性能(与更成熟的分布式查询框架相当)运行复杂的分析查询。
Ballista 成为 Arrow 代码库的一部分带来的好处之一是,现在有机会将调度器的部分功能下推到 DataFusion,从而可以使用相同的统一查询调度器在 DataFusion 中跨核心以及在 Ballista 中跨节点无缝扩展。
欢迎贡献者!
如果您对能够使用 Rust 进行分布式计算和 ETL 感到兴奋,并希望为此做出贡献,那么有很多方法可以参与进来。最简单的入门方法是针对您自己的数据集试用 Ballista,并针对您发现的任何问题提交错误报告。您还可以查看当前的 问题列表 并尝试解决其中一个。
Rust README 的 Arrow Rust 社区 部分提供了与 Ballista 贡献者和维护者进行交互的其他方式的信息。