Apache Hudi был принят как проект верхнего уровня. Технология озера данных с открытым исходным кодом для потоковой обработки поверх Apache Hadoop уже используется в таких организациях, как Alibaba, Tencent и Uber, и поддерживается Amazon Web Services как часть Amazon EMR.
Название Hudi расшифровывается как Hadoop Upserts Deletes and Incrementals, описывая возможности технологии озера данных. Upserts — это операции, которые вставляют строки в таблицу базы данных, если они еще не существуют, или обновляют их, если они существуют. Hudi обеспечивает потоковую обработку поверх облачных хранилищ и распределенных файловых систем, совместимых с Apache Hadoop. Первоначально проект был разработан в Uber в 2016 году и был сделан с открытым исходным кодом, а затем отправлен в инкубатор Apache в январе 2019 года.
Apache Hudi можно использовать для управления озерами данных петабайтного масштаба. Озера данных Hudi предоставляют свежие данные, будучи на порядок эффективными по сравнению с традиционной пакетной обработкой.
Hudi обеспечивает поддержку обновления и удаления с быстрой подключаемой индексацией, а также транзакционно-совместимую фиксацию и откат. Он поддерживает механизмы запросов Apache Hive, Apache Spark, Apache Impala и Presto и имеет встроенный инструмент приема данных, который поддерживает Apache Kafka, Apache Sqoop и другие распространенные источники данных. Пользователи могут оптимизировать производительность запросов, управляя размерами файлов и компоновкой хранилища.
Hudi поддерживает три типа запросов — моментальные снимки, инкрементные и оптимизированные для чтения. Запросы моментальных снимков Hudi предоставляют представление данных в реальном времени с использованием комбинации хранения на основе столбцов и строк, например Parquet и Avro. Его инкрементные запросы предоставляют поток изменений с записями, вставленными или обновленными после определенного момента времени, в то время как оптимизированные для чтения запросы представляют собой, по сути, запросы моментальных снимков, предлагающие более высокую производительность в чисто столбцовом хранилище, таком как Parquet.
Согласно Uber, Hudi концептуально разделен на три основных компонента: необработанные данные, которые необходимо сохранить, индексы данных, которые используются для обеспечения возможности обновления, и метаданные, используемые для управления набором данных. Hudi поддерживает график всех действий, выполняемых на столе в разные моменты времени, которые в Hudi называются мгновениями. Это означает, что пользователи могут мгновенно просматривать таблицу, а также эффективно поддерживать извлечение данных в порядке их поступления. Hudi гарантирует, что действия, выполняемые на временной шкале, являются элементарными и последовательными в зависимости от времени, когда в базе данных было внесено изменение. С помощью этой информации Hudi предоставляет различные представления одной и той же таблицы Hudi, включая оптимизированное для чтения представление для быстрой работы в столбцах, представление в реальном времени для быстрого приема данных и инкрементное представление для чтения таблиц Hudi в виде потока журналов изменений.