网站设计是不是会要用代码做,二手车辆交易网站如何做,wordpress百科网vip教程,微信公众平台登录页面现代数据环境需要一种新型的基础架构#xff0c;即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地#xff0c;它为您的所有数据需求提供了一个中心枢纽。然而#xff0c;构建和管理有效的数据湖可能很复杂。
这… 现代数据环境需要一种新型的基础架构即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地它为您的所有数据需求提供了一个中心枢纽。然而构建和管理有效的数据湖可能很复杂。
这篇博文深入探讨了三个强大的工具它们可以优化您当前的方法Apache Iceberg、Tabular 和 MinIO。以下步骤将引导您了解这些服务如何无缝组合以创建专为 AI/ML 工作负载优化的强大云原生数据湖架构。
什么是表格
Tabular 是由 Apache Iceberg 的原始创建者创建的数据平台。它旨在提供一个独立的通用存储平台可连接到任何计算层从而消除数据供应商锁定。此功能对现代数据堆栈至关重要它允许用户选择一流的计算和存储工具而不会被迫使用特定供应商的老化和/或不匹配的工具集。
在 MinIO 和 Iceberg 的架构中可以通过 Tabular 进行增强。表格可用于管理和查询存储在 MinIO 中的 Iceberg 数据从而允许以可扩展、高性能和云原生的方式存储和管理结构化数据。这些 Kubernetes 原生组件可以顺利地协同工作几乎没有摩擦并建立在彼此的能力之上可以大规模执行。
为什么选择 S3FileIO 而不是 Hadoop 的 file-io
此实现利用了 Iceberg 的 S3FileIO。S3FileIO 被认为比 Hadoop 的 file-io 更好原因有几个。其中一些我们已经在其他地方讨论过
1.针对云存储进行了优化Iceberg 的 S3FileIO 旨在与云原生存储配合使用。
2.改进的吞吐量和最小化的限制Iceberg 使用 ObjectStoreLocationProvider 在 MinIO 存储桶中的多个前缀之间分发文件这有助于最大限度地减少限制并最大限度地提高与 S3 相关的 IO 操作的吞吐量。
3.严格一致性Iceberg 已更新通过消除可能影响性能的冗余一致性检查充分利用严格的一致性
4.渐进式分片上传Iceberg 的 S3FileIO 实现了渐进式分片上传算法一旦每个分片准备就绪就会并行上传数据文件分段从而减少本地磁盘使用量并提高上传速度。
5.校验和验证Iceberg 允许对 S3 API 写入进行校验和验证以确保上传对象的完整性这可以通过设置相应的目录属性来启用。
6.自定义标签Iceberg 支持在使用 S3 API 执行写入和删除操作期间向对象添加自定义标签这对于成本跟踪和管理非常有用。
7.避免负缓存Iceberg 中的 FileIO 接口不需要像 Hadoop 兼容文件系统那样严格的保证这使得它能够避免负缓存否则可能会降低性能。
相比之下在S3FileIO之前使用的Hadoop的S3A文件系统没有为云存储提供相同级别的优化。综上所述不要用过去的东西来阻碍面向未来的数据湖基础设施。
Prerequisites 先决条件
在开始之前请确保您的系统满足以下要求
Docker Docker Compose
如果从头开始则可以使用适用于特定平台的 Docker Desktop 安装程序进行安装。这通常比单独下载 Docker 和 Docker Compose 更容易。通过运行以下命令验证是否安装了 Docker
docker-compose --versionGetting started 开始
首先克隆或复制 Tabular 的 git 存储库中的 YAML 文件。在本教程中您只需要 YAML。稍后可以随意浏览存储库的其余部分。
Breaking it Down 分解
提供的 YAML 文件是 Docker Compose 配置文件。它为多容器 Docker 应用程序定义了一组服务及其配置。在本例中有两个服务Spark-Iceberg 和 MinIO。让我们分解每个部分
1. 火花冰山服务
spark-iceberg:image: tabulario/spark-icebergcontainer_name: spark-icebergbuild: spark/networks:iceberg_net:depends_on:- rest- miniovolumes:- ./warehouse:/home/iceberg/warehouse- ./notebooks:/home/iceberg/notebooks/notebooksenvironment:- AWS_ACCESS_KEY_IDadmin- AWS_SECRET_ACCESS_KEYpassword- AWS_REGIONus-east-1ports:- 8888:8888- 8080:8080- 10000:10000- 10001:10001rest:image: tabulario/iceberg-restcontainer_name: iceberg-restnetworks:iceberg_net:ports:- 8181:8181environment:- AWS_ACCESS_KEY_IDadmin- AWS_SECRET_ACCESS_KEYpassword- AWS_REGIONus-east-1- CATALOG_WAREHOUSEs3://warehouse/- CATALOG_IO__IMPLorg.apache.iceberg.aws.s3.S3FileIO- CATALOG_S3_ENDPOINThttp://minio:9000image指定要用于 spark-iceberg 服务的 Docker 镜像。在本例中它使用 tabulario/spark-iceberglatest 图像。
depends_on指定 spark-iceberg 服务依赖于 rest 和 minio 服务。
container_name为容器分配特定名称火花冰山。
environment设置容器的环境变量包括 Spark 和 AWS 凭证。
volumes将本地目录./warehouse 和 ./notebooks作为卷装载到容器内。
ports将容器端口映射到主机端口用于访问Spark UI等服务。
2. Minio Service: 2. Minio服务
minio:image: minio/miniocontainer_name: minioenvironment:- MINIO_ROOT_USERadmin- MINIO_ROOT_PASSWORDpassword- MINIO_DOMAINminionetworks:iceberg_net:aliases:- warehouse.minioports:- 9001:9001- 9000:9000command: [server, /data, --console-address, :9001]image指定 MinIO 服务的 Docker 镜像。
container_name为容器分配特定名称 MinIO。
environment设置用于配置 MinIO 的环境变量包括 root 用户凭据。
ports将容器端口映射到主机端口用于访问 MinIO UI。
command指定使用特定参数启动 MinIO 服务器的命令。
MinIO 服务的另一个方面是 mc即 MinIO 的命令行工具。 mc:depends_on:- minioimage: minio/mccontainer_name: mcnetworks:iceberg_net:environment:- AWS_ACCESS_KEY_IDadmin- AWS_SECRET_ACCESS_KEYpassword- AWS_REGIONus-east-1entrypoint: /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/nulldepends_on指定 mc 服务依赖于 MinIO 服务。
image指定 mc 服务的 Docker 镜像。
container_name为容器分配特定名称 mc。
environment设置用于配置 MinIO 客户端的环境变量。
entrypoint定义容器的入口点命令包括 MinIO 客户端的设置步骤。 /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此命令序列实质上执行以下任务
从 MinIO 服务器中删除现有仓库目录及其内容。
创建名为 warehouse 的新存储桶。
将仓库存储桶的访问策略设置为 public。
此 Docker Compose 文件编排了一个多容器环境其中包含 Spark、PostgreSQL、MinIO 服务。它设置了一起运行服务所需的依赖项、环境变量和命令。这些服务协同工作使用 Spark 和 Iceberg 创建一个开发环境用于使用 MinIO 作为对象存储后端进行数据处理。
Starting Up 启动
在终端窗口中cd 进入存储库中的 tabular-spark-setup 目录并运行以下命令
docker-compose up使用凭据登录 MinIO at http://127.0.0.1:9001 admin:password 以查看已创建仓库存储桶。 所有容器都启动并运行后可以通过导航到 http://localhost:8888 运行其中一个示例笔记本并返回 MinIO http://127.0.0.1:9001 查看仓库中的数据填充情况。 构建现代数据湖
本教程介绍了如何使用 Iceberg、Tabular 和 MinIO 构建现代数据湖这仅仅是个开始。这个强大的三人组打开了通往无限世界的大门。借助这些工具您可以无缝集成和分析所有结构化和非结构化数据以发现隐藏的模式并推动数据驱动的决策从而推动创新。在生产中利用此架构的效率和灵活性来加快 AI/ML 计划并释放机器学习模型的真正潜力从而加速实现突破性发现。