HBase

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Apache HBase
Тип

Распределённые базы данных

Разработчик

Apache Software Foundation

Написана на

Java

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

0.94.1 (8 августа 2012 год)

Состояние

Активный

Лицензия

Apache License 2.0

Сайт

http://hbase.apache.org/

HBase — нереляционная распределённая база данных с открытым исходным кодом; написана на Java; является аналогом Google BigTable. Разрабатывается в рамках проекта Hadoop фонда Apache Software Foundation. Работает поверх распределенной файловой системы HDFS и обеспечивает BigTable-подобные возможности для Hadoop, то есть обеспечивает отказоустойчивый способ хранения больших объёмов разреженных данных.

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

HBase не является прямой заменой классических SQL баз данных, хотя в последнее время в этой сфере она стала работать существенно лучше и в настоящее время используется для управления данными на нескольких веб-сайтах[2][3], в том числе Facebook использует её для своей платформы сообщений[4].

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

Проект HBase запустили Чед Уолтерс и Джим Келлерман из компании Powerset, которой было необходимо обрабатывать большие объёмы данных для создания поисковой системы на естественном языке. Прототип был описан в только что опубликованной статье Google «Bigtable: A Distributed Storage System for Structured Data» [5]. В феврале 2007 года Майк Кафарелла написал заготовку кода системы, дальнейшей разработкой которой занимался Джим Келлерман. В настоящее время проект имеет большой приоритет в Apache и вызывает значительный интерес[6].

Первая версия HBase была включена в поставку Hadoop 0.15.0 в октябре 2007 года. В мае 2010 года система HBase перешла из категории подпроектов Hadoop в категорию проектов верхнего уровня Apache. К числу постоянных пользователей HBase относятся Adobe, StumbleUpon, Twitter и группы Yahoo!.

В ноябре 2010 года Facebook выбрал HBase для создания на её основе новой платформы обмена сообщениями[4].

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

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

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

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

Регионы

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

См. также[править | править вики-текст]

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

Ссылки[править | править вики-текст]