paint-brush
Создание эффективных современных архитектур данных с помощью Iceberg, Tabular и MinIOк@minio
7,928 чтения
7,928 чтения

Создание эффективных современных архитектур данных с помощью Iceberg, Tabular и MinIO

к MinIO7m2024/04/17
Read on Terminal Reader
Read this story w/o Javascript

Слишком долго; Читать

Современные озера данных представляют собой центральный узел для всех ваших потребностей в данных. Однако создание и управление эффективным озером данных может оказаться сложной задачей.
featured image - Создание эффективных современных архитектур данных с помощью Iceberg, Tabular и MinIO
MinIO HackerNoon profile picture
0-item
1-item


Современный ландшафт данных требует нового поколения инфраструктуры – такой, которая легко интегрирует структурированные и неструктурированные данные, легко масштабируется и обеспечивает эффективные рабочие нагрузки AI/ML. Это где современные озера данных приходите, предоставляя центральный узел для всех ваших потребностей в данных. Однако создание и управление эффективным озером данных может оказаться сложной задачей.


В этом сообщении блога подробно рассматриваются три мощных инструмента, которые могут оптимизировать ваш текущий подход: Апач Айсберг , Табличный, и МинИО. Приведенные ниже шаги покажут вам, как эти сервисы легко объединяются для создания надежной облачной архитектуры озера данных, специально оптимизированной для рабочих нагрузок AI/ML.

Что такое табличный?

Tabular — это платформа данных, созданная первоначальными создателями Apache Iceberg. Он предназначен для предоставления независимой универсальной платформы хранения данных, которая подключается к любому вычислительному уровню, устраняя привязку к поставщику данных. Эта функция имеет решающее значение для современного стека данных, она позволяет пользователям выбирать лучшие в своем классе инструменты вычислений и хранения, не принуждая их использовать устаревший или несоответствующий набор инструментов конкретного поставщика.


В архитектура MinIO и Iceberg и может быть улучшена с помощью Tabular. Tabular можно использовать для управления и запроса данных Iceberg, хранящихся в MinIO, что позволяет хранить структурированные данные и управлять ими масштабируемым, высокопроизводительным и облачным способом. Эти собственные компоненты Kubernetes работают вместе плавно, с минимальными трениями и опираются на возможности друг друга для работы в масштабе.

Почему S3FileIO вместо file-io Hadoop?

Эта реализация использует S3FileIO компании Iceberg. S3FileIO считается лучше, чем file-io Hadoop по нескольким причинам. Некоторые из них мы уже обсуждали в другом месте :


  1. Оптимизирован для облачного хранилища : S3FileIO от Iceberg предназначен для работы с облачным хранилищем.


  2. Улучшенная пропускная способность и минимизированное регулирование: Iceberg использует ObjectStoreLocationProvider распределять файлы по нескольким префиксам в корзине MinIO, что помогает минимизировать регулирование и максимизировать пропускную способность для операций ввода-вывода, связанных с S3.


  3. Строгое соответствие: Айсберг был обновлено чтобы в полной мере использовать строгую согласованность, исключив избыточные проверки согласованности, которые могут повлиять на производительность.


  4. Прогрессивная многочастная загрузка: S3FileIO компании Iceberg реализует прогрессивная многочастная загрузка Алгоритм, который загружает части файлов данных параллельно, как только каждая часть будет готова, сокращая использование локального диска и увеличивая скорость загрузки.


  5. Проверка контрольной суммы: Iceberg позволяет проверки контрольной суммы для S3 API записывает данные для обеспечения целостности загружаемых объектов, что можно включить, установив соответствующее свойство каталога.


  6. Пользовательские теги: Iceberg поддерживает добавление пользовательские теги к объектам во время операций записи и удаления с помощью S3 API, что может быть полезно для отслеживания и управления затратами.


  7. Предотвращение негативного кэширования. Интерфейс FileIO в Iceberg не требует таких строгих гарантий, как файловая система, совместимая с Hadoop, что позволяет ему избегать негативного кэширования в противном случае это может привести к снижению производительности.


Напротив, файловая система S3A Hadoop, которая использовалась до S3FileIO, не обеспечивает такой же уровень оптимизации для облачного хранилища. Все это для того, чтобы сказать: не обременяйте свою перспективную инфраструктуру озера данных атрибутами прошлого.

Предварительные условия

Прежде чем начать, убедитесь, что ваша система соответствует следующим требованиям:

Если вы начинаете с нуля, вы можете установить оба, используя Докер Рабочий стол установщик для вашей конкретной платформы. Зачастую это проще, чем загружать Docker и Docker Compose по отдельности. Убедитесь, что Docker установлен, выполнив следующую команду:


 docker-compose --version


Начиная

Чтобы начать, клонируйте или скопируйте файл YAML в Tabular. Git-репозиторий . Для этого урока вам просто понадобится YAML. Не стесняйтесь изучить остальную часть репозитория позже.


Разрушение этого

Предоставленный файл YAML представляет собой файл конфигурации Docker Compose. Он определяет набор сервисов и их конфигурации для многоконтейнерного приложения Docker. В данном случае есть два сервиса: Spark-Iceberg и MinIO. Давайте разберем каждый раздел:


1. Сервис «Искра-Айсберг»:


 spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000



image: указывает образ Docker, который будет использоваться для службы spark-iceberg. В данном случае используется изображение tabulario/spark-iceberg:latest.

depend_on: указывает, что служба искры-айсберга зависит от остальных служб и служб minio.

имя_контейнера: присваивает контейнеру определенное имя (искра-айсберг).

среда: устанавливает переменные среды для контейнера, включая учетные данные Spark и AWS.

тома: монтирует локальные каталоги (./warehouse и ./notebooks) как тома внутри контейнера.

порты: сопоставляет порты контейнера с портами хоста для доступа к пользовательскому интерфейсу Spark и другим службам.


2. Минио Сервис:


 minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]


image: указывает образ Docker для службы MinIO.

имя_контейнера: присваивает контейнеру определенное имя (MinIO).

среда: устанавливает переменные среды для настройки MinIO, включая учетные данные пользователя root.

порты: сопоставляет порты контейнера с портами хоста для доступа к пользовательскому интерфейсу MinIO.

команда: указывает команду для запуска сервера MinIO с определенными параметрами.


Еще одним аспектом сервиса MinIO является MC , инструмент командной строки MinIO.


 mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /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/null "


depend_on: указывает, что служба mc зависит от службы MinIO.

image: указывает образ Docker для службы mc.

имя_контейнера: присваивает контейнеру определенное имя (mc).

среда: устанавливает переменные среды для настройки клиента MinIO.

точка входа: определяет команду точки входа для контейнера, включая шаги настройки для клиента 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.

  • Создает новую корзину с именем склад.

  • Устанавливает общедоступную политику доступа к сегменту хранилища.


Этот файл Docker Compose управляет многоконтейнерной средой со службами для Spark, PostgreSQL, MinIO. Он устанавливает зависимости, переменные среды и команды, необходимые для совместной работы служб. Службы работают в тандеме для создания среды разработки для обработки данных с использованием Spark и Iceberg с MinIO в качестве серверной части объектного хранилища.

Запуск

В окне терминала перейдите в каталог tabular-spark-setup в репозитории и выполните следующую команду:


 docker-compose up


Войдите в MinIO по адресу http://127.0.0.1:9001 с учетными данными admin:password чтобы убедиться, что сегмент хранилища создан.



Как только все контейнеры будут запущены, вы сможете получить доступ к серверу Jupyter Notebook, перейдя по адресу http://localhost:8888



Запустите один из примеров блокнотов и вернитесь в MinIO по адресу http://127.0.0.1:9001 , чтобы увидеть, что ваше хранилище заполнено данными.


Создание современного озера данных

Это руководство по созданию современного озера данных с помощью Iceberg, Tabular и MinIO — это только начало. Это мощное трио открывает двери в мир возможностей. С помощью этих инструментов вы можете легко интегрировать и анализировать все свои данные, как структурированные, так и неструктурированные, чтобы выявить скрытые закономерности и принимать решения на основе данных, которые способствуют инновациям. Используйте эффективность и гибкость этой архитектуры в производстве, чтобы ускорить ваши инициативы в области искусственного интеллекта и машинного обучения и раскрыть истинный потенциал ваших моделей машинного обучения, ускоряя ваш путь к революционным открытиям. Свяжитесь с нами по адресу привет@min.io или на нашем Слабый канал, если у вас возникнут вопросы во время сборки.