构建云原生湖仓: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.hqwc.cn/news/640729.html

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

相关文章

Opensbi初始化分析:设备初始化

Opensbi初始化分析:设备初始化 设备初始化sbi_init函数coldinit,冷启动初始化sbi_scratch_init函数sbi_domain_init函数sbi_hsm_initsbi_platform_early_initsbi_hart_initsbi_console_initsbi_platform_irqchip_init中断控制器的初始化sbi_ipi_init函数…

C++奇迹之旅:从0开始实现日期时间计算器

文章目录 📝前言🌠 头文件Date.h🌉日期计算函数🌠前后置🌉前后置-- 🌠两对象日期相减🌉自定义流输入和输出 🌉 代码🌉 头文件Date.h🌠Date.cpp🌉 …

数据挖掘实验(Apriori,fpgrowth)

Apriori:这里做了个小优化,比如abcde和adcef自连接出的新项集abcdef,可以用abcde的位置和f的位置取交集,这样第n项集的计算可以用n-1项集的信息和数字本身的位置信息计算出来,只需要保存第n-1项集的位置信息就可以提速…

在Qt creator中使用多光标

2024年4月22日,周一下午 Qt Creator 支持多光标模式。 多光标模式允许你在同一时间在多个光标位置进行编辑,从而可以更快地进行一些重复性的编辑操作。 要启用多光标模式,请按住 Alt 键,并用鼠标左键在文本编辑器中选择多个光标…

标题Selenium IDE 常见错误笔记

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

Elasticsearch单机部署(Linux)

1. 准备环境 本文中Elasticsearch版本为7.12.0,JDK版本为1.8.0,Linux环境部署。 扩展: (1)查看Elasticsearch对应的常用的jdk版本如下:(详情可看官网的支持一览表) Elasticsearch a…

基于51单片机的电子秤LCD1602液晶显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子秤LCD显示 1. 主要功能:2. 讲解视频:3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子秤LCD显示( proteus仿真程序设计报告讲解视频) 仿真图proteus8.9及以上 程序编译器&#xf…

基于SSM+Vue的护工预约服务小程序和后台管理系统

1、系统演示视频(演示视频) 2、需要请联系

五种服务异步通信(MQ)-详解、代码案例

简介:本篇文章主要是介绍了常用的异步通信原理,主要是RabbitMQ技术 目录 1、初始MQ(异步通讯) 1.1 同步通讯 1.2 异步通讯 1.3 MQ常见框架 2、RabbitMQ快速入门 2.1 RabbitMQ概述和安装 2.2 常见消息模型 2.3 快速入门 3、…

解决“该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的”的方法

一、问题 安装插件出现时“该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的” 二、解决方法 1、把需要安装的第三方插件,后缀.crx 改成 .rar,然后解压,得到一个文件夹 2、再打开chrome://extensions/谷歌…

node.js如何实现留言板功能?

一、实现效果如下: 20240422_160404 二、前提配置: 配置:需要安装并且导入underscore模板引擎 安装:在控制台输入npm install underscore -save 文件目录配置: 1》在文件里建一个data文件夹,此文件夹下…

boss:整个卡尔曼滤波器的简单案例——估计机器人位置

⭐️ 卡尔曼滤波 卡尔曼滤波(Kalman Filtering)是一种用于状态估计的强大技术,常用于处理具有随机噪声的系统的状态估计问题。在目标跟踪等应用中,卡尔曼滤波常被用来预测目标的位置和速度等状态变量,并根据观测数据进…