Skip to content

Commit

Permalink
Update ballista mvn part1 blog
Browse files Browse the repository at this point in the history
  • Loading branch information
lewiszlw committed Apr 18, 2024
1 parent 591751d commit 00b7607
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions content/blog/2024-04-17-ballista-mvp-part1/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ title = "Ballista 分布式查询引擎 - 架构总览"
date = 2024-04-17
+++

[Ballista] 是基于 [Datafusion](一个单机查询引擎)实现的类似 Spark SQL 的分布式查询引擎。
[Ballista] 是使用 Rust 编写的,基于 [Arrow] 内存模型、[Datafusion] 单机查询引擎和 [Flight SQL] 网络协议实现的类似 Spark SQL 的分布式查询引擎。

本系列主要基于 [ballista-mvp] 项目,它是从 [Ballista] 项目裁剪而来,保留其最小核心实现,方便学习,基于它来分析如何构建一个分布式查询引擎。

![ballista-mvp-architecture](./ballista-mvp-architecture.drawio.png)

Scheduler 集群
- 支持 Arrow Flight SQL 协议
- 支持 Arrow Flight SQL 协议和 REST API
- 负责将原始 SQL 转换为分布式查询计划
- 负责调度整个分布式查询计划
- 将集群和作业状态存入共享 kv(如 etcd)

Executor 集群
- 支持 Arrow Flight 协议
- 负责查询计划执行
- 将中间结果存放本地磁盘
- 将中间结果写入本地磁盘
- 从共享文件系统或对象存储中读取数据集

一条 SQL 执行流程
Expand All @@ -30,6 +30,8 @@ Executor 集群
6. Scheduler 接收 Task 执行状态后,调度后续 stage 直至整个 DAG 图执行完毕
7. Scheduler 返回 SQL 执行结果给 Client

[Arrow]: https://github.com/apache/arrow-rs
[Flight SQL]: https://github.com/apache/arrow-rs/tree/master/arrow-flight
[Ballista]: https://github.com/apache/arrow-ballista
[Datafusion]: https://github.com/apache/arrow-datafusion
[ballista-mvp]: https://github.com/systemxlabs/ballista-mvp

0 comments on commit 00b7607

Please sign in to comment.