Открыть сервис

HBase

Apache HBase — это распределённая, масштабируемая, отказоустойчивая нереляционная база данных (NoSQL), работающая поверх распределённой файловой системы Hadoop (HDFS). HBase построена на модели хранения данных наподобие Bigtable, разработанной компанией Google, и предоставляет произвольный доступ к большим объёмам структурированных и полуструктурированных данных в режиме реального времени. Относится к классу столбцовых баз данных (column-family stores), поддерживает согласованность на уровне строк (strong consistency).

История

Происхождение

Идея HBase возникла в 2006 году в недрах компании Powerset (стартап, занимавшийся семантическим поиском), когда инженеры искали способ хранения и обработки веб-контента объёмом в десятки терабайт. В то время HDFS отлично справлялась с пакетной обработкой (MapReduce), но не обеспечивала произвольного чтения/записи. Команда Powerset создала прототип, который затем развивался в рамках проекта Apache Hadoop. В 2007 году HBase стала подпроектом Apache Hadoop, а в 2010 году вышла в статус главного проекта Apache Software Foundation.

Ранние версии

Первая стабильная версия — HBase 0.20.0 — была выпущена в 2009 году. Она поддерживала базовые операции: Put, Get, Scan, Delete, а также работала с HDFS как единственным хранилищем. В 2011 году с версией 0.90 появилась поддержка регионов (regions) и автоматического разделения таблиц (auto-sharding).

Современное развитие

Начиная с версии 2.0 (2017 год) в HBase появились: поддержка MVCC (многоверсионное управление параллелизмом), процедуры для плавного перераспределения регионов (Mob, Offheap), улучшенная репликация. Последняя стабильная на 2025 год версия — HBase 3.0.0 (релиз 2021 года) — переведена на Java 11, оптимизирована работа с памятью, добавлены асинхронные RPC.

Архитектура

Основные компоненты

HBase состоит из следующих ключевых служб:

Модель хранения

Данные организуются в таблицы, которые разделяются на регионы по диапазону ключей строк (row key). Каждый регион обслуживается одним RegionServer-ом. Регионы хранятся на HDFS в виде файлов HFile (специальный формат на основе SSTable). При записи данные сначала попадают в Write-Ahead Log (WAL), а затем в буфер в памяти (MemStore). При заполнении MemStore данные сбрасываются на диск в новый HFile. Для чтения HBase сканирует как MemStore, так и HFile.

Структура таблицы:

Репликация и отказоустойчивость

HBase использует репликацию регионов через HDFS (каждый блок HDFS реплицируется на 3 узла по умолчанию). Также поддерживается асинхронная репликация между кластерами (cross-cluster replication). Для восстановления после сбоя HMaster запускает процедуру split log — перераспределение WAL между RegionServer-ами.

Классификация

По типу хранения

По модели данных

По требованиям к транзакциям

Характеристики

Преимущества:

Ограничения:

Применение

HBase широко используется в средах, где требуется массивная обработка данных с возможностью случайного доступа:

Примеры известных пользователей:

Интересные факты

Критика

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →