paint-brush
Тайны озера данных раскрыты: Несси, Дремио и MinIO вызывают фурорк@minio
8,080 чтения
8,080 чтения

Тайны озера данных раскрыты: Несси, Дремио и MinIO вызывают фурор

к MinIO6m2024/02/22
Read on Terminal Reader

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

В этой статье представлено пошаговое руководство, демонстрирующее, как Nessie, Dremio и MinIO работают вместе для повышения качества данных и улучшения совместной работы в рабочих процессах обработки данных.
featured image - Тайны озера данных раскрыты: Несси, Дремио и MinIO вызывают фурор
MinIO HackerNoon profile picture


Многие из нас внесли изменения в данные в соответствии с требованиями, которые впоследствии изменились. К тому времени, когда мы это осознаем, откат становится невозможным. Изменение — это не просто константа; это важная часть управления данными, требующая сложного подхода. Введите Git-подобную функциональность каталога данных Dremio Nessie.


Подобно тому, как Git стал основополагающим для разработки программного обеспечения, инженерам по работе с данными нужны аналогичные инструменты для параллельной работы, сравнения версий данных, внесения изменений в производство и отката данных при необходимости. Nessie предоставляет инженерам данных систему контроля версий, подобную Git, для управления версиями данных, ветвями, слияниями и фиксациями. Это может быть очень полезно, когда несколько инженеров данных одновременно работают и преобразовывают данные. Nessie позволяет каждому инженеру работать в отдельных ветках, сохраняя при этом единый источник истины в виде основной ветки. Эта функциональность позволяет командам разработчиков данных совместно поддерживать качество данных в условиях неослабевающих изменений.


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

Понимание основ: рабочие нагрузки Nessie

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


  • Ветки. Как и в Git, ветки в Nessie позволяют одновременно работать над различными задачами по обработке данных. Например, у вас может быть филиал по разработке функций, очистке и преобразованию данных. Каждая ветвь может иметь свой собственный набор изменений данных.


  • Коммиты: в Nessie коммит представляет собой снимок данных в определенный момент времени. Когда вы вносите изменения в свои данные, вы создаете новый коммит, который записывает эти изменения. Коммиты привязаны к конкретной ветке. Когда вам нужно вернуть данные в стабильное или заведомо хорошее состояние, Nessie позволяет легко выбрать конкретную фиксацию и вернуться к этой версии данных. Это обеспечивает качество и согласованность данных.


  • Слияния : Nessie позволяет объединять изменения из одной ветки в другую. Это похоже на объединение изменений кода в Git. При объединении ветки изменения данных, внесенные в эту ветку, становятся частью целевой ветки.

Компоненты



Dremio — это механизм распределенной аналитики, работающий как платформа с открытым исходным кодом и предлагающий интуитивно понятный интерфейс самообслуживания для исследования, преобразования и совместной работы данных. Его конструкция основана на Апачская стрела, высокоскоростной формат столбчатой памяти.


Мы уже рассмотрели, как развернуть Dremio с помощью Kubernetes, а также как запрос таблиц Iceberg на MinIO с помощью Dremio . Для получения дополнительной информации о Дремио обратитесь Ресурсы Дремио .


MinIO — это высокопроизводительное объектное хранилище. Известный своим исключительным скорость и масштабируемость MinIO служит ключевым компонентом в создании и обслуживании современной инфраструктуры озера данных. MinIO дает архитекторам возможность эффективно управлять и хранить огромные объемы данных локально, на «голом железе», на периферии или в любом общедоступном облаке.


Апач Айсберг — это формат открытых таблиц, подходящий для управления большими объемами данных в озерах данных. Уникальные функции, такие как путешествие во времени, динамическая эволюция схемы и эволюция разделов, меняют правила игры, позволяя механизмам запросов одновременно безопасно и эффективно работать с одними и теми же данными. Видеть Полное руководство по архитектуре Lakehouse с Iceberg и MinIO для получения дополнительной информации о функциях Iceberg.

Начиная

Вам понадобится Докер-движок и Докер Составление для этого урока. Самый простой способ получить и то, и другое, если у вас их еще нет, — это установить Docker Desktop.


Эта часть урока основана на Dremio. Сообщение блога . Вы можете получить репозиторий этого проекта. здесь .


Для начала откройте терминал и перейдите в папку, в которую вы клонировали/загрузили репозиторий, и выполните приведенную ниже команду, чтобы запустить Dremio.


 docker-compose up dremio


Подождите несколько минут, а затем перейдите по адресу http://localhost:9047 чтобы получить доступ к Dremio. Обновите запрошенные поля и нажмите «Далее».



Затем выполните следующую команду, чтобы запустить MinIO.


 docker-compose up minio


Последняя команда docker-compose up приведенная ниже, запустит Nessie.


 docker-compose up nessie


Перейдите по адресу http://localhost:9001 , чтобы войти в MinIO, используя имя пользователя и пароль minioadmin:minioadmin . Вам будет предложено создать корзину.



Создайте один с именем iceberg-datalake .



Затем вернитесь в Dremio по http://localhost:9047 , нажмите «Добавить источник» и выберите «Несси».



  • Установите имя nessie
  • Установите URL-адрес конечной точки http://nessie:19120/api/v2
  • Установите для аутентификации значение none



Пока не нажимайте «Сохранить». Вместо этого на панели навигации слева нажмите «Хранилище». MinIO — это объектное хранилище, совместимое с S3-API, которое может использовать те же пути подключения, что и AWS S3.


  • В качестве ключа доступа установите minioadmin
  • В качестве секретного ключа установите minioadmin
  • Установите корневой путь /iceberg-datalake



Прокрутите вниз, чтобы увидеть следующий набор инструкций.

  • Нажмите кнопку Add Property в разделе Connection Properties , чтобы создать и настроить следующие свойства.
    • fs.s3a.path.style.access к true
    • fs.s3a.endpoint для minio:9000
    • dremio.s3.compat в true
    • Снимите флажок Encrypt connection



Затем нажмите «Сохранить». Теперь вы должны увидеть каталоги Nessie в своих источниках данных.



Создайте источник данных

В Dremio перейдите к SQL Runner слева. Убедитесь, что в правом верхнем углу текстового редактора для параметра Context выбран источник «Несси». В противном случае вам придется ссылаться на контекст, например nessie.SalesData , а не просто SalesData чтобы выполнить этот запрос. Скопируйте и вставьте приведенный ниже SQL и запустите.


 CREATE TABLE SalesData (    id INT,    product_name VARCHAR,    sales_amount DECIMAL,    transaction_date DATE ) PARTITION BY (transaction_date); 



Запустите приведенный ниже запрос, чтобы вставить данные в только что созданную таблицу.


 INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES    (1, 'ProductA', 1500.00, '2023-10-15'),    (2, 'ProductB', 2000.00, '2023-10-15'),    (3, 'ProductA', 1200.00, '2023-10-16'),    (4, 'ProductC', 1800.00, '2023-10-16'),    (5, 'ProductB', 2200.00, '2023-10-17'); 



Вернитесь в MinIO и убедитесь, что ваше озеро данных заполнено таблицами Iceberg.


Ветвление и слияние с Несси

Вернитесь в Дремио по http://localhost:9047 . Начните с запроса к таблице в главной ветке, используя синтаксис AT BRANCH :


 SELECT * FROM nessie.SalesData AT BRANCH main; 



Создайте ветвь ETL (извлечение преобразования и загрузки), чтобы вы могли работать с данными и преобразовывать их, не влияя на производительность.


 CREATE BRANCH etl_06092023 in nessie


В ветке ETL вставьте в таблицу новые данные:

 USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');


Подтвердите немедленную доступность новых данных в ветке ETL:

 SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;


Обратите внимание на изоляцию изменений от пользователей в основной ветке:

 SELECT * FROM nessie.SalesData AT BRANCH main;


Объедините изменения из ветки ETL обратно в основную ветку:

 MERGE BRANCH etl_06092023 INTO main in nessie;


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

 SELECT * FROM nessie.SalesData AT BRANCH main


Эта стратегия ветвления позволяет инженерам данных независимо обрабатывать многочисленные транзакции в нескольких таблицах. Когда они будут готовы, инженеры по обработке данных смогут объединить эти транзакции в одну комплексную многотабличную транзакцию в основной ветке.

Заключение

В этом сообщении блога подробно рассматриваются возможности Git-подобного контроля версий в инженерии данных, подчеркивая, как Несси беспрепятственно управляет версиями данных, ветвями и слияниями. В этом пошаговом руководстве показано, как Nessie в сотрудничестве с Dremio и MinIO в качестве основы объектного хранилища повышает качество данных и улучшает совместную работу в рабочих процессах обработки данных.


Дайте нам знать, как выглядит ваш дом на озере данных привет@minio.io или на наш Slack-канал .


Также появляется здесь .