Что такое Apache Hudi?
Apache Hudi - это фреймворк для создания Data Lake, позволяющий эффективно управлять массивами данных в распределенных файловых системах, таких как Hadoop Distributed File System (HDFS), или в облачных хранилищах. Данное решение обеспечивает потоковое чтение и запись данных. ПО находится в свободном доступе и распространяется под лицензией Apache 2.0.
Hudi расшифровывается как «Hadoop Upserts Deletes and Incrementals», данный фреймворк базируется на распределенных файловых системах, таких как HDFS-совместимые хранилища, или на облачных хранилищах, таких как Amazon S3, Microsoft Azure или Google Cloud Storage. Hudi был разработан в 2016 году компанией Uber, в 2017 году он стартовал как проект Apache Incubator. Начиная с 2020 года Hudi является проектом ASF.
При выполнении транзакций с данными фреймворк обеспечивает соблюдение принципа ACID (Atomicity, Consistency, Isolation, Durability). В качестве движков для запросов данных поддерживаются такие решения, как Apache Spark, Apache Impala, Apache Hive или Presto. Помимо Uber, Apache Hudi используют и другие компании, такие как Alibaba Group, Tencent и Linknovate. В Amazon Web Services (AWS) Apache Hudi является частью AWS Elastic Map Reduce. Текущая версия Apache Hudi - 0.7.0 (по состоянию на I квартал 2021 года).
Устройство и характеристики Apache Hudi
Apache Hudi разработан для потоковой инкрементной записи и чтения данных из HDFS-совместимых хранилищ и облачных хранилищ. По сравнению с классической пакетной обработкой, потоковая обработка записывает или считывает данные с меньшей задержкой. Создатели Hudi также называют метод потоковой обработки Hudi инкрементной обработкой на основе микропакетов, в отличие от типичных решений для потоковой обработки, таких как Apache Kafka Streams или Apache Flink.
Для записи или чтения данных из хранилищ фреймворк использует концепцию Таблиц Hudi (Hudi Tables). Чтение из этих таблиц осуществляется с помощью механизмов запросов данных, таких как Apache Spark, Apache Impala, Apache Hive или Presto. Таблица Hudi состоит из следующих трех основных компонентов:
- индекс
- файлы данных
- метаданные временной шкалы
Данные хранятся в иерархически организованных файлах данных. Индекс обеспечивает сопоставление данных, а метаданные временной шкалы содержат полную временную шкалу действий с данными, выполняемых в таблице Hudi.
Поток изменений содержит все записи данных, которые были обновлены, вставлены или удалены в таблице Hudi с определенного момента времени. Другие функции, предоставляемые Apache Hudi, включают изоляцию моментальных снимков между записью и запросами, точки сохранения для восстановления данных и поддержку возможности отката.
Преимущества Apache Hudi
Apache Hudi предлагает множество решений для управления, хранения и запроса данных в Data Lake. Потоковое инкрементное чтение и запись данных в разы повышает эффективность хранения и снижает время ожидания. Большие Data Lake в петабайтном диапазоне могут быть реализованы на базе распределенных файловых систем, таких как Hadoop Distributed File System (HDFS), или на базе облачных хранилищ. Фреймворк обеспечивает высокое качество таблиц данных и гарантирует соответствие выполняемых транзакций принципу ACID.
Потоки изменений могут использоваться для запроса записей об изменении данных с определенного момента времени без необходимости сканирования и обработки всех областей данных. Apache Hudi ориентирован на работу в облаке и позволяет эффективно и без проблем управлять данными между разными провайдерами. Apache Hudi можно использовать для создания конвейеров данных, которые могут применяться в таких областях, как хранилища данных, бизнес-аналитика или машинное обучение. Инкрементная обработка данных обеспечивает более высокую скорость и производительность по сравнению с классической пакетной обработкой, при этом она максимально приближена к работе в режиме реального времени.




