Облачная платформаAdvanced

Hudi

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Hudi — это формат таблиц data lake, который предоставляет возможность обновлять и удалять данные, а также потреблять новые данные в HDFS. Он поддерживает несколько вычислительных движков и предоставляет интерфейсы вставки, обновления и удаления (IUD) и потоковые примитивы, включая upsert и incremental pull, над наборами данных в HDFS.

Note

Чтобы использовать Hudi, убедитесь, что сервис Spark2x установлен в кластере MRS.

Рисунок 1 Базовая архитектура Hudi


Возможности

  • Возможность транзакций ACID поддерживает импорт данных в реальном времени в озеро данных и пакетный импорт данных в озеро данных.
  • Множественные возможности представления (read-optimized view/incremental view/real-time view) позволяют быстро анализировать данные.
  • Дизайн Multi-version concurrency control (MVCC) поддерживает откат версии данных.
  • Автоматическое управление размерами файлов и их расположением оптимизирует производительность запросов и предоставляет квазиреальное время данных для запросов.
  • Поддерживается одновременное чтение и запись. Данные могут читаться во время записи на основе изоляции снимка.
  • Поддерживается bootstrapping для преобразования существующих таблиц в наборы данных Hudi.

Ключевые технологии и преимущества

  • Подключаемый механизм индексации: Hudi предоставляет несколько механизмов индексации для быстрой обновления и удаления больших объёмов данных.
  • Поддержка экосистемы: Hudi поддерживает несколько движков данных, включая Hive, Spark, HetuEngine и Flink.

Два типа таблиц, поддерживаемых Hudi

  • Copy On Write

    Таблицы copy-on-write также называют COW‑таблицами. Для хранения данных используются файлы Parquet, а внутренние операции обновления необходимо выполнять путём перезаписи оригинальных файлов Parquet.

    • Преимущество: это эффективно, потому что необходимо читать только один файл данных в соответствующем разделе.
    • Недостаток: при записи данных необходимо скопировать предыдущую копию, а затем на её основе создать новый файл данных. Этот процесс занимает много времени. Поэтому данные, читаемые запросом чтения, отстают.
  • Merge On Read

    Таблицы merge-on-read также называют MOR‑таблицами. Для хранения данных используется комбинация колонно‑ориентированного формата Parquet и строкового формата Avro. Файлы Parquet используются для хранения базовых данных, а файлы Avro (также называемые лог‑файлами) — для хранения инкрементальных данных.

    • Преимущество: данные сначала записываются в дельта‑лог, размер дельта‑лога небольшой. Поэтому стоимость записи низка.
    • Недостаток: файлы необходимо периодически уплотнять. Иначе образуется большое количество фрагментных файлов. Производительность чтения ухудшается, поскольку дельта‑логи и старые файлы данных нужно объединять.

Hudi поддерживает три типа представлений для возможностей чтения в разных сценариях

  • Snapshot View

    Предоставляет последние снимки данных текущей таблицы Hudi. То есть после записи последних данных в таблицу Hudi новые записанные данные можно запросить через это представление.

    И COW, и MOR‑таблицы поддерживают эту возможность представления.

  • Incremental View

    Обеспечивает возможность инкрементного запроса. Инкрементные данные после указанного коммита можно запросить. Это представление можно использовать для быстрого получения инкрементных данных.

    COW‑таблицы поддерживают эту возможность представления. MOR‑таблицы также поддерживают эту возможность представления, но возможность инкрементного представления исчезает после выполнения операции уплотнения.

  • Read Optimized View

    Предоставляет только данные, хранящиеся в последнем файле Parquet.

    Этот просмотр отличается для таблиц COW и MOR.

    Для таблиц COW возможности просмотра такие же, как у real-time view. (Таблицы COW используют только файлы Parquet для хранения данных.)

    Для таблиц MOR доступны только базовые файлы, и предоставляются данные из указанных фрагментов файлов, начиная с последней compact operation. Это можно просто понять так: данный просмотр предоставляет только данные, хранящиеся в файлах Parquet таблиц MOR, а данные в лог‑файлах игнорируются. Предоставляемые этим просмотром данные могут быть не самыми последними. Однако после выполнения compact operation для таблиц MOR инкрементальные данные журналов объединяются с базовыми данными. В этом случае данный просмотр обладает теми же возможностями, что и real-time view.