Hbase

Автор
Hbase

Hbase — это нереляционная распределенная система управления базами данных (СУБД) с открытым исходным кодом, написанная на языке Java. Hbase является проектом экосистемы Hadoop и работает поверх распределенной файловой системы HDFS (Hadoop Distributed File System) [1].

Что такое Apache Hbase: основные особенности архитектуры

Hbase — это распределенная СУБД класса NoSQL, которая обеспечивает BigTable-подобные возможности для Hadoop (для работы с большими массивами данных) и, следовательно, обеспечивает отказоустойчивый способ хранения больших объемов данных. Архитектура hbase представлена следующими основными компонентами:

  1. Region Server (RS) — это сервер, который обслуживает один или несколько регионов. Регион — это диапазон записей, соответствующих определенному диапазону подряд идущих строковых ключей (RowKey). В состав каждого региона входят следующие компоненты:
  • Persistent Storage (PS) — это основное хранилище данных в СУБД hbase. Данные PS хранятся на HDFS в специальном формате Hfile, который отвечает за их хранение в отсортированном порядке по RowKey.
  • MemStore — область памяти, выделяемая для кратковременного хранения данных перед их записью в HFile.
  • BlockCache — это специальный кэш, отвечающий за ускоренное чтение часто используемых данных.
  • WriteAheadLog (WAL) — это специальный файл для логгирования всех манипуляций с данными для возможности восстановления всех изменений в случае сбоя.
  1. MasterServer — это главный сервер в кластере hbase, который управляет распределением регионов по RS (например, ведение реестров регионов или управление запуском регулярных задач).

Так как данные по одному региону могут храниться в нескольких HFile-файлах, то для ускорения работы hbase объединяет их. Эта операция носит название compaction (уплотнение). Уплотнение бывает двух видов:

  1. Minor Compaction — выполняется в фоновом режиме и имеет низкий приоритет по сравнению с другими операциями.
  2. Major Compaction — запускается по срабатыванию триггеров (при наступлении определенных событий). Имеет высокий приоритет и может существенно замедлить работу кластера. Major Compaction рекомендуется выполнять только в том случае, когда нагрузка на кластер небольшая [1].
курсы nosql, обучение nosql, mongodb nosql, курсы nosql в Москве, hbase курсы
Архитектура Hbase

Как появилась HBase: краткая история

Проект hbase начал разрабатываться в 2006 году Чедом Уолтерсом и Джимом Келерманом из компании Powerset, которая нуждалась в обработке больших объемов данных для создания поисковой системы на естественном языке. Первая версия hbase была включена в Hadoop 0.15.0 в октябре 2007 года. В мае 2010 года система перешла в категорию проектов верхнего уровня фонда Apache. В 2015 году вышла версия hbase 1.0. Последняя версия hbase 2.3.4 вышла 22 января 2021 года [2].

Начало работы с HBase

Основной структурой для работы с данными в hbase является таблица. Для создания таблиц hbase использует команду create:

create 'emp', 'personal data', 'professional data'

Для того, чтобы вставить данные в созданную таблицу, используется hbase-команда put:

put 'emp','1','personal data:name','raju'
put 'emp','1','personal data:city','hyderabad'
put 'emp','1','professional data:salary','50000'

Таблицы в hbase также можно создавать, используя Java API (Application Program Interface). За это отвечает Java-класс HBaseAdmin, который в конструктор принимает параметр конфигурации класса Configuration:

Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);

Для создания таблицы необходимо также определить дескриптор для семейства столбцов (для возможности добавления новых столбцов), а также дескриптор самой таблицы, содержащий ее название:

//дескриптор таблицы
HTableDescriptor table = new HTableDescriptor(toBytes("Table name"));
//дескриптор семейства столбцов
HColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));
//добавление столбцов в созданный объект таблицы
table.addFamily(family);

Для завершения создания таблицы необходимо вызвать метод createTable() [3]:

admin.createTable(table);

Таким образом, благодаря своей архитектуре, hbase может вести обработку Big Data в распределенной среде без потерь и с весьма высокой скоростью. Именно поэтому hbase является неотъемлемой частью экосистемы Hadoop, являющейся универсальным решением для организации обработки Big Data.

Больше подробностей про применение Apache Hbase в проектах анализа больших данных вы узнаете на практических курсах по hbase в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

IMPA: CLOUDERA IMPALA DATA ANALYTICS
ADQM: ЭКСПЛУАТАЦИЯ ARENADATA QUICKMARTS
ADBR: Arenadata DB для разработчиков
ADB: Эксплуатация Arenadata DB
HBASE: Администрирование кластера HBase
HIVE: Hadoop SQL администратор Hive
NoSQL: Интеграция Hadoop и NoSQL

Записаться на курс

Смотреть раcписание

Источники

  1. https://habr.com/ru/company/dca/blog/280700/
  2. https://ru.wikipedia.org/wiki/HBase
  3. https://www.tutorialspoint.com/hbase/hbase_create_table.htm