Преимущества, недостатки и узкое место HBase
⚡ Умное резюме
HBase — это распределенная столбцово-ориентированная база данных NoSQL, построенная на основе Hadoop HDFSи обеспечивает доступ к миллиардам строк в режиме реального времени для произвольного чтения и записи, при этом подразумевая очевидные компромиссы в отношении запросов, индексирования и стоимости оборудования.

Что такое HBase?
HBase — это распределенная столбцово-ориентированная NoSQL-база данных с открытым исходным кодом, работающая поверх распределенной файловой системы Hadoop (HDFS). Она построена на основе... Google Bigtable хранит данные в таблицах, состоящих из строк и столбцов, и предназначен для разреженных наборов данных, которые могут разрастаться до миллиардов строк и миллионов столбцов.
В отличие от реляционных баз данных, HBase не использует фиксированную схему и не предлагает оптимизатор запросов. Вместо этого каждое значение обрабатывается с помощью ключа строки, семейства столбцов, квалификатора столбца и временной метки, что обеспечивает высокую скорость чтения и записи в реальном времени даже при больших масштабах.
Кластер HBase основан на нескольких ключевых компонентах. HMaster координирует работу кластера и назначает регионы, серверы регионов хранят и предоставляют фактические данные, а Apache Работник зоопарка tracHBase отслеживает работоспособность серверов и помогает в обеспечении отказоустойчивости. Благодаря интеграции с экосистемой Hadoop, HBase работает с такими инструментами, как... Уменьшение карты, Hiveа также Pig для пакетной аналитики. Для более подробного ознакомления с внутренним устройством см. раздел Архитектура HBase.
Преимущества HBase
Вот основные преимущества использования HBase:
- Хранит очень большие наборы данных поверх HDFS и может агрегировать и анализировать миллиарды строк, хранящихся в таблицах HBase.
- База данных может использоваться несколькими клиентами в распределенной среде.
- Чтение и обработка данных занимают меньше времени по сравнению с традиционными реляционными моделями.
- Поддерживает быстрые операции произвольного чтения и записи.
- HBase широко используется для проведения онлайн-аналитических операций.
- В банковских приложениях, таких как обновление баланса банкоматов в режиме реального времени, HBase надежно обрабатывает большие объемы операций чтения и записи.
Недостатки HBase
Вот важные ограничения HBase:
- HBase не является полной заменой традиционным реляционным моделям; некоторые функции реляционных систем не поддерживаются.
- HBase не может выполнять такие функции, как SQLОн не поддерживает структуры SQL, поэтому в нём отсутствует оптимизатор запросов.
- HBase требует значительных ресурсов процессора и памяти, поскольку имеет большой объем последовательного ввода-вывода, тогда как задачи MapReduce в основном зависят от операций ввода-вывода и имеют фиксированный объем памяти. Интеграция HBase с задачами MapReduce может приводить к непредсказуемым задержкам.
- Интеграция HBase с заданиями Pig и Hive иногда может вызывать проблемы с памятью в кластере.
- В среде кластера с общим доступом требуется меньше слотов задач на узел для выделения ресурсов ЦП HBase.
Узкие места производительности в HBase
HBase обеспечивает масштабируемость, но ряд архитектурных решений создают узкие места в производительности, которые командам следует учитывать при планировании:
В крупной производственной среде кластер HBase может работать на тысячах узлов, однако только HMaster выступает в роли главного узла для всех подчиненных серверов регионов. Если HMaster выходит из строя, восстановление может занять много времени, даже если клиенты по-прежнему могут связаться с сервером региона. Запуск резервного главного узла возможен, но одновременно активен только один HMaster, и перевод второго HMaster на резервный узел после сбоя происходит не мгновенно. В результате HMaster является признанным узким местом в производительности.
HBase не поддерживает операции объединения таблиц напрямую. Объединения можно реализовать с помощью MapReduce, но это значительно увеличивает время проектирования и разработки, а некоторые операции объединения таблиц в HBase фактически непрактичны.
Перенос данных из внешней СУБД в HBase обычно требует разработки новой схемы, и этот процесс миграции может занять много времени. Выполнение запросов также представляет собой проблему: многие команды добавляют слой SQL, например Apache Phoenix, поверх HBase, чтобы иметь возможность... чтение и запись данных с привычными запросами.
HBase поддерживает только один индекс — ключ строки выступает в качестве первичного ключа — поэтому поиск по любому другому полю выполняется медленно. Команды решают эту проблему, используя код MapReduce или интегрируя Apache. Solr а также Apache Phoenix для вторичного индексирования.
- Меры безопасности для многопользовательского доступа к данным улучшались лишь медленно.
- HBase не в полной мере поддерживает частичные ключи.
- Для каждой таблицы допускается только один порядок сортировки по умолчанию.
- Хранение больших бинарных файлов в HBase представляет собой сложную задачу.
- Ограничения хранилища HBase влияют на выполнение запросов и сортировку в реальном времени.
- Поиск по ключу и поиск по диапазону содержимого таблицы могут ограничивать запросы, которые должны выполняться в режиме реального времени.
- Индексирование по умолчанию отсутствует; программистам необходимо написать дополнительный код или скрипты для добавления индексирования.
- Требования к аппаратному обеспечению и распределение блоков памяти делают работу HBase дорогостоящей.
- Распределенный кластер требует множества серверов — отдельных узлов для NameNode, DataNodes, ZooKeeper и серверов регионов.
- Для обеспечения высокой производительности необходимы машины с большим объемом памяти.
- Общие затраты и расходы на техническое обслуживание выше, чем у более простых альтернатив.
HBase против СУБД
В статье неоднократно проводится сравнение HBase с традиционными реляционными базами данных. В таблице ниже приведены основные различия, чтобы вы могли решить, какая модель подходит для вашей рабочей нагрузки:
| Характеристика | HBase | RDBMS |
|---|---|---|
| Модель данных | Столбцово-ориентированное, гибкое по схеме хранилище NoSQL | Построчно-ориентированные таблицы с фиксированной схемой |
| Язык запросов | Отсутствует встроенный SQL; используются API или дополнительные модули, такие как Apache Phoenix. | Полный SQL с оптимизатором запросов |
| Масштабирование | Горизонтальное соединение, охватывающее стандартные узлы (петабайты) | В основном вертикальные; сложнее подняться наверх. |
| Сделки | Атомарность только на уровне строк; многострочная ACID-конфигурация недоступна. | Полные ACID-транзакции |
| Объединения и индексы | Отсутствуют встроенные объединения; используется индекс с одним ключом строки. | Встроенные объединения и множественные вторичные индексы |
| Лучший вариант посадки | Разреженные, очень большие, высокопроизводительные данные, обрабатываемые в режиме реального времени. | Структурированные данные, требующие сложных запросов. |
Вкратце, HBase отдает предпочтение масштабируемости и доступу в реальном времени, в то время как реляционные СУБД — широким возможностям запросов и строгой согласованности. Выбирайте HBase, когда объем данных и пропускная способность записи превышают возможности реляционной базы данных.
