构建云原生湖仓: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 构建云原生湖仓探索

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库服务类--Redis--未授权访问终端Getshell

免责声明:本文仅做技术交流与学习. 目录 前提条件: windows上开启redis服务: Linux上创建&开启redis服务: 操作: 1-连接靶机redis 2-写入webshell 3-访问后门 redis--->webshell Redis未授权访问漏洞复现与利用 - 知乎 (zhihu.com) 前提条件: 端口开放(6379) 目录…

[LeetCode]—— 226——翻转二叉树

1.题目 . - 力扣(LeetCode) 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入&#xff1a…

标题Selenium IDE 常见错误笔记

Selenium IDE 常见错误笔记 错误1:Failed:Exceeded waiting time for new window to appear 2000ms 这个错误通常出现在第一次运行时,有两个原因: Firefox阻止了弹出式窗口,在浏览器设置里允许这个操作即可。 有些网站设置了反…

modelsim波形高度异常,值为X

一、问题 波形高度异常,忽高忽低,正常波形高电平和低电平是统一高度的 timescale 1ns/1nsmodule key_test_tb();//parameter define parameter CLK_PERIOD 20; parameter CNT_MAX 25d25; //仅用于仿真,对应 500nsreg sys_clk; //周期 20ns reg d; wir…

Spark 中的分桶分化

Spark 中的分桶分化 Bucketing是 Spark 和 Hive 中用于优化任务性能的一种技术。在分桶桶(集群列)中确定数据分区并防止数据混洗。根据一个或多个分桶列的值,将数据分配给预定义数量的桶。 分桶有两个主要好处: 改进的查询性能&…

【存储】cosbench对象存储测试工具

目录 简略说明 原理 用法 详细说明 简介 用法 一 安装 二 简单验证 三 编写配置文件 四 提交配置文件下IO 五 测试结果查看 结果概览 查看详情 每秒钟的io情况查看 工作负载配置 参数配置(controller和driver) 查看错误的方法和错误记录 查看错误的方法 …

[BT]BUUCTF刷题第20天(4.22)

第20天 Web [GWCTF 2019]我有一个数据库 打开网站发现乱码信息(查看其他题解发现显示的是:我有一个数据库,但里面什么也没有~ 不信你找) 但也不是明显信息,通过dirsearch扫描得到robots.txt,然后在里面得…

123.Mit6.S081-实验1-Xv6 and Unix utilities

今天我们来进行Mit6.S081实验一的内容。 实验任务 一、启动xv6(难度:Easy) 获取实验室的xv6源代码并切换到util分支。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 Cloning into xv6-labs-2020... ... $ cd xv6-labs-2020 $ git checkout util Branch util …

xshell的基本命令

1. 创建虚拟环境: conda create -n 虚拟环境名称 python3.7 2. 激活进入虚拟环境 conda activate 虚拟环境名称 3. 退出虚拟环境 conda deactivate 4. 查看所有虚拟环境 conda env list 5. 卸载环境 conda remove -n 虚拟环境名称 --all 6. 执行py文件: python3.py文…

微软刚开源就删库的WizardLM-2:MT-Bench 榜单评测超越GPT-4,7B追平Qwen1.5-32B

前言 微软最近发布的WizardLM-2大型语言模型因其先进的技术规格和短暂的开源后突然撤回,引起了科技界的广泛关注。WizardLM-2包括三个不同规模的模型,分别是8x22B、70B和7B,均展现了在多语言处理、复杂对话、推理和代理任务上的卓越能力。 H…

如何用PHP语言实现远程语音播报

如何用PHP语言实现远程语音播报呢? 本文描述了使用PHP语言调用HTTP接口,实现语音播报。通过发送文本信息,来实现远程语音播报、语音提醒、语音警报等。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称1…

IDEA代码重构

重构 重构的目的: 提高代码的可读性、可维护性、可扩展性和性能。 重命名元素 重命名类 当我们进行重命名操作的时候可以看到第六行存在一个R(rename),点击后就会弹出所偶有引用,这样可以避免我们在修改后存在遗漏引用处未修改。 我们可以通过…

操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

「作者简介」:2022年北京冬奥会中国代表队,CSDN Top100,学习更多干货,请关注专栏《网络安全自学教程》 操作系统有4个安全目标,也就是说想要保证操作系统的安全,就必须实现这4个需求: 标识系统…

YoloV9改进策略:下采样改进|自研下采样模块(独家改进)|疯狂涨点|附结构图

文章目录 摘要自研下采样模块及其变种第一种改进方法 YoloV9官方测试结果改进方法测试结果总结 摘要 本文介绍我自研的下采样模块。本次改进的下采样模块是一种通用的改进方法,你可以用分类任务的主干网络中,也可以用在分割和超分的任务中。已经有粉丝用…

单细胞+RIP-seq项目文章| Cell ReportshnRNPU蛋白在小鼠精原干细胞池建立的关键作用

精原干细胞(SSCs)是负责精子发生的干细胞,具有自我更新和分化产生功能性精子的能力。SSCs的持续再生对于维持雄性生育力至关重要。然而,SSC池的发育起源尚不清楚。在哺乳动物中,SSCs源自名为 prospermatogonia&#xf…

端口被占用的解决方案汇总

端口被占用的解决方案汇总 【一】windows系统端口被占用【二】Linux系统端口被占用【三】Linux的ps命令查找(1)ps命令常用的方式有三种(2)ps -ef |grep 8080 【一】windows系统端口被占用 (1)键盘上按住Wi…

Ubuntu-18.04本地化部署Rustdesk服务器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置防火墙二、安装三大件1.下载三大件2.安装三大件 三、安装客户端1.下载客户端1.Windows2.Linux 四、配置客户端连接服务器五、总结 前言 如果你是想数据…

JS-47-Node.js06-fs模块-读写文件

Node.js内置的fs模块就是文件系统模块,负责读写文件。 和所有其它JavaScript模块不同的是,fs模块同时提供了异步和同步的方法。 一、回顾:异步方法VS同步方法 1-1、异步方法 因为JavaScript的单线程模型,执行IO操作时&#xff…

.gitignore语法及配置问题

语法及配置 前言.gitignore语法Git 忽略规则优先级gitignore规则不生效Java项目中常用的.gitignore文件c项目中常用的.gitignore注意事项 前言 在工程中,并不是所有文件都需要保存到版本库中,例如“target”目录及目录下的文件就可以忽略。在Git工作区的…

AI视频分析技术的常用开源模型及TSINGSEE青犀AI视频识别分析能力介绍

AI视频分析技术是指利用人工智能技术来对视频数据进行分析和处理的技术。开源模型是指可以免费获取和使用的代码模型,可以帮助开发人员快速构建和部署AI视频分析应用程序。 以下是一些业内常用的用于AI视频分析技术的开源模型: OpenCV:Open…