构建云原生湖仓:Apache Iceberg与Amoro的结合实践

随着大数据技术的快速发展,企业对数据的处理和分析需求日益增长。传统的数据仓库已逐渐无法满足现代业务对数据多样性和实时性的要求,这促使了数据湖和数据仓库的融合,即湖仓一体架构的诞生。在云原生技术的推动下,构建云原生湖仓成为企业提升数据处理能力的重要途径。本文将探讨如何利用Apache Iceberg和Amoro在云原生环境下构建高效的湖仓一体解决方案。

Apache Iceberg与云原生

Apache Iceberg是一个开源的表格式,专为大规模分析型数据而设计。它提供了一种高性能的格式,用于存储大型数据集,并且能够与现有的大数据处理生态系统无缝集成。

Iceberg的主要特点包括:

  1. ACID事务:支持行级别的更新和删除操作,保证了数据操作的原子性、一致性、隔离性和持久性。
  2. Schema演化:允许用户在不重新写入数据的情况下更改表结构。
  3. 隐藏分区:支持用户定义的分区,但无需在查询时显式指定分区字段。
  4. 矢量化读取:利用现代硬件优化查询性能,通过批量操作减少CPU的使用。
  5. 格式无关性:不依赖于特定的存储格式,支持Parquet、ORC等。

云原生概念

云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用了云计算的优势,如弹性、可扩展性、高可用性等。云原生技术通常包括容器、微服务架构、持续集成和持续部署(CI/CD)以及编排工具(如Kubernetes)。

Apache Iceberg的云原生特性

  1. 去中心化元数据:Iceberg使用去中心化的元数据存储,而不是依赖于如Hive Metastore这样的集中式元数据仓库。这使得Iceberg能够更好地适应云环境,因为云服务通常提供高可用性和可扩展性的数据存储解决方案。

  2. 存储无关性:Iceberg不依赖于特定的存储系统,如Hadoop的HDFS。它可以直接在云存储服务(如Amazon S3、Google Cloud Storage或Azure Blob Storage)上运行,这为云原生应用提供了灵活性。

  3. 开放的Catalog接口:Iceberg定义了开放的Catalog接口,允许它轻松地与云服务提供商的元数据服务集成,如AWS Glue Catalog或Google BigQuery。

  4. REST Catalog API:Iceberg提供了RESTful API来访问元数据,这使得它可以通过标准的HTTP请求与云服务进行交互,简化了云上的集成和操作。

  5. 弹性扩展:Iceberg的设计允许它在云环境中水平扩展,以处理不断增长的数据量和查询负载,这与云平台的弹性扩展特性相契合。

Apache Iceberg在云原生实践中的应用

在云原生实践中,Apache Iceberg可以:

  1. 简化迁移过程:允许用户将数据湖迁移到云端,而无需对现有的数据处理流程进行重大更改。
  2. 提高资源利用率:在云环境中,Iceberg可以更好地利用云平台的自动扩展功能,以适应不同的工作负载。
  3. 降低运维成本:由于Iceberg的去中心化特性,它减少了对复杂运维的需求,使得数据管理更加简单。
  4. 提升性能:利用云平台的高性能存储和计算资源,Iceberg可以提供更快的数据查询和分析性能。

Amoro与云原生湖仓管理

Amoro是一个开源的湖仓一体管理系统,它定位于构建在开放湖表格式如Apache Iceberg之上,提供了一系列可插拔的组件和服务,以实现数据湖的高效管理和优化。Amoro的设计哲学是提供一个与基础设施无关的、标准化的湖仓一体化解决方案,旨在简化云上数据湖的管理和运维。

Amoro的核心功能

  1. Catalog Services:Amoro提供了内部(Internal)和外部(External)两种Catalog服务。Internal Catalog符合Iceberg Rest Catalog API接口,可以直接作为云上的元数据中心使用。同时,Amoro也支持与外部Catalog服务对接,如Hive Metastore,以支持更广泛的大数据生态。

  2. Self-Optimizing:Amoro的自优化功能是其一大亮点。在流计算场景下,数据湖表的治理尤为关键。Amoro能够自动监测和优化数据湖表中的小文件问题,这些小文件可能会影响查询性能,甚至导致表不可用。Amoro通过持续的文件治理,提升了数据湖表的性能。

  3. 资源管理:Amoro通过Optimizer Group进行资源隔离和共享,使得不同表之间的计算资源可以相互独立,互不影响,同时在Group内部通过Quota进行资源比例分配。

  4. 计算集群支持:Amoro支持多种计算集群,包括本地(Local)、Flink以及云原生的Kubernetes环境,提供了External Container机制,允许用户自定义计算集群类型。

  5. 可视化管理平台:Amoro提供了一个Web管理界面,使得管理员可以轻松地管理数据表、资源和优化任务。

Amoro在云原生湖仓管理中的作用

  1. 简化数据管理:Amoro通过提供统一的元数据管理和优化机制,简化了数据湖的管理复杂性。

  2. 提升查询性能:通过自动优化数据湖表中的小文件,Amoro显著提升了数据查询的性能。

  3. 资源优化:Amoro的资源管理功能确保了计算资源的合理分配和使用,避免了资源浪费。

  4. 云服务对接:Amoro能够与云服务提供商的元数据服务和对象存储服务直接对接,充分利用云服务的优势。

  5. 计算资源弹性:在云原生环境下,Amoro可以利用计算集群的弹性能力,按需分配和调整资源。

Amoro的未来规划

Amoro的未来发展将集中在以下几个方面:

  1. 支持更多数据湖格式:除了现有的Apache Iceberg,Amoro计划支持更多的数据湖格式,如Paimon、Hudi等,以满足不同用户的需求。

  2. 动态优化调度:Amoro将提供更灵活的优化调度能力,支持基于不同优先级的优化任务调度。

  3. 标准化命令工具:Amoro计划提供一套标准化的命令工具,以简化数据湖的运维指令和数据访问。

  4. 统一权限模型:Amoro将适配更多的权限系统,如Ranger或云服务商的权限系统,提供统一的元数据和运维指令接口。

Amoro作为一个云原生湖仓管理系统,其设计和功能都是为了更好地在云环境中管理和优化数据湖。通过Amoro,企业可以更高效地处理和分析大规模数据集,同时降低运维成本和复杂性。随着Amoro的不断发展,它有望成为云原生数据湖管理的重要工具。

Apache Iceberg + Amoro云原生实践

实践案例1:网易出海业务上云

网易的出海业务面临着合规性要求,需要将其数据平台迁移到AWS云平台上。原先的架构是基于Hadoop和Hive构建的,计算依赖于Hive SQL,使用Yarn作为计算集群,数据存储在HDFS上,而HMS(Hive Management Service)作为元数据中心。

改造目标

改造的目标是将现有的Hadoop+Hive架构迁移到云上,同时保持系统的高性能和可扩展性。此外,还需要确保数据的合规性,并减少对Hadoop生态系统的依赖,以降低运维成本。

改造过程

  1. 任务迁移:将原有的Hive SQL任务迁移到Spark SQL任务。Spark作为大数据处理框架,具有良好的性能和对云服务的兼容性。

  2. 计算集群迁移:将计算集群从Yarn迁移到AWS EKS(Elastic Kubernetes Service)。EKS提供了基于Kubernetes的容器编排服务,能够实现计算资源的弹性伸缩。

  3. 存储适配:在S3上搭建Alluxio集群以适配HDFS接口。Alluxio是一个高性能的数据缓存系统,它可以作为HDFS的缓存层,提高数据访问速度。

  4. 元数据中心:使用HMS作为元数据中心,同时引入Apache Iceberg表,利用其高性能和云原生特性。

  5. 数据优化:使用Amoro负责对Iceberg湖表进行持续优化。Amoro的引入,使得数据湖表的治理更加自动化和高效。

  6. 计算集群适配:通过Flink Optimizer适配K8s集群,进一步提升了计算性能和资源利用率。

改造成果

  1. 性能提升:通过改造,网易的出海业务实现了计算性能的提升,尤其是在数据查询和实时处理方面。

  2. 成本节约:利用云服务的弹性和按需付费特性,减少了资源浪费,降低了运维成本。

  3. 系统可扩展性:新的架构具有良好的可扩展性,能够根据业务需求快速调整资源。

  4. 数据治理优化:Amoro的引入,使得数据湖的治理更加自动化,提高了数据的可用性和查询性能。

  5. 合规性保障:通过上云,网易的出海业务满足了合规性要求,同时利用云服务提供的安全特性,增强了数据的安全性。

网易的出海业务上云实践案例展示了如何将传统的Hadoop+Hive架构成功迁移到云原生架构,并利用Apache Iceberg和Amoro等工具,实现了性能提升、成本节约和系统可扩展性。这一案例为其他企业在进行类似迁移时提供了宝贵的经验。随着云原生技术的不断发展,预计将有更多的企业采用类似的架构来提升其数据处理和分析能力。

实践案例2:AWS S3 + Iceberg湖仓一体

随着云服务的普及和大数据技术的发展,越来越多的企业开始探索在云上构建湖仓一体的解决方案。案例2中的外企希望利用AWS云服务构建一个高性能、高可用的湖仓一体平台,以支持其数据分析和处理需求。

架构设计

该外企选择了AWS S3作为数据湖的存储基础,结合Apache Iceberg作为数据管理和表格式的标准。AWS S3提供了高可用性和耐用性,同时具有弹性的扩展能力,非常适合作为数据湖的存储解决方案。Apache Iceberg则提供了高性能的数据读写能力,以及与云服务的兼容性。

核心组件

  1. AWS S3:作为对象存储服务,用于存储所有的数据湖文件。

  2. Apache Iceberg:作为数据表格式,支持ACID事务、Schema演化和隐藏分区等特性。

  3. AWS Glue:作为元数据中心,管理数据目录、元数据和数据质量管理。

  4. AWS EMR:作为大数据处理和分析平台,提供了对Hadoop和Spark的支持。

  5. AWS EKS:作为计算集群,提供了基于Kubernetes的容器编排服务。

  6. Amoro:作为湖仓管理系统,负责数据治理和优化。

实施步骤

  1. 数据湖构建:在AWS S3上构建数据湖,利用其高可用性和扩展性存储大规模数据集。

  2. 元数据管理:使用AWS Glue作为元数据中心,管理数据湖的元数据。

  3. 计算集群搭建:在AWS EKS上搭建计算集群,为数据处理和分析提供计算资源。

  4. 数据处理:利用AWS EMR进行数据的批量处理和分析。

  5. 湖仓管理:引入Amoro系统,对Iceberg表进行管理和优化,提升数据查询性能。

  6. 优化与治理:Amoro的Self-Optimizing功能自动发现并优化数据湖表中的小文件问题,提升查询效率。

改造成果

  1. 性能提升:通过利用AWS S3和Iceberg,实现了数据存储和查询的性能提升。

  2. 成本效益:AWS S3的按需付费模式和EKS的弹性扩展能力,帮助企业降低了总体拥有成本。

  3. 系统可扩展性:基于云服务的架构设计,使得整个系统具有良好的可扩展性,能够根据业务需求快速调整资源。

  4. 数据治理:Amoro的引入,使得数据湖的治理更加自动化和高效,提升了数据的可用性和查询性能。

  5. 运维简化:减少了对Hadoop生态系统的依赖,简化了运维工作。

案例2中的外企成功地在AWS云平台上构建了一个高性能的湖仓一体平台。通过结合AWS S3、Apache Iceberg、AWS Glue、AWS EMR、AWS EKS和Amoro,实现了数据存储、处理、管理和优化的全流程解决方案。这一实践案例证明了云原生湖仓架构在提升数据处理能力、降低成本和简化运维方面的优势,为其他企业提供了宝贵的参考和借鉴。随着云服务和大数据技术的不断进步,预计会有更多企业采用类似的云原生湖仓架构来提升其数据管理和分析能力。

实践案例3:Amoro AMS元数据中心

在云原生数据湖的构建中,元数据管理是一个关键的组成部分。元数据中心不仅需要存储和管理数据湖的元数据,还需要支持数据的治理和优化。实践案例3中的企业选择使用Amoro AMS(Amoro Management Service)作为其元数据中心,以构建一个高效、可管理的数据湖生态系统。

架构设计

该案例采用了以下核心组件来构建云原生湖仓一体平台:

  1. AWS S3:作为数据湖的存储层,提供数据的持久化存储。
  2. Apache Iceberg:作为数据湖的表格式,支持高性能的数据读写操作。
  3. AWS EKS:作为计算平台,提供基于Kubernetes的容器编排服务,以支持弹性的计算资源。
  4. Amoro AMS:作为元数据中心,提供元数据管理和湖仓优化服务。

实施步骤

  1. 搭建数据湖:在AWS S3上搭建数据湖,利用其高可用性和可扩展性存储数据。

  2. 集成Iceberg:在数据湖中创建和管理Iceberg表,利用其高效的表格式支持数据的快速读写。

  3. 计算集群部署:在AWS EKS上部署计算集群,以支持数据处理和分析作业的运行。

  4. 元数据中心构建:使用Amoro AMS作为元数据中心,集中管理数据湖的元数据。

  5. 数据治理与优化:利用Amoro AMS的Self-Optimizing功能,自动优化数据湖表,提升查询性能。

  6. 接口对接:通过Iceberg Rest Catalog与Amoro AMS对接,实现元数据的统一管理和优化任务的调度。

改造成果

  1. 统一的元数据管理:Amoro AMS作为元数据中心,实现了对数据湖中所有Iceberg表的元数据统一管理。

  2. 自动化的数据优化:Amoro AMS的自优化功能减少了人工干预,自动化地提升了数据湖表的性能。

  3. 计算资源的高效利用:AWS EKS提供的计算资源可以根据实际需求动态调整,提高了资源利用率。

  4. 简化的运维管理:Amoro AMS的可视化管理平台简化了数据湖的运维管理,降低了运维复杂性。

  5. 成本效益:通过云服务的弹性和按需付费特性,企业能够更有效地控制成本。

实践案例3展示了如何使用Amoro AMS作为元数据中心来构建和管理云原生数据湖。通过Amoro AMS,企业能够实现对数据湖的高效管理,包括元数据的统一管理、数据的自动化优化以及计算资源的合理分配。这一案例的成功实施证明了Amoro AMS在云原生湖仓管理中的有效性,为其他企业提供了一种可行的参考方案。随着云原生技术的不断成熟,预计Amoro AMS将在未来的云原生数据湖管理中发挥更大的作用。

Amoro未来发展规划

Amoro的未来发展规划集中在几个关键领域,以确保其在云原生数据湖管理中的领先地位,并满足用户日益增长的需求。

Amoro计划扩展对更多数据湖格式的支持。除了当前兼容的Apache Iceberg,Amoro将增加对Paimon、Hudi等其他数据湖格式的支持。这将使用户能够在不同的数据湖格式之间灵活选择,根据业务需求和性能要求选择最合适的格式。

并且,Amoro将提供动态优化调度的能力。目前,Amoro已经提供了全量优化(Full optimizing)的功能,未来将支持基于优先级的优化调度,允许用户根据业务逻辑和数据访问模式,定义优化任务的执行顺序。这将使得数据优化更加智能和高效。

此外,Amoro将提供标准的命令工具,以便在数据湖上提供标准化的数据访问方式。这些工具将简化数据湖的运维指令和数据访问,使得用户可以更加方便地管理和查询数据。

Amoro将继续优化其核心功能,包括Catalog Services和Self-Optimizing,以提供更好的性能和用户体验。Amoro的可视化管理平台也将得到进一步的增强,提供更丰富的数据管理和优化功能。Amoro旨在成为一个更加强大、灵活且用户友好的云原生湖仓管理工具,帮助企业更好地管理和分析大规模数据集,同时降低运维成本和复杂性。随着云原生技术的不断进步,Amoro的这些规划将有望在不久的将来实现,为数据湖用户带来更大的价值。

参考链接:

  1. Amoro GitHub 仓库:https://github.com/amorosystem

  2. AWS S3 服务介绍:Cloud Object Storage - Amazon S3 - AWS 

  3. AWS Glue 数据目录:ETL Service - Serverless Data Integration - AWS Glue - AWS 

  4. AWS EMR 弹性MapReduce:Big Data Platform - Amazon EMR - AWS 

  5. AWS EKS Kubernetes 服务:Amazon EKS Customers | Managed Kubernetes Service | Amazon Web Services 

  6. 云原生湖仓架构实践:https://developer.aliyun.com/article/782452 

  7. 网易Apache Iceberg + Amoro 构建云原生湖仓探索:网易Apache Iceberg +Amoro 构建云原生湖仓探索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWD线下攻防万字最完整战术(记第一届“长城杯”半决赛战术)

目录 准备阶段 1.登录比赛平台(获取资产) 查看账号账号修改 服务器SSH口令mysqlWEB服务口令(后台密码)数据库后台管理员密码 账号用户检查 2.dump源码(方便应急响应恢复靶机) 网站源码备份 压缩文件解压文件备份到服务器本地上传…

【原创】springboot+mysql疫苗预约管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

Linux部署Coturn以及关于打洞的思考

目录 Coturn介绍部署架构图 2.1 局域网——无NAT映射 2.2 NAT网Corturn安装步骤验证 4.1 局域网——无NAT映射 4.2 NAT网 4.2.1 Cywin安装步骤 4.2.2 Coturn安装步骤 4.2.3 验证引言 下文部署架构图为Corturn为解决互联网NAT环境下“找朋友”的部署架构,也是Coturn发挥其价值…

玩转 AIGC!使用 SD-WebUI 实现从文本到图像转换

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 基于大家…

javaScript常用知识点

1. this指向问题 在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。 this指向的对象称为函数的上下文对象context;this的指向取决于函数被调用方式this的指向不是函数…

【更新】cyのMemo(20240422~)

序言 胡哥首马在淮安325完赛,他的本硕都在淮安度过,七年的跑步生涯画上句号,真的是很圆满。七年,从180斤瘦到120斤,历经种种,胡哥理解的跑步,不是快,而是稳,他在比赛中从…

力扣HOT100 - 226. 翻转二叉树

解题思路: class Solution {public TreeNode invertTree(TreeNode root) {if (root null) return null;TreeNode left invertTree(root.left);TreeNode right invertTree(root.right);root.left right;root.right left;return root;} }

《ElementUI 基础知识》png 图片扩展 icon用法

前言 UI 设计给的切图是 .png 格式。但想与 Element UI icon 用法类似,方案如下。 实现 步骤一 准备图片 步骤二 新建文件,可使用 CSS 预处理语言 styl 或 scss。 stylus 方式 文件 icon.styl /* 定义一个混合 */ cfgIcon(w, h) {display: inlin…

如何判别三角形和求10 个整数中最大值?

分享每日小题,不断进步,今天的你也要加油哦!接下来请看题------> 一、已知三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形 …

DAPP的商业模型创新: 探索可持续盈利路径

去中心化应用(Decentralized Applications,DAPPs)作为区块链技术的重要应用之一,在近年来蓬勃发展。然而,随着市场竞争的加剧和用户需求的不断变化,DAPP开发者们面临着寻找可持续盈利路径的挑战。本文将探讨…

注意libaudioProcess.so和libdevice.a是不一样的,一个是动态链接,一个是静态

libaudioProcess.so是动态链接,修改需要改根文件系统,需要bsp重新配置 libdevice.a是静态链接,直接替换就行 动态链接文件修改 然后执行fw_update.sh

最优控制理论笔记 - 03无约束条件下的泛函极值问题

一、始端时刻t0和终端时刻tf时刻都给定的泛函极值问题 其中式子2.8为欧拉方程,式子2.9为横截条件。 上述推导的重要作用在于将求泛函的极值问题转化为求解欧拉方程在满足边界条件和横截条件下的定解问题。 1. 固定始端和终端 2. 自由始端和自由终端 3. 自由始端和…

一文读懂链游!探索链游的前世今生,区块链与游戏结合的新兴趋势

区块链技术的崛起给游戏行业带来了前所未有的变革,而链游(Blockchain Games)正是这一变革的产物。本文将带您一览链游的前世今生,探索区块链与游戏结合的新兴趋势。 1. 链游的起源 链游,顾名思义,是指利用…

恶心透了的小日子,害人终害己,国货呼吁关注抵制日本核废水排放

​|日本排放核废水 日本政府决定将福岛第一核电站的核污染水经过处理后排放入海,这一决定引发了多方面的担忧和反对,特别是在周边国家,包括中国和韩国。关于日本排放核污染水这一新闻事件,我们必须首先认识到,核能利用…

【MySQL 数据宝典】【磁盘结构】- 002 数据字典

一、数据字典 ( Data Dictionary ) 1.1 背景介绍 我们平时使用 INSERT 语句向表中插入的那些记录称之为用户数据,MySQL只是作为一个软件来为我们来保管这 些数据,提供方便的增删改查接口而已。但是每当我们向一个表中插入一条记录的时候,MyS…

前端学习之DOM编程案例:点名案例和秒表案例

点名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点名案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container">…

H5 台球猜位置小游戏

刷到抖音有人这样玩&#xff0c;就写了一个这样的小游戏练习一下H5的知识点。 小游戏预览 w(&#xff9f;Д&#xff9f;)w 不开挂越急越完成不了&#xff0c;&#x1f47f;确认15次也没全对… 知识点 获取坐标位置的DOM元素&#xff0c;感觉应该是新的吧&#xff0c;以前的…

使用Python进行容器编排Docker Compose与Kubernetes的比较

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着容器化技术的普及&#xff0c;容器编排成为了管理和部署容器化应用程序的重要环节。在容…

[C++][算法基础]求约数(试除法)

给定 n 个正整数 &#xff0c;对于每个整数 &#xff0c;请你按照从小到大的顺序输出它的所有约数。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一个整数 。 输出格式 输出共 n 行&#xff0c;其中第 i 行输出第 i 个整数 的所有约数。 数据范围 1≤…

上传文件到HDFS

1.创建文件夹 hdfs -dfs -mkdir -p /opt/mydoc 2.查看创建的文件夹 hdfs -dfs -ls /opt 注意改文件夹是创建在hdfs中的&#xff0c;不是本地&#xff0c;查看本地/opt&#xff0c;并没有该文件夹。 3.上传文件 hdfs dfs -put -f file:///usr/local/testspark.txt hdfs://m…