HBase

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

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

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

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

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

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

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

Модели данных

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

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

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

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

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

Примечания

[править | править код]
  1. http://hbase.apache.org/book/hbase.history.html
  2. 1 2 https://projects.apache.org/json/projects/hbase.json
  3. The hbase Open Source Project on Open Hub: Languages Page — 2006.
  4. http://hbase.apache.org/license.html
  5. Chang, et al. (2006). Bigtable: A Distributed Storage System for Structured Data
  6. Powered By HBase. Дата обращения: 12 января 2012. Архивировано из оригинала 27 марта 2013 года.
  7. StumbleUpon HBase Presentation. Дата обращения: 12 января 2012. Архивировано 21 октября 2013 года.
  8. The Underlying Technology of Messages. Дата обращения: 12 января 2012. Архивировано 6 декабря 2014 года.
  9. Xiang Li, Thomas Georgiou. Migrating Messenger storage to optimize performance. Facebook (26 июня 2018). Дата обращения: 3 января 2019. Архивировано 11 ноября 2018 года.
  10. 1 2 Gavin Clarke. Apache finally signs off Hadoop database… after 7 years of development. HBase 1.0 a ‘a thing of collaborative beauty’. The Register (24 февраля 2015). Дата обращения: 3 января 2019. Архивировано 4 января 2019 года.
  11. Архивированная копия. Дата обращения: 18 января 2010. Архивировано 3 января 2010 года.
  12. Powerset Blog Архивировано 19 февраля 2013 года.