Skip to content

smallpond

前段时间 , deepseek 开源了 基于 duckdb 和 3FS 的轻量级数据处理框架 smallpond, 实现了 duckdb 的分布式计算能力

解读

下文是针对上文的理解,记录一下

核心功能与架构

smallpond 是一个轻量级数据处理框架,构建在 DuckDB 和 3FS 之上。以下是其核心功能和架构细节:

  • DAG 执行模型与延迟求值

smallpond 使用基于有向无环图 (DAG) 的执行模型,支持延迟求值(lazy evaluation)。这种模式常见于分布式计算框架,能够优化任务调度和资源利用。

  • Ray Core 集成

smallpond 利用 Ray Core(一个分布式计算框架,Ray Core 文档)来管理任务的分布式执行。Ray Core 提供可扩展性和容错性,适合大规模数据处理。

  • 分区策略

smallpond 支持多种数据分区策略,包括哈希分区(hash)、均匀分区(even)和随机洗牌(random shuffle),以适应不同的数据分布需求。例如,用户可以通过代码如 df.repartition(3, hash_by="ticker") 实现哈希分区(smallpond GitHub 示例)。

  • 3FS 文件系统

3FS 是 DeepSeek 开发的高性能分布式文件系统,优化用于 AI 训练和推理工作负载,支持现代 SSD 和 RDMA 网络。它的设计专注于随机读性能,去除了传统文件系统的缓存和预取功能,以提升 AI 任务的效率(3FS GitHub 仓库)。在 smallpond 中,3FS 负责分布式存储和数据访问。

与其他框架的比较

  • Apache Spark

Spark 是分布式计算的经典框架,广泛用于大数据处理,但其复杂性和开销较高。smallpond 则更轻量级,专注于 SQL 查询和数据分析,适合数据工程师(Spark 官网)。

  • Daft

Daft 是一个基于 Rust 的分布式框架,专注于数据处理,但其与 DuckDB 的集成不如 smallpond 紧密(Daft 官网)。

  • 其他扩展方式

AWS Lambda 进行无服务器计算([AWS Lambda 文档]([invalid url, do not cite]))或 MotherDuck 的双执行模式(结合本地和云资源,MotherDuck 架构)。这些方法适合不同场景,但可能缺乏 smallpond 的分布式性能。

S3 扩展

3FS 扩展到 S3

源码

Java如何实现分布式计算

附文

如果仅仅使用 分布式计算能力, hazelcast 稍显重量, 其核心功能 分布式缓存用不上