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