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 贡献者和维护者互动的其他方式的信息。