2022-17: 新轮子 hdfs-sys & hdrs
💡
原文中文,约4300字,阅读约需11分钟。
📝
内容提要
随着 S3 等服务的流行,HDFS 仍被广泛使用。Databend 提出支持 HDFS 的需求,OpenDAL 计划采用 C API libhdfs 进行对接。hdfs-sys 和 hdrs 分别负责 HDFS C API 和 Rust 风格的封装,确保完整的 API 支持和良好的抽象分层。最终,OpenDAL 将基于 hdrs 开展 HDFS 支持工作。
🎯
关键要点
- 随着 S3 等服务的流行,HDFS 仍被广泛使用,Databend 向 OpenDAL 提出了支持 HDFS 的需求。
- OpenDAL 旨在成为链接所有存储服务的 Open Data Access Layer,HDFS 是需要支持的服务之一。
- OpenDAL 计划采用 C API libhdfs 进行对接 HDFS,hdfs-sys 和 hdrs 分别负责 HDFS C API 和 Rust 风格的封装。
- hdfs-sys 负责暴露 HDFS C API 的接口并链接 libhdfs,hdrs 则负责在 hdfs-sys unsafe API 基础上封装更符合 Rust 风格的 safe API。
- hdfs-sys 支持从 hadoop 2.2 开始到最新版本的所有 API 接口,满足完整的 API 支持需求。
- hdrs 封装了类似 std::fs 的接口,降低用户学习成本,并通过集成测试确保核心 API 在真实环境中正常工作。
- OpenDAL 将基于 hdrs 展开 HDFS 的支持工作,并通过真实需求进一步完善 hdfs-sys 与 hdrs。
❓
延伸问答
OpenDAL 为什么要支持 HDFS?
OpenDAL 旨在成为链接所有存储服务的 Open Data Access Layer,HDFS 是需要支持的服务之一,尤其是因为 Databend 向 OpenDAL 提出了支持 HDFS 的需求。
hdfs-sys 和 hdrs 的主要功能是什么?
hdfs-sys 负责暴露 HDFS C API 的接口并链接 libhdfs,而 hdrs 则在 hdfs-sys 的基础上封装更符合 Rust 风格的安全 API。
hdfs-sys 如何确保 API 的完整性和兼容性?
hdfs-sys 支持从 Hadoop 2.2 开始到最新版本的所有 API 接口,并通过对比不同版本的 hdfs.h 头文件来确保兼容性。
hdrs 如何降低用户的学习成本?
hdrs 封装了类似 std::fs 的接口,提供易用的 API,降低用户学习成本,并通过集成测试确保核心 API 在真实环境中正常工作。
OpenDAL 将如何进一步完善 hdfs-sys 和 hdrs?
OpenDAL 将基于 hdrs 展开 HDFS 的支持工作,并通过真实需求进一步完善 hdfs-sys 与 hdrs。
使用 libhdfs 的优缺点是什么?
使用 libhdfs 可以直接对接 HDFS,提供完整的 API 支持,但可能引入额外的依赖和用户预期的破坏。
➡️