Массовая загрузка данных в HBase

В HBase типовая последовательность записи данных включает следующие шаги: WAL → MemStore → HFiles. Это работает хорошо в обычном режиме, но при загрузке очень большого объема данных такая последовательность ведет к значительному снижению производительности. К основным проблемами относятся следующие:

  • Повышенные требования к объему области памяти MemStore и журнала WAL.

  • Увеличение очередей на операции сжатия (compaction) и очистки (flush).

  • Как следствие, увеличенная задержка, приводящая к нарушению договоренностей о качестве обслуживания (SLA).

Массовая загрузка (bulk loading) направлена на решение этих проблем. Она представляет собой процесс подготовки и загрузки данных напрямую в файлы HFiles в системе HDFS, избегая стандартные стадии записи. Такой способ позволяет вносить в базу большие объемы данных гораздо быстрее. Он может быть полезен при загрузке данных из внешних источников или для последовательной загрузки партий данных, образуемых в процессе выполнения длительных автоматических ночных задач.

Массовая загрузка — это процесс ETL, включающий следующие три основные стадии:

  1. Извлечение (Extract). На этой стадии процесс извлекает данные из внешнего источника и сохраняет его в HDFS. Источниками могут быть содержимое другой базы данных (database dump) или файлы журналов в формате простого текста, CSV или другого формата. HBase не управляет этой частью процесса.

  2. Преобразование (Transform). На этой стадии процесс преобразует данные в формат HFile в соответствие со структурой предварительно созданной таблицы HBase: в каждом регионе он создает один HFile. Данные отсортированы в алфавитном порядке и разделены по файлам с помощью заданных точек деления (split points). Этот шаг обычно требует запуска задания MapReduce, которое и выполняет разделение данных на партиции, сортировку, генерацию класса вида ключ/значение, обеспечение требований к формату HFile и другие операции.

  3. Загрузка (Load). На этой стадии процесс перемещает данные в таблицу HBase, обеспечивая загрузку каждого файла в соответствующий регион с помощью Region Server, который обслуживает этот регион.

bulk loading dark
Типовая схема массовой загрузки данных
bulk loading light
Типовая схема массовой загрузки данных

Существует много способов настройки массовой загрузки данных в HBase, включая использование встроенных задач MapReduce, собственных (custom) задач MapReduce, Spark и других.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней