Почему полное сканирование и агрегация HBase медленнее, чем паркет, несмотря на то, что они также являются столбчатой базой данных?
Я пытался использовать "правильную" технологию для клиентского приложения на 360 градусов, оно требует:
- Таблица с широкими столбцами, каждый клиент - одна строка с большим количеством столбцов (говорит> 1000)
- Ежедневно выполняется около 20 заданий по пакетному обновлению. Каждое задание аналитики запрашивает и обновляет небольшой набор столбцов для всех строк. Он включает в себя агрегирование данных для составления отчетов и загрузку / сохранение данных для алгоритмов машинного обучения.
- Мы обновляем информацию о клиентах в нескольких столбцах с <= 1 миллион строк в день. Загрузка обновлений распределяется по рабочим часам. У нас более 200 миллионов строк.
Я попытался с помощью Hbase, точки 1 и 3 выполнены. Но я обнаружил, что аналитика (загрузка / сохранение / агрегирование) на HBase мучительно медленная, она может быть в 10 раз медленнее, чем в Parquet. Я не понимаю, почему и Parquet, и Hbase являются столбчатыми БД, и мы достаточно хорошо распределили рабочую нагрузку в кластере HBase (так говорит "количество запросов на регион").
Любые советы? Я использую не тот инструмент для работы?
1 ответ
и Паркет, и Hbase являются столбчатыми БД
Это предположение неверно:
- Паркет не является базой данных.
- HBase не является столбчатой базой данных. Это часто рассматривается как единое целое, но это неправильно.
HFile
не ориентирован на столбцы (Паркет).
HBase мучительно медленный, он может быть в 10 раз медленнее, чем с паркетом
Полное сканирование HBase обычно намного медленнее, чем эквивалентное сканирование файлов в формате HDFS, поскольку HBase оптимизирован для шаблонов произвольного доступа. Вы не указали, как именно вы сканировали таблицу - TableSnapshotInputFileFormat
намного быстрее чем наивный TableInputFormat
, но все же медленнее, чем сканирование файлов в формате HDFS.