写点什么

从 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:475847

评论

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

如何用五步建设数据中台?

博文视点Broadview

大数据 数据中台 架构 中台

将footer固定在底部: Flexbox vs Grid

寇云

CSS css3

JVM最佳学习笔记<一>---Java内存区域与内存溢出异常

Loubobooo

Java JVM

简述 HTTP 缓存相关的首部及其行为

黄耗子皮

缓存 HTTP

最长回文算法(马拉车算法)分析

Gadzan

Java 算法 LeetCode

技术工作的一二三之价值观方法论

拖地先生

个人成长 方法论

技术工作的一二三之快餐

拖地先生

项目管理 软件开发 技术管理 软件开发流程

介绍一下自研开源NLP工具库---MYNLP

陈吉米

自然语言处理 中文分词 mynlp nlp

2020年全球经济萎缩,飞链热交易所逆袭而来闪耀数字经济

极客编

钱从哪里来 - 中国家庭的财富方案

石云升

读书笔记 工作 财富 买房 资产配置

Yii2.0 RESTful API 基础配置教程

Middleware

php RESTful Yii2

运维与云

yann [扬] :曹同学

RocketMQ broker.properties

李绍俊

RocketMQ

OAM v1alpha2 新版:平衡标准与可扩展性

孙健波

运维那点事 - jenkins流水线

yann [扬] :曹同学

ESP8266远程控制+MicroPython 固件初体验

黄耗子皮

物联网 esp8266

Yii2.0 RESTful API 认证教程

Middleware

php RESTful Yii2

DevOps知识点——3C知多少

禅道项目管理

DevOps 测试 持续集成

JVM最佳学习笔记<三>---虚拟机性能监控与故障处理工具

Loubobooo

Java JVM

Yii2.0 RESTful API 之版本控制

Middleware

php RESTful Yii2

[JVM] String#intern 面试必会

猴哥一一 cium

Java JVM string pool string Java 25 周年

到底谁是你老板

Neco.W

工作 创业心态

Python 沙盒环境配置

黄耗子皮

JVM最佳学习笔记<四>---虚拟机类加载机制

Loubobooo

Java JVM

Yii2.0 RESTful API 之速率限制

Middleware

php RESTful Yii2

如何成为高手: 到知识的源头去

lmymirror

学习 方法论 高手

JVM最佳学习笔记---总览

Loubobooo

Java JVM

JVM最佳学习笔记<二>---垃圾收集器与内存分配策略

Loubobooo

Java JVM

一周信创舆情观察(5.18~5.24)

统小信uos

基础软件 操作系统

七年老程序员面试经历

代码诗人

技术工作的一二三之内功

拖地先生

个人成长

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