Apache Amoro(阿莫罗)是个啥玩意儿?听过没?

作者:微信小助手

发布时间:2024-09-12T23:29:18

Lakehouse 管理系统

一、架构图

Amoro 为用户、平台和产品构建湖原生数据仓库和架构

二、主要特点

1、自我优化

    持续优化表,包括压缩小文件,变更文件,定期删除过期文件,以保持较高的查询性能并降低存储成本。

2、目录服务

    为所有计算引擎提供统一的目录服务,并可与现有的元数据存储服务(如Hive Metastore、AWS Glue)一起使用。

3、管理工具

    提供多种管理工具,包括WEB UI和标准SQL命令行,帮助您更快上手并更轻松地与其他系统集成。

4、多种格式

    支持Iceberg、Paimon、Mixed-Iceberg、Mixed-Hive等不同的表格式,满足不同的场景需求,并提供统一的管理能力。

5、丰富的插件

    提供各种插件以便与其他系统集成,例如使用 Flink 进行持续优化以及使用 Spark 和 Kyuubi 进行数据分析。

6、独立于基础设施

    可在私有环境、云环境、混合云环境、多云环境中轻松部署和使用。

7、支持多处理引擎

三、快速入门

    快速体验其核心功能。您可以选择使用或Iceberg Format来Mixed-Iceberg Format完成整个过程。在开始快速演示之前,需要执行一些步骤来准备环境。最快的入门方法是使用使用 apache/amoro 映像的 docker-compose 文件。要使用它,您需要安装 Docker CLI以及Docker Compose CLI

拥有这些之后,将下面的 yaml 保存到名为 docker-compose.yml 的文件中:

version: "3"services:  minio:    image: minio/minio    container_name: minio    environment:      - MINIO_ROOT_USER=admin      - MINIO_ROOT_PASSWORD=password      - MINIO_DOMAIN=minio    networks:      amoro_network:        aliases:          - warehouse.minio    ports:      - 9001:9001      - 9000:9000    command: [ "server", "/data", "--console-address", ":9001" ]  mc:    depends_on:      - minio    image: minio/mc    container_name: mc    networks:      amoro_network:    environment:      - AWS_ACCESS_KEY_ID=admin      - AWS_SECRET_ACCESS_KEY=password      - AWS_REGION=us-east-1    entrypoint: >      /bin/sh -c "      until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done;      /usr/bin/mc rm -r --force minio/warehouse;      /usr/bin/mc mb minio/warehouse;      /usr/bin/mc policy set public minio/warehouse;      tail -f /dev/null      "        amoro:    image: apache/amoro    container_name: amoro    ports:      - 8081:8081      - 1630:1630      - 1260:1260    environment:      - JVM_XMS=1024    networks:      amoro_network:        aliases:          - warehouse.minio    volumes:      - ./amoro:/tmp/warehouse    command: ["/entrypoint.sh", "ams"]    tty: true    stdin_open: true
networks: amoro_network: driver: bridge

接下来,使用以下命令启动 docker 容器:

docker-compose up

3.1、准备步骤

3.1.1、创建优化器

在浏览器中打开

http://localhost:1630

用户名/密码:admin/admin ,输入即可登录仪表盘。

点击Optimizing侧边栏的 ,选择Optimizer Groups并点击Add Group按钮在创建目录之前创建一个新组:

3.1.2、创建目

点击Catalogs侧边栏的 ,点击+Catalog List下的按钮,创建一个测试目录,并将其命名为demo_catalog:

3.1.3、启动优化

    点击Optimizing侧边栏的 ,选择Optimizer Group标签,点击scale-out群组 的操作local。

将优化器的并发度设置为1,然后单击OK

然后你可以切换到标签页Optimizers,你可以在这里找到新启动的优化器。

3.2、演示

3.2.1、初始化

点击Terminal侧边栏的 ,你可以在这里使用 SQL 创建测试表。终端目前支持执行 Spark SQL 语句。

点击RUNSQL编辑器上方的按钮,等待SQL查询执行完毕,即可在SQL编辑器下看到查询结果。

3.2.2、改变数据

在中逐个执行以下 SQL 语句Terminal

-- insert a few rows firstINSERT INTO db.user (id, name, ts) VALUES (4, 'rock',  CAST('2022-07-02 01:11:20' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (5, 'jack',  CAST('2022-07-02 05:22:10' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (6, 'mars',  CAST('2022-07-02 08:23:20' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (7, 'cloe',  CAST('2022-07-02 08:44:50' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (8, 'smith', CAST('2022-07-02 10:52:20' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (9, 'piec',  CAST('2022-07-02 11:24:30' AS TIMESTAMP));INSERT INTO db.user (id, name, ts) VALUES (10, 'vovo', CAST('2022-07-02 12:00:20' AS TIMESTAMP));-- delete some rows thenDELETE FROM db.user where id = 1;DELETE FROM db.user where id = 4;DELETE FROM db.user where id = 7;-- query the table SELECT * from db.user;

3.2.3、检查自我

    当新数据写入表时,Amoro 将自动触发表的自我优化。 点击Tables侧边栏的 ,选择测试表进入表详情页,切换到标签Optimizing页,可以看到该表上所有的自优化任务。

您也可以Optimizing通过侧边栏进入页面,查看当前所有表的优化状态。

四、官网地址:

官网地址

https://amoro.apache.org/