На основе попытки написания AIGC: глубокое понимание Apache Hudi.
На основе попытки написания AIGC: глубокое понимание Apache Hudi.
Предисловие
Цель этой статьи — предоставить читателям полное представление об Apache. Знание Худи. В частности, читатели могут узнать об Apache Что такое Hudi, как он работает, распространенные случаи использования и с чем он работает? практика. Кроме того, читатели получат информацию о том, как установить и настроить Apache. Hudi и советы по оптимизации его производительности. Прочитав эту статью, читатели должны иметь представление об Apache. Hudi хорошо разбирается в этом и знает, как использовать его в своих целях в конвейере обработки данных.
Apache Hudi (Hadoop Upserts Deletes and Incrementals) — это платформа управления данными с открытым исходным кодом, предназначенная для упрощения процесса управления и обработки больших наборов данных поверх распределенных систем хранения, таких как распределенная файловая система Hadoop (HDFS) или облачное хранилище. Он обеспечивает эффективный способ хранения, запроса и обработки данных, позволяя вставлять, удалять и дельта-обработку обновлений на платформах больших данных, таких как Apache Spark, Apache Hive и Apache Flink. Еще одной ключевой мотивацией для разработки Apache Hudi является предоставление единой среды управления данными, которая может обрабатывать различные типы рабочих нагрузок с данными; Hudi обеспечивает поддержку различных форматов данных, режимов приема и механизмов запросов, что делает его универсальной платформой для управления данными. организации использовать единую платформу для управления различными типами рабочих нагрузок с данными, упрощая процесс управления данными и сокращая затраты. Hudi также обеспечивает поддержку транзакций ACID для обеспечения согласованности и надежности данных.
К основным особенностям Apache Hudi относятся:
Обновлена поддержка вставки и удаления.:Позволяет выполнять вставку обновлений в набор данных.(Вставить новую записьили Обновить существующую запись)иудалить,Таким образом достигается эффективное управление данными и снижается сложность полного сканирования таблиц, требования ETL к процессу.
инкрементная обработка:Поддержка инкрементной обработки данных,Позволяет обрабатывать только изменения, произошедшие с момента последней обработки фиксации.,Значительно сокращает объем обрабатываемых данных,Улучшить в целомпроизводительность。
Управление временной шкалой:Для каждого набора данных поддерживается график отправки.,Он записывает все операции, выполняемые с данными.,Например, вставьте、обновить и удалить. Временная шкала поддерживает откат данных на определенный момент времени, что обеспечивает лучшее согласование. данных и Надежность.
Эффективность хранения:Используя управление размером файла、Такие технологии, как сжатие данных и кластеризация данных, оптимизируют хранение. Эти оптимизации помогают уменьшить объем памяти и повысить запроспроизводительность.
раздел данных:Поддерживает настраиваемыераздел данных, позволяет организовывать данные на основе определенных атрибутов, таких как дата и регион. Эта функция помогает повысить запроспроизводительность за счет уменьшения объема данных для сканирования.
индекс:поставлятьвстроенныйиндексмеханизм,Можно эффективно расположитьивозобновлятьнабор данныхиз Записывать。 Эта функция улучшает общий процесс управления данными за счет ускорения вставки и удаления обновлений.
Интеграция с экосистемой больших данных:направленный наи Apache Spark、Apache Hive и Apache Flink Ждите популярных больших Платформы обработки данных работают без сбоев. Эта интеграция позволяет использовать существующие конвейеры и приложения обработки данных. Hudi функция.
Архитектура
Apache Hudi может просто понимать формат данных, и пользователь интегрирует SDK для чтения и записи данных, однако SDK может объединять небольшие файлы в фоновом режиме при чтении и записи, выполнять управление параллелизмом, гарантировать ACID и, конечно же, кэшировать записанные данные; В каталоге также поддерживаются небольшие слияния файлов и другие фоновые оптимизации, поэтому его сложнее понять как механизм хранения.
Ниже приводится обзор ключевых компонентов Apache Hudi и Архитектура:
Write Client:Write Клиент — это API, используемый для записи данных в таблицы Hudi. Он поддерживает операции вставки, обновления и удаления на уровне записей и генерирует новую версию данных для каждой операции записи.
Delta Streamer:Delta Streamer — это автономный сервис для применения новых изменений к существующим наборам данных. Его можно скачать из различных источников, таких как Kafka, AWS. S3 и т. д.) считывает поток входных данных, объединяет его с существующим набором данных и выводит в таблицу Hudi.
Hudi Table:Hudiтаблица относится к Использование Наборы данных, которыми управляет Худи. Поскольку каждая операция записи создает новую версию, таблица Hudi Зависит. Несколько версий, каждая версия создается посредством разных операций записи.
Indexing:Пользователи ускоряют чтение и запись данных
Query Engine:Query Engine — это API, используемый для запроса данных в таблицах Hudi. Он поддерживает запросы SQL и обеспечивает поддержку Delta. Lake、Apache Встроенная интеграция вычислительных платформ, таких как Spark и Presto.
Timeline Server:Timeline Server это легкий сервис, который предоставляет Hudi Единообразное представление метаданных набора данных. Он управляет метаданными активных и архивных версий файлов, историей коммитов и другой информацией. Apache Hive、Apache Spark и Presto Подождите,пока запустится механизм запросов. Timeline Server оптимизировать Запроспроизводительность。
Transactions: Поддерживает транзакционную запись, что означает, что в случае сбоя записи данных вся транзакция будет отменена, обеспечивая согласованность. данных。
Некоторые другие важные особенности:
Copy-On-Write (COW):В этом формате хранения,Hudi Новая версия файла данных создается для каждой операции обновления или вставки. Этот метод обеспечивает отличную Запроспроизводительность, но Зависит от Создание новых файлов может привести к увеличению затрат на хранение.
Merge-On-Read (MOR):В этом формате хранения,Hudi Ведите файл журнала для каждого файла данных для хранения обновлений и вставок. Во время Запроса файлы журналов и данных объединяются для обеспечения единообразного представления данных. Такой подход уравновешивает затраты на хранение и Запроспроизводительность.
Schema Evolution:Эта функция позволяет изменить схему таблицы без потери существующих данных.。через эту функцию,Разработчики могут добавлять новые поля в существующие схемы.,И выполнить Запрос, не затрагивая существующие данные.
Compaction:Эта функция используется для сжатияHudiданные в таблице。Он объединяет несколько небольших файлов в один большой файл.,Тем самым ускоряя скорость Запроса. также,Сжатие также можно использовать для удаления устаревших данных.,чтобы уменьшить место для хранения.
Clustering:Эта функция используется для преобразования таблицыраздел данных,Чтобы эффективнее обрабатывать Запросы. Кластеризуя таблицу,Разработчики могут объединять связанные данные,И извлекайте только необходимую часть при поиске данных.
Incremental Processing:Эта функция используется для обработки только инкрементной части потока данных изменений.,без повторной обработки всего набора данных. Такой подход значительно увеличивает скорость обработки,И значительно сократить потребление ресурсов.
Сценарии использования
Apache Hudi можно применять к различным большим данныесцена,Ниже Несколько распространенных случаев использования приводится:
озеро данных в реальном времени:Apache Худи может помочь построить озеро данных в реальном времени,Управляйте притоком данных, поддерживая инкрементальную обработку и хранение на основе времени. также,Он также поддерживает несколько форматов файлов.,И предоставляет сервис Запрос для облегчения быстрого доступа к данным.
журнал финансовых транзакций:Для записей, которые необходиможурнал финансовых сцена транзакций, Apache Hudi может выполнять транзакционные операции записи и обновления.,и терпит неудачуили Способность обеспечить согласованность данных в нештатных ситуациях.и Надежность.
медиа-анализ:Apache Hudi может помочь создать платформу медиа-анализа, которая позволит быстро анализировать крупномасштабные наборы данных и Запрос. от Худи Delta StreamerИнтегрируйте различные источники данных в Hudi,Можно легко выполнить пользовательские преобразования ETL и очистку данных.,И воспользуйтесь сервисом Худи Запрос, чтобы быстро найти нужные вам данные.
Мониторинг качества данных:Apache Hudi можно использовать в мониторинге. качества данных, регулярно импортируя данные источника данных в наборы данных Hudi и используя Худи Данные с относительно высокими характеристиками сжатияиндексчтобы быстро найти исключенияиошибка,и принять срочные меры. также,Он также поддерживает управление версиями данных на основе времени.,Для облегчения анализа и сравнения исторических данных.
ETL в реальном времени:Apache Hudi можно использовать для построения ETL в реальном Конвейер времени интегрирует различные источники данных в Hudi, выполняет такие операции, как очистка, преобразование и агрегирование данных, а также записывает результаты непосредственно в целевую систему хранения. Зависит Поскольку он поддерживает инкрементальную обработку и хранение на основе времени, он может быстро реагировать на изменения данных и своевременно обновлять данные в целевой системе хранения.
Сравнение с другими фреймворками
Apache Hudi VS Apache Kudu
1. Цель:
Apache Hudi (Hadoop Upserts Deletes and Incrementals) предназначен для обеспечения эффективной вставки, удаления и дополнительной обработки обновлений для больших наборов аналитических данных, хранящихся в распределенной файловой системе Hadoop (HDFS) или облачном хранилище.
Apache Kudu — это менеджер столбчатого хранилища, разработанный для экосистемы Apache Hadoop и обеспечивающий быстрый анализ быстрых данных. Он оптимизирован для случаев использования, требующих быстрого произвольного доступа к данным, таких как аналитика в реальном времени и данные временных рядов.
2. Модель данных:
Hudi поддерживает модель данных на основе строк, подходит для аналитических рабочих нагрузок и может обрабатывать сложные типы данных.
Kudu использует столбчатую модель данных, которая более эффективна для аналитических запросов, обращающихся к небольшому набору столбцов в таблице.
3. Обновление и удаление поддержки:
Hudi поддерживает вставку и удаление обновлений, что позволяет эффективно изменять данные и соблюдать GDPR.
Kudu также поддерживает обновления и удаления, но оптимизирован для быстрого произвольного доступа, что делает его более подходящим для анализа в реальном времени.
4. Интеграция с механизмом запросов:
Hudi интегрирует механизмы запросов, такие как Apache Hive, Apache Spark и Presto, что позволяет пользователям запрашивать таблицы Hudi с помощью SQL или Spark API.
Kudu интегрируется с такими механизмами запросов, как Apache Impala, Apache Spark и Apache Drill, чтобы обеспечить более удобный анализ в реальном времени.
5. Хранение:
Hudi хранит данные в HDFS или облачном хранилище, что делает их совместимыми с существующими инструментами экосистемы Hadoop.
Kudu имеет собственный уровень хранения, оптимизированный для быстрого произвольного доступа и записи с малой задержкой.
6. Варианты использования:
Hudi идеально подходит для крупномасштабных аналитических задач, озер данных и ситуаций, когда требуются эффективные обновления и удаления.
Kudu идеально подходит для анализа в реальном времени, данных временных рядов и случаев использования, требующих быстрого произвольного доступа к данным.
Apache Hudi VS Delta Lake
Оба решения представляют собой решения для хранения данных с открытым исходным кодом, предназначенные для реализации транзакций ACID (атомарность, согласованность, изоляция, долговечность), возможностей перемещения во времени и возможности вставки обновлений в рабочие нагрузки больших данных. Ключевые различия заключаются в следующем:
1. Экосистема и интеграция:
Apache Hudi: Hudi разработан Uber как часть Apache Software Foundation. Он хорошо интегрируется с Apache Spark, Hive и Presto и поддерживает данные, хранящиеся в форматах Apache Parquet и Apache Avro.
Delta Lake: Delta Lake, разработанное Databricks, построено на базе Apache Spark и предназначено для бесперебойной работы с платформой Databricks. Он поддерживает данные, хранящиеся в формате Apache Parquet.
2. Производительность:
Apache Hudi: Hudi предоставляет возможности дополнительной обработки, которые могут значительно повысить производительность конвейеров данных за счет обработки только изменяющихся данных. Он также поддерживает индексирование для более быстрого поиска и обновления.
Delta Lake: Delta Lake использует журналы транзакций для отслеживания изменений и обеспечения транзакций ACID. Он также поддерживает пропуск данных и сокращение разделов для повышения производительности запросов.
3. Контроль версий данных и путешествия во времени:
Apache Hudi: Hudi поддерживает изоляцию моментальных снимков и управление многоверсионным параллелизмом (MVCC), что позволяет пользователям запрашивать данные в разные моменты времени.
Delta Lake: Delta Lake также поддерживает запросы о путешествиях во времени, позволяя пользователям получать доступ к предыдущим версиям данных.
4. Согласованность данных и транзакции ACID:
Apache Hudi: Hudi обеспечивает транзакции ACID, обеспечивая согласованность данных и обеспечивая такие функции, как вставка и удаление обновлений.
Delta Lake: Delta Lake также обеспечивает транзакции ACID, обеспечивая согласованность данных при выполнении нескольких одновременных операций.
5. Сообщество и поддержка:
Apache Hudi: Являясь частью Apache Software Foundation, Hudi имеет растущее сообщество и поддержку со стороны различных организаций. Однако он может не иметь такой же коммерческой поддержки, как Delta Lake.
Delta Lake: Delta Lake, разработанная Databricks, имеет сильную коммерческую поддержку и поддержку, а также растущее сообщество.
Quick Start
Загрузите и установите Java 8 или более позднюю версию на свой компьютер.
Загрузите последнюю версию Apache Hudi с официального сайта или GitHub.
Извлеките загруженный архивный файл в каталог вашей локальной файловой системы.
Задайте переменную среды HADOOP_HOME, чтобы она указывала на каталог на вашем компьютере, где установлен Hadoop.
Отредактируйте файл hudi-config.properties, расположенный в каталоге conf разархивированного архива.,для настройки настроек Hudi,Например, путь к файлу, имя таблицы、Режим и тип хранения.
Запустите интерфейс командной строки Hudi, выполнив следующую команду в каталоге bin разархивированного архива:
Язык кода:javascript
копировать
./hoodie-cli.sh
7. Используйте интерфейс командной строки Hudi, чтобы создать новую таблицу, выполнив следующую команду:
8. Импортируйте данные в таблицу, используя поддерживаемый источник данных, например Avro, Parquet, JSON или ORC.
лучшие практики
Ниже приводитсяиспользоватьApache лучшее в Худи практикипредположение:
Понимание моделей данных и шаблонов доступа:существовать Использование Прежде чем продолжить, важно понять вашу модель данных и шаблоны доступа приложения. Это поможет вам выбрать правильный дизайн и параметры конфигурации стола для вашего случая использования.
Используйте правильный формат файла:HudiПоддерживает несколько форматов файлов,Например, Паркет, ORC и Авро. Выберите правильный формат файла в зависимости от требований вашего варианта использования. Например,Если требуется чтение с низкой задержкой, производительность,Затем рассмотрите возможность использования столбчатого формата, аналогичного ParquetилиORC.
Настройка уровней хранения:HudiПоложитесь на базовый уровень хранения для улучшенияпроизводительность。Настройка уровней Хранилище может значительно улучшить производительность Hudi уровней Советы по хранению включают выбор подходящего носителя данных (например, SSD), оптимизацию коэффициента икопирования размера блока и использование сжатия.
Отслеживайте показатели производительности Hudi:Отслеживайте показатели производительности Hudi,Например, задержка, скорость приема и использование хранилища.,Выявить потенциальные узкие места и области для улучшения.
Разделить данные:Разделить данныеможет значительно улучшитьHudiизпроизводительность。Это позволяет вам Запросмодельифильтрация предикатов фильтра не требуетсяизданные,Тем самым улучшая Запроспроизводительность. Секционирование также помогает обеспечить равномерное распределение данных по уровням хранения.,И воспользуйтесь параллелизмом, чтобы ускорить Запрос.
Использование DeltaStreamer для приема данных:Hudiпоставлятьчеловек позвонилDeltaStreamerизинструмент,Помогает эффективно перемещать существующие данные в таблицы Hudi. DeltaStreamer может обрабатывать большие объемы данных параллельно.,И поддерживает несколько источников данных и целевых форматов.
Правильно спроектируйте первичный ключ таблицы Hudi.:Выберите правильныйизпервичный ключда УчреждатьHudiповерхностьизключ。это определяет, как Разделить данные,И как выполнить операцию UpsertиDelete. Хороший дизайн должен избегать горячих точек и единых точек отказа.,И поддерживает высокую производительность Запроси обновлений.
Оптимизация производительности записи:писатьпроизводительностьдаHudiпроизводительностьизключ指标之一。Оптимизация производительности записивключая выбор подходящегоизписатьинструмент(НапримерSparkилиFlink)、Настройте размер пакета и параллелизм、Используйте кэширование метаданных Hive и т. д.
Инкрементные расчеты с использованием таблиц Худи:HudiТаблица поддерживает инкрементальные вычисления.,Это делает их идеальными для использования в вычислениях в реальном времени.и Потоковая обработкасцена。проходить Использование Худи API, вы можете легко написать логику дополнительных вычислений и обновить результаты вычислений непосредственно в таблице.
Ниже приведены некоторые советы и предложения по оптимизации производительности:
Для получения оптимальных результатов используйте тип таблицы COPY_ON_WRITE. Этот тип таблицы записывает данные в новый файл при каждой операции записи.,Повышенная производительность для рабочих нагрузок с интенсивным чтением.
Распределяйте данные по нескольким разделам, чтобы улучшить параллелизм и сократить время обработки.
Используйте обрезку столбцов, чтобы исключить ненужные столбцы при чтении данных, тем самым уменьшая накладные расходы на ввод-вывод и повышая производительность.
Включение предикатной передачи вниз переносит условия фильтра на уровень хранения, тем самым сокращая передачу данных и повышая производительность.
Настройте конфигурацию Hadoop и Hudi, чтобы оптимизировать использование ресурсов и производительность для вашего конкретного случая использования.
Рассмотрите возможность использования Hudi с распределенной системой хранения, такой как HDFS или AWS. S3)Вместеиспользовать,для достижения горизонтальной масштабируемостииотказоустойчивость。
Поддерживайте рабочие нагрузки с высокой пропускной способностью и низкой задержкой, используя соответствующие аппаратные ресурсы (такие как высокоскоростной диск, память и сетевые подключения).
Отслеживайте показатели производительности Hudi, такие как задержка, скорость импорта и использование хранилища, чтобы выявить потенциальные узкие места и возможности для улучшения. Следуя этим советам и рекомендациям, вы сможете оптимизировать Apache для конкретных случаев использования. Производительность Hudi и обеспечение высокой пропускной способности и рабочих нагрузок с низкой задержкой.
испытание
Apache Hudi — это мощная платформа управления данными с открытым исходным кодом, которая упрощает поэтапную обработку и хранение данных. Он предназначен для обработки крупномасштабных и объемных рабочих нагрузок, одновременно повышая эффективность приема данных, обновлений и производительности запросов. Как и в любой технике, используйте Apache Hudi Существует также потенциал для испытаний. В этой статье мы обсудим некоторые из этих проблем и изучим способы их решения.
1. Согласованность данных
Одним из наиболее важных аспектов поэтапной обработки данных является обеспечение согласованности. данных。 При работе с большими объемами данных важно обеспечить точность, полноту и актуальность данных. Apache Hudi Предоставляя операции чтения и записи ACID Дела, чтобы справиться с этим испытанием. Он также поддерживает разрешение конфликтов для одновременных обновлений, гарантируя, что последняя версия данных всегда доступна.
2. Целостность данных
При работе с большими объемами данных целостность данные — еще одно ключевое испытание. Apache Hudi Для обеспечения целостности данных предусмотрено несколько механизмов, включая проверку контрольной суммы и секционирование данных. Проверка контрольной суммы гарантирует, что данные не будут повреждены во время приема или обновления. Секционирование данных позволяет пользователям разбивать большие наборы данных на более мелкие, более управляемые части, тем самым снижая риск повреждения данных.
3. Производительность
Производительность всегда является проблемой при работе с большими наборами данных. Apache Hudi предоставляет несколько функций для улучшения производительности запросов и приема данных. Например, он поддерживает индексы для быстрого извлечения данных и сокращение столбцов для эффективной фильтрации данных. Кроме того, подход Apache Hudi к дополнительному приему данных позволяет пользователям обновлять только необходимые данные, тем самым сводя к минимуму время обработки.
4. Масштабируемость
существоватьиметь дело си При хранении больших объемов данных,Масштабируемостьв целомдаодиниспытание。 Apache Hudi Разработан с учетом высокой масштабируемости и поддержки горизонтального расширения между несколькими узлами. Он также обеспечивает поддержку облачных платформ.
Подвести итог
Apache Hudi позиционируется как механизм хранения больших данных. Пользователям достаточно добавить уровень вычислительного механизма к верхнему уровню, чтобы использовать его в качестве базы данных. Конечно, Delta Lake также очень мощный, но в Китае он используется редко.