写点什么

从 Arctic 到 Amoro:我们的开源旅程和愿景

作者:凌断

  • 2023-08-15
    北京
  • 本文字数:3934 字

    阅读完需:约 13 分钟

从 Arctic 到 Amoro:我们的开源旅程和愿景

大家好,我是 Arctic Maintainer 成员凌断,去年 8 月我们开源了 Arctic 项目,感谢各位小伙伴一年来的陪伴,借这个一周年的时机,我想跟大家分享一些信息。


项目更名


第一,Arctic 项目名称今日起正式变更为 Amoro [/aˈmoro/],项目官网和 GitHub 同步变更:


原先以 Arctic 命名的官网,文档和源码地址会重新定向到 Amoro。


虽然 Arctic 这个名称深受大家喜爱,但与一些知名软件商标冲突,不利于长期规划,下面列举两个 Arctic 商标冲突的软件:


另一方面,Arctic 的灵感更多源于 Apache Iceberg 这个优秀的开源项目,但是在这开源的一年时间里我们发现一个可以适配更多数据湖格式的湖仓管理系统更加符合社区用户的需要,后续我们依然会围绕 Iceberg 去构建更多湖仓一体和湖原生实践,同时也会在社区的驱动下对接更多的数据湖格式,希望这个开源项目能够为这个方向带来一些有意义的变化,为此我们期望能够赋予这个项目一个更加通用的名称。


我们认为字母 A 和这个项目有缘(下面会展开聊聊),所以在 ChatGPT 中输入了以下的 propmt。


给我想一个以字母 A 开头,字符不超过 6 位,朗朗上口易于传播的软件名称,避免跟已知软件存在商标冲突。


经过多次纠偏和商标确认,得到了 Amoro [/aˈmoro/] 这个名字,下面是全新设计的 LOGO,这里特别感谢家超同学在视觉设计上的创意和付出:


项目定位


我想通过倒立的字母 A 来聊聊这个项目是什么,为什么做:



拥抱开源生态


倒立的 A 最上面的部分是一个向上的开口,就像是一个人张开双臂拥抱这个世界,也象征着这个项目会以最开放的方式和各种开源软件一起工作,包括:

  • 不会从 0 做一个数据湖 format

  • 以社区驱动积极对接不同数据湖 format

  • 以社区驱动积极对接各种计算引擎

  • 尽可能以可插拔的架构来对接服务,比如 Kyuubi,消息队列


我想举两个例子来说明 Amoro 的开放性。


第一,Amoro 目前活跃的社区用户,绝大多数都是 Apache Iceberg 的原生用户,Amoro 提供了原生 Iceberg 的自优化和管理功能,在 0.5 版本中,Amoro 实现了 Iceberg Restful Catalog 接口,意味着原生 Iceberg 用户可以使用 Iceberg 提供的 Restful Catalog 访问 Amoro,用户可以在这里感受到类似于 Hive 和 HMS 天然集成的特性,未来 AMS 还会基于 Iceberg Metrics 扩展更多有价值的度量指标,这里必须要感谢 Iceberg 社区对用户需求的洞察和高瞻远瞩。


第二,Amoro 支持对接既有的 Metastore,比如 HMS,AWS Glue。我们观察到社区里很多用户使用了 HMS,可能还基于 HMS 做了授权鉴权,Amoro 可以通过 external catalog 的功能将 HMS 作为扩展的元数据存储,同时还能提供自优化,快照管理等特性。用户可以快速将 Amoro 应用于现有的系统,在社区实践中,曾出现过第一天测试,第二天上线的案例。


场景与价值


A 的中央部分是两点一横,对应 Amoro 的应用场景。


一点:湖原生数仓


当我们使用数据库,或者如 TeraData、GP 一类的 MPP 数仓,大家习惯于把他们当做一个黑盒,用标准的 SQL 或工具来使用数据,当我们把技术栈切到数据湖,会发现大家似乎习惯于把工作拆成一个个模块:数据加工,ETL 用 Spark/Flink,数据分析用 Trino、Presto 和 Impala,相比传统数仓,数据湖开放的特性和生态给业务带来了超大规模的扩展性、伸缩性和相对可控的成本,但也丧失了传统数据库和数仓开箱即用的特性。


对此我们的工程师可能会想很多办法,比如自己开发一个定时调度的数据优化平台,或者把数据 layout 优化的工作直接丢给用户,这个谁用谁知道,把原先数据库和数仓内部极其复杂的数据合并和优化规则交给业务平台去做,这基本是一项不可能做好的事情,尤其当你想用新的数据湖 format 统一实时和离线数仓,数据的优化规则可能需要翻天覆地的变化。


在我们和业务共创的过程中,我们看到了大量这样的需求:业务希望用一套数据湖技术栈,同时做离线数仓和实时数仓,数据可能实时摄取,也可能离线写入。既想要数据湖的低成本,高弹性,可以使用成套的数据湖工具(大数据平台),也可以有传统数据库和数仓黑盒使用的体验,业务只管使用数据:



我们将这种场景命名为湖原生数仓,湖是新型的数据湖 format,能够为业务带来 ACID,流批统一等特性,数仓强调开箱即用,自管理和自优化的能力,我们希望通过 Amoro 结合数据湖 format 实现湖原生数仓的愿景。


湖原生数仓本质上是 Lakehouse(虽然这个概念足够通用,但不得不承认,当我跟另一位同学讲 Lakehouse 的时候,很难说他想到的东西和我一样) 在数仓方向上的精准抽象,当我们说湖仓一体时,绝大多数场景讲的就是湖原生数仓。


一横:流式 pipeline


对实时业务,过去大部分实践是从数据源到数仓定义一个独立的 ETL 任务,随着业务对数据时效性越来越重视,大家开始研究实时数仓和实时计算的体系化研发、数据分层、资产复用和数据治理。2018 年 Databricks 就提出用 Delta 架构实现流批架构的统一,即所谓的流批一体,而在流批一体之前,首先要做好流式的 pipeline,再将批的选择权交给用户。



流式 pipeline 需要用的技术有 Incremental query、CDC、基于湖的维表 join,基于湖的多流 join 等。CDC 和增量读是相对成熟的功能,但基于湖做多表关联,解决引擎大状态问题,这是个湖与引擎高度耦合的功能,我们认为整个行业在这块的成熟度还有所不足,尤其在超大规模数据的场景下,需要 case by case 地解决问题。


对流式 pipeline 的场景,Amoro 提供了一套 Mixed format,可以更好地应对 CDC,毫秒级 pipeline 的需求,同时在 Self-optimizing 和 Merge-on-read 方面提供了基于 bucket 的性能优化,其中 Mixed Hive 能够额外提供 Hive 原生读写的功能,感兴趣的同学可以参阅:

https://amoro.netease.com/docs/latest/formats-overview/


未来 Amoro 希望通过对接不同数据湖 format 来探索这个场景的更多可能性,比如目前社区已经在推进和 Paimon 的集成,我们有理由相信 Paimon 在流式场景下可以给用户带来更多惊喜。


另一点:云原生数仓


数据湖 format 技术在国内讨论更多的是 CDC,流批一体这样的场景,立项之初这也是 Amoro 主要关注的点。但熟悉 Iceberg 的同学可能知道,Iceberg 诞生的重要背景之一,是面向 AWS S3 构建数仓的需求,Hive 在对象存储之上有诸多不足,在 Iceberg 之上都有得到妥善解决,技术点这里不多做讨论。

云原生数仓可以认为是纯粹面向对象存储的数仓方案,业务往往会选择一个全新的技术栈,比如用 Iceberg 代替 Hive,用 AWS Glue 代替 HMS,而 Amoro 提供的 AMS 实现了 Iceberg 的 Restful catalog 接口;提供了数据自管理和优化的特性;提供了时效性、性能、成本的度量和管理功能,能够在云原生数仓的场景下作为 Iceberg 的最佳伴侣来使用。


定位和愿景


Amoro 是什么,这个答案既要回答立项的初心,也要代表项目长期的定位和愿景:

"Amoro is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience, and helps data platforms or products easily build infra-decoupled, stream-and-batch-fused and lake-native architecture."


首先 Amoro 是湖仓管理系统,这里我们借鉴了数据库管理系统的叫法,可能很多同学乍一听会觉得管理系统会类似于实时计算、离线开发一类的工具平台,这里我稍稍做个澄清:工具的目标是帮助用户更高效、便利地执行某种流程,而 Amoro 的目标是将一些流程向用户屏蔽,交给用户一个黑盒,他的定位更多是一个基础软件,所以 Amoro 的 MS 类似于 DBMS 中的 MS,我们经常讲一句话:build a box for lakehouse。


这里抛砖引玉一下,我们经常在数据库和传统数仓中看到一些面向 information_schema 的标准化指令,Amoro 希望可以做 Lakehouse 的 information_schema,后续我们会尝试带动社区推进这块功能的标准化。


其次 Amoro 不像数据库和传统数仓一样是个纯粹地黑盒,它开放的特性可以很好地契合由开源技术栈构建的各种大数据平台和产品,帮助这些平台快速上手 Iceberg 这类新型数据湖 format,体现湖原生数仓、湖仓一体的业务价值,所以它即可面向数仓用户,也可以面向平台开发者,在我们的社区实践中,后者的比例是占大头的。

活动预告


基础软件是现代数据栈发展的核心驱动力,而在大数据领域,开源又是基础软件发展的必要路径。过去多年来我们团队为公司研发了多项基础软件,有的因为关键业务发展不利而消亡,有些至今活跃在生产一线,我最大的感受是闭源软件,尤其那些自给自足而不是为 2B 而生的项目,无论多底层,很容易受制于组织架构和生产关系的割裂,或公司业态不够丰富,而无法在通用性和标准化上做到极致。


这也正是我们做开源的初衷,我们希望通过纯粹的开源精神,为我们的用户,为这个行业打磨一套在湖仓领域的基础软件,Make something different!


回顾过去一年,社区已有 20+ 个来自不同企业的开发者参与贡献,10+ 个生产用户案例。在社区生态上,也将持续建设,以更多的方式让用户了解参与 Amoro,包括但不限于项目的捐赠,放弃掌控权,成为一个多方共建的开源社区。


接下来做个预告,Amoro 即将发布 0.5 的新版本!社区也将组织一场试用和贡献活动,欢迎各位小伙伴关注、试用 Amoro 新发布的版本,有任何问题可以随时反馈社区,同时也欢迎更多的开发者能参与到 Amoro 的共建中来,让社区能更加丰富、更有趣!


Have fun!

2023-08-15 14:475176

评论

发布
暂无评论
发现更多内容

LeaRun.Java快速开发平台 高效代码自动化生成

力软低代码开发平台

你可能不知道,我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

Java全栈架构师

Java kafka 程序员 面试 架构设计

DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

HarmonyOS开发者

HarmonyOS

基于Netty,徒手撸IM(一):IM系统设计篇

JackJiang

网络编程 Netty 即时通讯 im开发

扩展你的KUBECTL功能

mengzyou

Kubernetes DevOps kubectl krew

激进技术派 vs 项目保守派的微服务架构之争

BoCloud博云

微服务 微服务架构 云原生 istio 服务网格

一文掌握数仓中auto analyze的使用

华为云开发者联盟

数据库 sql 后端 analyze

华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙

科技汇

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

在线文本行固定长度填充工具

入门小站

工具

DeFi生态NFT流动性挖矿系统开发搭建

薇電13242772558

NFT DeFi流动性挖矿

“只跑一趟”,小区装维任务主动推荐探索

鲸品堂

运维

上线首月,这家露营地游客好评率高达99.9%!他是怎么做到的?

天天预约

小程序 SaaS 线上预约 预约工具 露营

使用 MyBatis 操作 Nebula Graph 的实践

NebulaGraph

mybatis 图数据库 Nebula Graph

实战模拟│JWT 登录认证

经验分享 JWT 开发语言 7月月更 跨域认证

输入的查询SQL语句,是如何执行的?

华为云开发者联盟

MySQL sql 开发 语句

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

在线SQL转Excel(xls/xlsx)工具

入门小站

工具

被忽视的问题:测试环境配置管理

老张

软件测试 测试环境治理

NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

阿里云视频云

音视频 直播 视频编码

应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设

SelectDB

数据库 数据中台 Apaache Doris

整理混乱的头文件,我用include what you use

华为云开发者联盟

c++ 开发 C语言 技能

python小知识-python泛函数

AIWeker

Python python小知识 7月月更

联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点

科技大数据

解密函数计算异步任务能力之「任务的状态及生命周期管理」

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

托管式服务网络:云原生时代的应用体系架构进化

阿里巴巴云原生

阿里云 云原生 服务网格

能源行业的数字化“新”运维

博睿数据

AIOPS 智能运维 博睿数据 能源行业

字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验

字节跳动终端技术

字节跳动 前端

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

科技之家

多模输入事件分发机制详解

OpenHarmony开发者

Open Harmony

CANN算子:利用迭代器高效实现Tensor数据切割分块处理

华为云开发者联盟

人工智能 算子 迭代器

从 Arctic 到 Amoro:我们的开源旅程和愿景_数据湖仓_InfoQ精选文章