HBase

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
HBase
Тип система управления базами данных
Разработчик Apache Software Foundation
Написана на Java[2]
Операционная система кроссплатформенность
Первый выпуск 2006[1]
Аппаратная платформа Java Virtual Machine
Последняя версия
Лицензия Apache License 2.0[3]
Сайт hbase.apache.org

HBase — СУБД класса NoSQL с открытым исходным кодом, проект экосистемы Hadoop. Написана на Java; относится к категории «семейство столбцов» (англ. wide-column store), многие технические решения переняты из Google BigTable. Работает поверх распределенной файловой системы HDFS и обеспечивает BigTable-подобные возможности для Hadoop, то есть обеспечивает отказоустойчивый способ хранения больших объёмов разреженных данных.

Поддержка сжатия, операции в памяти и фильтр Блума для каждого базового столбца реализованы в соответствии с документацией BigTable[4]. Таблицы в HBase могут служить входом и выходом для работы реализации MapReduce в проекте Hadoop, и могут быть получены не только через Java API, но и через API (REST, Avro, Thrift). Проекты Phoenix[en] и Trafodion[en] обеспечивают SQL-доступ к данным под управлением HBase.

Используется для управления данными в ряде крупных проектов[5][6], в частности, Facebook в период 2010—2018 годов использовал HBase для платформы сообщений[7] (в 2018 году платформа переведена на MyRocks[en][8]), к числу постоянных пользователей также относятся Adobe, StumbleUpon, Twitter, Yahoo! (эксплуатирует HBase-кластер из 3 тыс. узлов[9]).

История[править | править код]

Проект HBase начали в 2006 году Чед Уолтерс и Джим Келлерман из компании Powerset, которой было необходимо обрабатывать большие объёмы данных для создания поисковой системы на естественном языке. Прототип был основан на опубликованной в 2005 году статье сотрудников Google о системе Bigtable [10]. В феврале 2007 года Майк Кафарелла написал заготовку кода системы, дальнейшей разработкой которой занимался Джим Келлерман. Вскоре проект привлёк большое внимание разработчиков, и получил в фонде Apache высокий приоритет[11].

Первая версия HBase была включена в поставку Hadoop 0.15.0 в октябре 2007 года. В мае 2010 года система перешла из категории подпроектов Hadoop в категорию проектов верхнего уровня фонда Apache. С 2012 года проводится ежегодная конференция разработчиков и пользователей системы HBaseCon.

В 2015 году вышла версия 1.0 системы, что отмечено как фондом и независимыми наблюдателями как «веха», свидетельствующая о зрелости продукта[9]; со второй половины 2010-х интерес к системе вырос также благодаря появлению SQL-интерфейсов к ней (Phoenix, Trafodion).

Модели данных[править | править код]

Приложения хранят данные в таблицах, состоящих из строк и столбцов. Для ячеек таблицы (пересечения строк и столбцов) действует контроль версии. По умолчанию в качестве версии используется временная метка, автоматически назначаемая HBase на момент вставки. Содержимое ячейки представляет собой неинтерпретируемый массив байтов.

Ключи строк таблицы тоже являются байтовыми массивами, поэтому теоретически ключом строки может быть что угодно — от строк до двоичных представлений long и даже сериализованных структур данных. Строки таблицы сортируются по ключу строк (первичному ключу таблицы). Сортировка осуществляется в порядке следования байтов. Все обращения к таблице выполняются по первичному ключу. Столбцы объединяются в семейства столбцов. Все члены семейства столбцов имеют общий префикс, так например, столбцы temperature:air и temperature:dew_point принадлежат семейству temperature, а station:identifier принадлежит семейству station. Префикс семейства столбцов должен состоять из печатаемых символов. Завершающая часть (квалификатор) может состоять из произвольных байтов.

Семейства столбцов таблицы должны быть заданы заранее как часть определения схемы таблицы, однако новые члены семейств могут добавляться по мере надобности. Например, новый столбец station:address может быть передан клиенту как часть обновления, и его значение будет успешно сохраняться — при условии, что семейство столбцов station уже существует в таблице. Физически все члены семейств столбцов хранятся вместе в файловой системе. Так как настройки и спецификации задаются на уровне семейств столбцов, желательно, чтобы все члены семейств имели сходные схемы доступа и характеристики размеров.

Регионы[править | править код]

HBase автоматически производит горизонтальную разбивку таблиц на так называемые регионы. Каждый регион образует подмножество строк таблицы. Регион определяется таблицей, которой он принадлежит, своей первой строкой (включительно) и последней строкой (без включения). Изначально таблица состоит из одного региона, но с ростом размера региона после превышения настраиваемого порогового размера он разбивается на два новых региона приблизительно равных размеров. До первого разбиения вся загрузка данных будет осуществляться на одном сервере, на котором размещён исходный регион. По мере роста таблицы увеличивается количество её регионов. Регионы являются единицами, распределяемыми в кластере HBase. Если таблица оказывается слишком большой для одного отдельного сервера, она может обслуживаться кластером серверов, на каждом узле которого размещается подмножество регионов таблицы. Кроме того, регионы обеспечивают распределение нагрузки на таблицу. Совокупность отсортированных регионов, доступных по сети, образует общее содержимое таблицы.

Примечания[править | править код]

Ссылки[править | править код]