Thanks to visit codestin.com
Credit goes to github.com

Skip to content
forked from apache/amoro

Apache Amoro(正在孵化)是一个基于开放数据湖格式构建的 Lakehouse 管理系统。

License

Notifications You must be signed in to change notification settings

yuanzhongqiao/amoro

 
 

Repository files navigation

阿莫罗标志

Amoro(原名 Arctic)是一个基于开放数据湖格式构建的 Lakehouse 管理系统。 Amoro 与 Flink、Spark 和 Trino 等计算引擎合作,为 Lakehouse 带来可插拔和自我管理的功能,提供开箱即用的数据仓库体验,并帮助数据平台或产品轻松构建基础设施解耦、流式传输和-批量融合和湖泊原生架构。

建筑学

Amoro的架构图如下:

阿莫罗建筑

  • AMS:Amoro管理服务提供Lakehouse管理功能,如自优化、数据过期等。它还为所有计算引擎提供统一的目录服务,也可以与现有的元数据服务结合。
  • 插件:Amoro 提供了多种外部插件可供选择,以满足不同的场景。
    • 优化器:自优化执行引擎插件对所有类型表格式表异步执行合并、排序、去重、布局优化等操作。
    • Terminal:SQL命令行工具,提供本地Spark、Kyuubi等多种实现。
    • LogStore:基于Kafka、Pulsar等消息队列,提供毫秒级到秒级的SLA,用于实时数据处理。

支持的表格格式

Amoro可以管理不同表格式的表,类似于MySQL/ClickHouse可以选择不同的存储引擎。 Amoro通过使用不同的表格格式来满足不同的用户需求。目前,Amaro 支持四种表格格式:

  • Iceberg格式:用户可以直接将自己的Iceberg表委托给Amoro进行维护,这样用户不仅可以使用Iceberg表的所有功能,还可以享受Amoro带来的性能和稳定性提升。
  • 混合Iceberg格式:Amoro在Iceberg格式之上为流式更新场景提供了一组更优化的格式。如果用户对流式更新性能要求较高,或者对CDC增量数据读取功能有需求,可以选择使用Mixed-Iceberg格式。
  • 混合Hive格式:很多用户在使用数据湖的同时,不希望影响原本建立在Hive上的业务。因此,Amoro提供了Mixed-Hive格式,只需通过元数据迁移即可将Hive表升级为Mixed-Hive格式,而原有的Hive表仍然可以正常使用。这样保证了业务的稳定性,并受益于数据湖计算的优势。
  • Paimon 格式:Amoro 支持以 Paimon 格式显示元数据信息,包括 Schema、Options、Files、Snapshots、DDL 和 Compaction 信息。

支持的引擎

冰山格式

Iceberg格式表使用Iceberg社区提供的引擎集成方法。详情请参考:Iceberg Docs

混合格式

Amoro 支持混合格式的多种处理引擎,如下所示:

处理引擎 版本 批量读取 批量写入 批量覆盖 流式阅读 流式写入 创建表 修改表
弗林克 1.15.x、1.16.x、1.17.x
火花 3.1、3.2、3.3
蜂巢 2.x、3.x
特里诺 406

特征

  • 自我优化——持续优化表,包括压缩小文件、更改文件、定期删除过期文件,以保持较高的查询性能并降低存储成本。
  • 多种格式——支持Iceberg、Mixed-Iceberg、Mixed-Hive等不同表格式,满足不同场景需求,并提供统一管理能力。
  • 目录服务 - 为所有计算引擎提供统一的目录服务,该服务也可以与现有的元数据存储服务(例如 Hive Metastore 和 AWS Glue)一起使用。
  • 丰富的插件 - 提供各种插件与其他系统集成,例如使用 Flink 进行持续优化以及使用 Spark 和 Kyuubi 进行数据分析。
  • 管理工具 - 提供多种管理工具,包括WEB UI和标准SQL命令行,帮助您更快上手并更轻松地与其他系统集成。
  • 基础设施独立——可以在私有环境、云环境、混合云环境、多云环境中轻松部署和使用。

模块

Amoro包含以下模块:

  • amoro-core包含其他模块的核心抽象和通用实现
  • amoro-ams是amoro管理服务模块
    • ams-api包含 ams thrift api 和常用接口
    • ams-dashboard是 ams 的仪表板前端
    • ams-server是ams的后端服务器
    • ams-optimizer提供默认优化器实现
  • amoro-mixed-format提供混合格式实现
    • amoro-hive与 Apache Hive 集成并实现混合 Hive 格式
    • amoro-flink为混合格式表提供 Flink 连接器(使用 amoro-flink-runtime 作为阴影版本)
    • amoro-spark为混合格式表提供 Spark 连接器(使用 amoro-spark-runtime 作为阴影版本)
    • amoro-trino为混合格式表提供 Trino 连接器

建筑

Amoro 是使用 Maven 和 Java 1.8 和 Java 17(仅适用于mixed-format/trino模块)构建的。

  • 构建 Trino 模块需要toolchains.xml${user.home}/.m2/目录中进行配置,内容为
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
    <toolchain>
        <type>jdk</type>
        <provides>
            <version>17</version>
            <vendor>sun</vendor>
        </provides>
        <configuration>
            <jdkHome>${YourJDK17Home}</jdkHome>
        </configuration>
    </toolchain>
</toolchains>
  • 要调用构建并运行测试:mvn package -P toolchain
  • 要跳过测试:mvn -DskipTests package -P toolchain
  • 要在没有 trino 模块和 JAVA 17 依赖的情况下进行打包:mvn clean package -DskipTests -pl '!mixed-format/trino'
  • 使用hadoop 2.x构建(默认为3.x)mvn clean package -DskipTests -Dhadoop=v2
  • 指示优化器的 Flink 版本(默认为 1.18.1):mvn clean package -Dflink-optimizer.flink-version=1.15.4。如果Flink版本在1.15.0以下,还需要添加参数-Pflink-pre-1.15mvn clean package -Pflink-pre-1.15 -Dflink-optimizer.flink-version=1.14.6mvn clean package -Pflink-pre-1.15 -Dflink-optimizer.flink-version=1.14.6 -DskipTests

trino模块中默认跳过 Spotless 。所以如果你想在构建trino模块时执行checkstyle,你必须在Java 17环境中。

  • mixed-format/trino要在 Java 17 环境中调用构建包含模块:mvn clean package -DskipTests -P trino-spotless
  • 仅在 Java 17 环境中构建mixed-format/trino及其依赖模块:mvn clean package -DskipTests -P trino-spotless -pl 'mixed-format/trino' -am

快速开始

访问https://amoro.netease.com/quick-demo/快速探索 amoro 的功能。

加入社区

如果您对Lakehouse、Data Lake Format感兴趣,欢迎加入我们的社区,我们欢迎任何组织、团队和个人共同成长,并真诚希望通过开源帮助用户更好地使用Data Lake Format。

加入阿莫罗微信群:添加“ kllnn999”为微信好友,并注明“阿莫罗爱人”。

贡献者

这个项目的存在要感谢所有做出贡献的人。

用contrib.rocks制作。

明星历史

明星历史图

About

Apache Amoro(正在孵化)是一个基于开放数据湖格式构建的 Lakehouse 管理系统。

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 89.5%
  • Scala 5.2%
  • Vue 2.4%
  • TypeScript 1.0%
  • ANTLR 0.8%
  • JavaScript 0.3%
  • Other 0.8%