Iceberg+Amoro+CloudEon体验云原生数据湖

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
函数计算FC,每月15万CU 3个月
简介: 通过使用CloudEon、Iceberg、Flink、Spark和Amoro,您可以轻松地在Kubernetes上构建一个强大的大数据基础环境。

组件版本

  • Kubernetes 1.21.5
  • CloudEon 1.2.0
  • Iceberg 1.2.1
  • Amoro 0.5.0
  • Spark 3.2.3
  • Flink 1.15.4
  • Hadoop 3.3.4

在Kubernetes上搭建大数据基础环境

之前的文章有介绍过怎么在Kubernetes上快速搭建大数据基础环境,这里就不重复介绍了。安装完后,可以看到如下图各个基础服务都启动完成。
image.png

安装Amoro

Amoro是一个开源的数据湖管理系统。在安装Amoro之前,需要选择要安装的服务和节点,并准备好MySQL数据库。
选择安装服务 分配角色实例到指定节点安装 修改初始化配置,需要填写mysql信息,数据库得提前自行准备好 安装成功 可以用在Kubernetes集群上看到对应的pod

开启Iceberg支持

Iceberg是一个数据湖开源项目,用于管理大规模数据的表格式。要在CloudEon上启用Iceberg支持,需要配置相应的参数。
Spark开启Iceberg插件:
image.png
Flink开启Iceberg插件:
image.png

HDFS上创建Iceberg数据目录

为了使用Iceberg,需要在HDFS上创建Iceberg的数据目录。
连接hdfs-namenode的pod shell,在hdfs上创建Iceberg的数据目录/Iceberg/warehouse
image.png

Amoro上托管Iceberg

在Amoro中,您可以托管Iceberg表,实现数据湖表的管理和自优化。
打开Amoro服务页面,默认密码是admin/admin
image.png

配置catalog托管Iceberg。
这里需要上传cloudeon安装的hdfs服务的core-site.xml和hdfs-site.xml文件。
选择外部Catalog,metadata选择hadoop。
需要设置属性warehouse=/Iceberg/warehouse。
image.png

配置Optimizer Group,先要添加group 选择FlinkContainer,需要手动设置参数taskmanager.memory和jobmanager.memory 设置scale out,配置并行度,点击确定后,Amoro会启动一个Flink作业并提交到YARN上 等待一会,可以看到Optimizers识别到了YARN上的Flink作业也可以看到在YARN上看到Flink作业正在运行了 image.png

Flink生成流式数据写入Iceberg

使用Flink SQL,可以生成流式数据并将其写入Iceberg表。
连接Flink-history的pod shell,启动Flink standalone集群,生成一些测试数据。image.png
standalone集群启动成功后,启动sql-client。

sql-client.sh

打开后,输入脚本测试。

CREATE CATALOG iceberg_catalog WITH (
  'type'='iceberg',
  'catalog-type'='hadoop',
  'warehouse'='hdfs:///iceberg/warehouse'
);

CREATE TABLE datagen_v1 (
 id INT,
 user_id INT,
 city STRING,
 cost double,
 order_time TIMESTAMP
) WITH (
 'connector' = 'datagen',
 'rows-per-second'='5',
 'fields.id.kind'='sequence',
 'fields.id.start'='1',
 'fields.id.end'='1000',
 'fields.cost.min'='1',
 'fields.cost.max'='1000',
 'fields.city.length'='10'
);



CREATE TABLE `iceberg_catalog`.`default`.`order` (
    id BIGINT COMMENT 'unique id',
    user_id BIGINT,
    city STRING,
    cost DOUBLE,
   order_time TIMESTAMP,
   PRIMARY KEY (id) NOT ENFORCED
) WITH (
    'format-version'='2', 
    'write.upsert.enabled'='true',
    'write.metadata.metrics.default'='full'
);

SET execution.checkpointing.interval = '30s';

insert into `iceberg_catalog`.`default`.`order`  select * from datagen_v1;

这段脚本执行完后,会创建Iceberg表,并在hdfs上创建存储目录,Flink会不断插入测试数据到Iceberg表中。
image.png

Spark写入数据

Spark也可以用于写入数据到Iceberg表。
连接Spark-thriftserver的对外暴露的端口,使用DBeaver连接后进行操作

set `spark.sql.iceberg.handle-timestamp-without-timezone`=`true` ;


insert into `default`.`order` values(9990,1,'beijing',200,timestamp("2023-09-01 12:31:00")),(9991,2,'shanghai',322,timestamp("2023-09-01 12:32:00")),(9992,3,'beijing',100,timestamp("2023-09-01 12:33:00"));

select * from `default`.`order` WHERE id >9000;

UPDATE   `default`.`order` set cost= cost+1000  WHERE id >9000;

image.png

Amoro自动优化Iceberg表

Amoro能够自动优化Iceberg表的性能,包括文件存储优化。可以通过Amoro的界面查询Iceberg表的schema信息和文件信息,以查看优化效果。也可以通过Web终端查询Iceberg的数据。

打开Amoro,可以看到order表详情。
image.png
Amoro会自动优化表存储的文件
image.png
也可以通过Amoro的web终端进行查询Iceberg的表。

set `spark.sql.iceberg.handle-timestamp-without-timezone`=`true` ;
select * from `default`.`order`;

image.png
Amoro的web终端内置使用的是Sparksql,用的是local模式。
Amoro也支持web终端对接kyuubi,后面可以试试。

总结

通过使用CloudEon、Iceberg、Flink、Spark和Amoro,您可以轻松地在Kubernetes上构建一个强大的大数据基础环境。这个环境不仅支持流式数据生成和处理还有批处理,还能借助Amoro实现数据湖表的自动优化性能,为大数据应用提供了可靠的基础设施。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
18天前
|
存储 分布式计算 数据库
数据湖技术选型指南:Iceberg vs Delta Lake vs Paimon
对比当前最主流的三种开源湖格式:Iceberg、Delta Lake 和 Paimon,深入分析它们的差异,帮助大家更好地进行技术选型。
199 4
存储 数据管理 物联网
97 0
|
SQL 分布式计算 Apache
Dataphin x Iceberg 开箱即用的数据湖治理解决方案
Apache Iceberg作为新一代开源数据湖表格式,具备ACID事务、时间旅行和高效Schema演化等能力。Dataphin已完成与Iceberg的深度集成,通过全链路适配与性能优化,为企业提供开箱即用的数据湖治理方案,涵盖数据源支持、离线与实时数据集成、数据研发等核心模块,助力构建现代化数据架构。
171 0
|
3月前
|
存储 缓存 Apache
Apache Iceberg数据湖高级特性及性能调优
性能调优涵盖索引优化、排序策略与元数据管理。通过布隆过滤器、位图索引等提升查询效率,结合文件内/间排序优化I/O与压缩,辅以Z-Order实现多维数据聚集。同时,合理配置元数据缓存与清单合并,加速查询规划。适用于点查、全表扫描及高并发写入场景,显著提升系统性能与资源利用率。
|
存储 SQL 分布式计算
Apache Iceberg数据湖基础
Apache Iceberg 是新一代数据湖表格式,旨在解决传统数据湖(如 Hive)在事务性、并发控制和元数据管理上的不足。它支持 Spark、Flink、Trino 等多种计算引擎,提供 ACID 事务、模式演化、分区演化等核心特性,具备良好的云存储兼容性和高性能查询能力,适用于大规模结构化数据分析场景。
|
5月前
|
存储 缓存 分布式计算
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解读。 作者:杨关锁,北京镜舟科技研发工程师
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
|
存储 分布式计算 DataWorks
【阿里云云原生专栏】云原生下的数据湖建设:阿里云MaxCompute与DataWorks解决方案
【5月更文挑战第26天】在数字化时代,数据成为企业创新的关键。阿里云MaxCompute和DataWorks提供了一种构建高效、可扩展数据湖的解决方案。数据湖允许存储和分析大量多格式数据,具备高灵活性和扩展性。MaxCompute是PB级数据仓库服务,擅长结构化数据处理;DataWorks则是一站式大数据协同平台,支持数据集成、ETL和治理。通过DataWorks收集数据,MaxCompute存储和处理,企业可以实现高效的数据分析和挖掘,从而提升业务洞察和竞争力。
596 0
|
SQL 分布式计算 HIVE
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
608 0
|
存储 人工智能 运维
【云原生企业级数据湖:打破数据孤岛,优化存储成本】
【云原生企业级数据湖:打破数据孤岛,优化存储成本】 随着大数据时代的到来,企业对于数据的处理和存储需求日益增长。如何有效地存储和管理大量数据,同时降低运维成本,成为了企业面临的一大挑战。盛通教育的云原生企业级数据湖方案,正是为了解决这一问题而设计的。
279 1
|
存储 人工智能 Cloud Native
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
喜马拉雅和阿里云的合作,正走在整个互联网行业的最前沿,在新的数据底座之上,喜马拉雅的AI、大数据应用也将大放光彩。本文摘自《云栖战略参考》
47411 5
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景