Apache Hudi переносит основные функции хранилища и базы данных непосредственно в озеро данных. Hudi предоставляет таблицы, транзакции, эффективные операции добавления/удаления, расширенную индексацию, услуги потоковой загрузки, оптимизацию кластеризации/сжатия данных и параллелизм, сохраняя при этом данные в формате файла с открытым исходным кодом.
HudiдаHadoop Upserts and Incrementals
аббревиатура,Используется для управления хранением больших наборов аналитических данных в распределенной файловой системе DFS.
Hudi — это абстракция хранилища данных, оптимизированная для сканирования, для аналитических предприятий. Она позволяет наборам данных DFS поддерживать изменения с задержкой на уровне минуты, а также поддерживает поэтапную обработку этого набора данных последующими системами.
Apache Hudi поддерживает хранение больших объемов данных поверх хранилища, совместимого с Hadoop, не только для пакетной обработки, но и для потоковой обработки в озерах данных.
В Hudi поддерживается временная шкала всех операций. Каждая операция соответствует моменту времени. Каждый момент обеспечивает просмотр таблицы и поддерживает поиск данных в хронологическом порядке.
Instant action
: Конкретные операции над таблицей.Instant time
: Временная метка выполнения текущей операции.state
:текущийinstantстатус。Hudi может гарантировать, что все операции являются атомарными и соответствуют временной шкале. Ключевые операции Hudi включают в себя:
COMMITS
:Запишите данные атомарно один раз вHudiОперация。CLEANS
:Фоновое действие по удалению старых версий файлов в таблице, которые больше не нужны.。DELTA_COMMIT
: delta commit
основнойдапакет атомарных записейMORповерхность,Некоторые из них будут записаны в дельта-логи.COMPACTION
: Различные типы операций сжимаются в фоновом режиме, а файлы журналов сжимаются в столбчатый формат хранения.ROLLBACK
: будет неудачнымcommit/delta commit
выполнить откат。SAVEPOINT
: Отметьте определенные файлы как сохраненные, чтобы облегчить восстановление в нештатных ситуациях.Государство подробно объяснило:
REQUESTED
: Указывает, что операция запланирована, но еще не начата.INFLIGHT
: Указывает, что операция в данный момент выполняетсяCOMPLETED
: Указывает на завершение операции на временной шкале.Hudi использует многоверсионный контроль параллелизма (MVCC), при котором операции сжатия объединяют файлы журнала и базовые файлы для создания новых фрагментов файлов, а операции очистки удаляют неиспользуемые/старые файлы.
Нарезка файлов для освобождения места в файловой системе.
тип таблицы | Поддерживаемые типы запросов |
---|---|
Copy On Write | Запрос моментального снимка + инкрементный запрос |
Merge On Read | Запрос моментального снимка + инкрементный запрос + Чтение оптимизированного запроса |
использовать эксклюзивный формат файла столбца (например, паркет),просто обнови версию&Перезаписывать файлы, выполняя синхронное слияние во время записи.。
Вот концептуальное объяснение того, как это работает, когда данные записываются в таблицу копирования при записи и к ней выполняются два запроса.
При записи данных обновление существующей файловой группы создает новый срез для файловой группы с отметкой времени немедленной фиксации, в то время как вставка выделяет новую файловую группу и записывает свой первый срез для файловой группы. Те, что отмечены красным выше, отправлены недавно.
Для хранения данных используйте комбинацию столбчатого формата (например: паркет) + формата файла на основе строк (например: avro). Обновления сохраняются в дельта-файлах, а затем сжимаются для синхронизации или
Асинхронно сгенерируйте новую версию столбчатого файла.
Сохраняет входящие добавления для каждой файловой группы в дельта-журнал на основе строк для подтверждения Запроса снимка путем динамического применения дельта-журнала к последней версии каждого идентификатора файла во время запроса.
Поэтому такого рода таблица пытается сбалансировать чтение иусиление записи для предоставления данных, близких к реальному времени.
Контрастные размеры | CopyOnWrite | MergeOnRead |
---|---|---|
задержка данных | Higher | Lower |
Задержка запроса | Lower | Higher |
Стоимость обновления (ввод-вывод) | Высшее (необходимо переписать паркет) | Нижний (добавить в дельта-журнал) |
Размер файла паркета | Меньше (высокая стоимость обновления (I/O)) | Больше (низкая стоимость обновления) |
усиление записи | Higher | Ниже (зависит от стратегии сжатия) |
Hudi обеспечивает эффективную вставку обновлений, сопоставляя заданный ключ с капюшоном (ключ записи + путь к разделу) идентификатору файла с помощью механизма индексирования.
После записи в файл первой версии записи сопоставление между ключом записи и идентификатором файла не меняется.
Для стола COW:
Это позволяет избежать сканирования всей файловой системы для поддержки быстрых операций добавления/удаления.
Для таблицы MOR:
Позволяет ограничить количество записей в базовом файле, которые необходимо объединить. Для базового файла его необходимо объединить только на основе записей текущего базового файла.
Сравнение стоимости:
Индексы, поддерживаемые Hudi, следующие:
имя | Примечание |
---|---|
Индекс Блума | Используя фильтр Блума, созданный на основе ключа записи, вы также можете использовать диапазон ключей записи для удаления файлов-кандидатов. |
Индекс GLOBAL_BLOOM | Похож на индекс Булма, но область действия глобальная. |
Простой индекс | Выполняет экономичное соединение входящих записей обновления/удаления с ключами, извлеченными из таблиц в хранилище. |
Индекс GLOBAL_SIMPLE | Похож на Simple, но область действия глобальная. |
Индекс HBase | Сохраните информацию об индексе в Hbase. |
Индекс INMEMORY | Сохраняйте информацию об индексе в памяти программ Spark, Java и Flink, а Java по умолчанию использует текущий индекс. |
Индекс ВЕДРА | Найдите группу файлов, используя хэш сегмента.,Эффект лучше, когда объем данных велик.。может пройти |
Индекс RECORD_INDEX | Индекс сохраняет ключ записи в сопоставлении местоположений в таблице метаданных Hudi. |
Пользовательский индекс | Пользовательский реализованный индекс. |
ВЕДРО:
Файлы данных таблиц Hudi обычно хранятся с использованием HDFS. С точки зрения путей и типов файлов файлы хранения таблиц Hudi делятся на две категории.