从 Icelake 到 Iceberg Rust
本文作者丁皓是Databend 研发工程师,也是开源项目 OpenDAL 作者,主要研究领域包括存储、自动化与开源。
太长不看
Icelake 已经停止更新,请改用 iceberg-rust。 Iceberg-rust 是一个由社区驱动的项目,所有 Icelake 的贡献者都已转向该项目。它涵盖了 Icelake 之前提供的所有功能,并且是 Apache Iceberg 的官方实现版本。
引言
我将分享 icelake 和 iceberg-rust 背后的历史。这篇文章将记录一个开放社区是如何运作的:人们因共同的目标而团结,共同努力。这是开源最初的力量,也总是吸引我的地方。
Iceberg 是一种用于巨大分析表的高性能格式。它在全球范围内被广泛使用,并且几乎所有查询引擎都支持它。用户可以编写 SQL 来从存储在对象存储服务中的 Iceberg 表查询数据,无需首先将其导入数据库。 长期以来,Iceberg 缺少官方 Rust 实现,这就是我们故事开始的地方。
Icelake In Databend
我们在 Databend 内部已经讨论了很多次关于支持开放表格格式的话题,我对此非常感兴趣,尤其是 Iceberg。市面上有一些 Iceberg 的绑定存在,但都还未完全准备就绪。因此,我决定启动自己的项目叫做 Icelake。icelake 的主要理念是构建一个开放的湖仓实现方案,能够与任何表格格式兼容,包括 Iceberg、Hudi 和 Delta。
这个项目由Databend Labs赞助。我们最初将专注于支持Iceberg。
多亏了详尽的Iceberg表格规范,我用了大约一周的时间来实现Iceberg规范。在此过程中,我深入了解了表格格式是如何运作的。我已经成功地让Databend支持起了Iceberg表的读取操作!
Icelake With RisingWave
在ASF,我们常强调Community Over Code。创建了一个工作示范后,我的首要任务是找到另一位用户。幸运的是,我发现RisingWave也在开展Iceberg支持的工作。他们已经使用了Apache OpenDAL,因此我们与RisingWave有了一些联系。我直接联系他们,讨论了icelake,并邀请他们加入开发。 这就是我如何遇见Renjie的。我们俩都怀揣着用rust重写大数据生态系统的愿景。能够与他合作让我感觉非常棒。经过几次讨论后,Renjie 决定将icelake整合到RisingWave中。他和ZENOTME加入了icelake项目成为维护者,在那里他们修复了众多bug并增加了写入支持。随后,RisingWave实现了基于icelake的Iceberg sink功能。
Born of Iceberg Rust
在icelake的开发过程中,社区的一些人也认识到了为Iceberg提供原生Rust支持的必要性。Brian Olsen 发起了关于 Rust支持 的讨论。维护一个 Iceberg Rust实现的 Jan Kaul 加入讨论,并强调了icelake的存在。他还提到: It was a great timing to start a rust project in the official apache iceberg repository that we can all work on together. 随后,讨论转移到了 iceberg slack,更多的Iceberg PMC成员和提交者加入了进来。Jan Kaul邀请Renjie和我加入关于Iceberg的对话------非常感谢! 我们花了一些时间讨论仓库位置,并举行了一次在线会议。我们遇见了Jan Kual和Fokko。能够与有着相同目标的人建立联系真是太有意义了。尽管我们以前从未见过面,但共同的目标使我们能够有效地合作。这是开源社区美好的一面! 会议结束后不久,Fokko帮助我们建立了#rust Slack频道 和 iceberg-rust仓库。iceberg rust 项目正式启动,在我的生日(7月20日,考虑到时区变化)这一天。
Grow of Iceberg Rust
在建立了Iceberg Rust仓库之后,我们设定了贡献工作流程、CI操作和发布脚本,还添加了完整的规范实现和Arrow集成。 随着开发的进展,更多人加入了我们的团队,包括marvinlanhenke、sdd、viirya、odysa,以及其他30位!不到一年时间,我们吸引了43名贡献者,并进行了官方ASF发布。Renjie 被授予首位来自Iceberg Rust项目的Iceberg提交者荣誉。他还代表该项目出席了第一届Iceberg峰会:将Apache Iceberg带入Rust世界!
Sunset of Icelake
在撰写本文时,Iceberg Rust已覆盖icelake之前提供的所有功能,并现已成为Apache Iceberg的官方实现。一些主要使用icelake的用户已经或正在转向Iceberg Rust。
是时候逐步淘汰icelake项目,为Iceberg Rust让路了。我代表所有icelake提交者宣布,我们已正式结束了icelake项目。它将不再维护,所有当前用户现在应迁移到Iceberge Rust。 感谢所有参与和使用icelike的贡献者及用户;能够得到你们的支持是极大的荣幸。
Future of Iceberg Rust
目前,Iceberg Rust 社区正在开发 0.3 版本。这个版本将包括大部分用户需要用来读写 Iceberg 表的功能。我们鼓励所有对使用 Rust 操作 Iceberg 感兴趣的人尝试此版本,并为我们提供反馈。
在下一个版本中,我们将整合对 DataFusion 的原生支持,并增强与其他查询引擎连接 Iceberg 的体验,例如Databend。也许我们可以探索支持 iceberg-nodejs 或 iceberg wasm 的新领域。有许多有趣的领域等待我们去发现! 总结
就这些了。感谢大家帮助构建 iceberg-rust。我期待在这一领域做出更多贡献。如果你也感兴趣,请随时联系我;我很乐意提供帮助。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实现 LLM 应用的可观测,难在哪里?
随着生成式 AI 概念的火爆,以 ChatGPT、通义大模型为代表,市场上涌现了一系列商用或者开源的大模型,同时基于大语言模型(LLM )以及 AI 生态技术栈构建的应用以及业务场景也越来越多。 众所周知,LLM 包含数十亿甚至万亿级别的参数,其架构复杂,训练和推理涉及大量计算资源。这些特性使得它们在实际应用中可能表现出意料之外的行为,同时也带来了性能、安全性和效率等方面的挑战。 LLM参数量不断增长 (图片来源:https://www.alidraft.com/2023/12/19/deploy-your-llm-model-on-cloud-efficent/) 那么,如何监控并保障大模型应用上线的性能以及用户体验?如何支持复杂拓扑场景下 LLM 应用领域的链路可视化分析以及问题根因定位?需要从成本以及效果等方面获得线上实际表现,辅助选择、分析、评估以及优化迭代大语言模型等。因此,针对 LLM 应用技术栈,构建行之有效的可观测能力解决方案就成为关键。 由于模型本身的复杂性、数据处理的规模以及应用的动态环境,实现 LLM 应用的可观测性面临着诸多难点,比如: 数据量与复杂度: LL...
- 下一篇
Zadig 简化 K8s YAML ,实现上千微服务自动化运维
在云原生微服务架构中,企业能够享受到更高的可用性和扩展性,这对于满足业务的快速迭代至关重要。然而,管理大量服务的 YAML 配置成为了一项挑战:服务间的配置细微差别要求频繁复制粘贴,而为不同的部署环境(如开发、测试、预发布等)定制配置又会导致 YAML 文件数量激增。 为了解决这些问题,Zadig 提供了高效的服务配置管理方案: 支持从现有 Kubernetes 集群批量导入服务,实现服务配置的快速迁移。 允许将多个服务配置文件整合至代码库,并同步至 Zadig,以批量创建服务。 提供服务模板功能,通过定义模板和少量参数,简化服务的创建过程。 本文将详细介绍如何应用 Zadig 的这些功能,以实现微服务的高效管理和自动化运维。 从现有 Kubernetes 批量导入服务 适用:K8s YAML 类型项目的场景,可以直接从现有 K8s 集群的命名空间批量导入服务,几乎无迁移成本。 批量导入服务 进入项目的服务模块 -> 点击新建按钮 -> 选择从 Kubernetes 导入。 选择服务所在的集群和命名空间 -> 添加服务 -> 选择配置类型及配置名称后导入。 支持...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8