HBase Architecture: варианты использования, компоненты и модель данных

⚡ Умное резюме

Архитектура HBase построена на основе четырех координирующих компонентов — HMaster, серверов регионов, ZooKeeper и HDFS — которые хранят данные в столбцовой модели, разделяют их на регионы и обеспечивают чтение и запись с низкой задержкой.

  • 🧭 HMaster: Назначает регионы серверам регионов, обрабатывает балансировку нагрузки и отказоустойчивость, а также управляет изменениями схемы и метаданных.
  • 🇧🇷 Региональные серверы: Обрабатывайте запросы клиентов на чтение и запись, размещайте регионы и разделяйте регионы по мере роста объёма данных.
  • 🧱 Регионы и магазины: В каждом регионе хранится одно хранилище для каждого семейства столбцов, сформированное из MemStore в оперативной памяти и HFiles на диске.
  • 🔗 Работник зоопарка: Координирует кластер, tracks-серверы отключаются и поддерживают конфигурацию кворума, используемую клиентами для подключения.
  • 🧮 Модель данных: В таблицах группируются семейства столбцов и строки, а ключ строки выступает в качестве первичного ключа для каждого доступа.
  • HBase против HDFS: HBase добавляет поддержку пакетного хранения данных в HDFS, обеспечивая чтение и запись с низкой задержкой по случайному принципу.

Архитектура HBase с ее компонентами, моделью данных и потоками чтения и записи данных.

Apache HBase — это распределенная столбцово-ориентированная NoSQL-база данных, работающая поверх... Hadoop а также распределенная файловая система Hadoop (HDFS). Ее архитектура объединяет координирующий главный сервер, региональные серверы и ZooKeeper для хранения очень больших таблиц и обеспечения быстрой произвольной операции чтения и записи.

HBase ArchiТекстура и ее важные компоненты

Архитектура HBase включает следующие основные компоненты:

  • Хмастер
  • HRegionServer
  • HRрегионы
  • Работник зоопарка
  • HDFS

Ниже представлена ​​подробная архитектура HBase с указанием ее компонентов, как показано на диаграмме.

Схема архитектуры HBase, показывающая HMaster, региональные серверы, ZooKeeper и HDFS.

Хмастер

HMaster в HBase — это реализация главного сервера в архитектуре HBase. Он выступает в качестве агента мониторинга, отслеживающего все экземпляры серверов регионов, присутствующие в кластере, и служит интерфейсом для всех изменений метаданных. В распределенной кластерной среде главный сервер работает на NameNode. Главный сервер запускает несколько фоновых потоков.

В HBase роль HMaster выполняет, в частности, следующие функции:

  • Играет жизненно важную роль с точки зрения производительности и обслуживания узлов в кластере.
  • HMaster обеспечивает производительность администратора и распределяет услуги по серверам разных регионов.
  • HMaster назначает регионы региональным серверам.
  • HMaster управляет балансировкой нагрузки и переключением при сбоях для обработки нагрузки на узлы, присутствующие в кластере.
  • Когда клиент хочет изменить какую-либо схему или выполнить какие-либо операции с метаданными, HMaster берет на себя ответственность за эти операции.

Некоторые из методов, предоставляемых интерфейсом HMaster, в первую очередь ориентированы на метаданные:

  • Таблица (createTable, RemoveTable, включить, отключить)
  • ColumnFamily (добавление столбца, изменение столбца)
  • Регион (переместить, назначить)

Клиент осуществляет двустороннюю связь как с HMaster, так и с ZooKeeper. Для операций чтения и записи он напрямую обращается к серверам HRegion. HMaster назначает регионы серверам регионов и, в свою очередь, проверяет состояние работоспособности серверов регионов.

Вся архитектура включает в себя несколько региональных серверов. На региональных серверах находится HLog, в котором хранятся все файлы журналов.

Серверы региона HBase

Когда сервер регионов HBase получает запросы на запись и чтение от клиента, он назначает запрос конкретному региону, где фактически находится семейство столбцов. Клиент может напрямую связываться с серверами регионов; для связи с серверами регионов клиенту не требуется обязательное разрешение HMaster. Клиенту требуется помощь HMaster только в тех случаях, когда необходимы операции, связанные с метаданными и изменениями схемы.

HRegionServer — это реализация сервера регионов. Он отвечает за обслуживание и управление регионами, или данными, хранящимися в распределенном кластере. Серверы регионов работают на узлах данных, входящих в кластер Hadoop.

HMaster может взаимодействовать с несколькими серверами HRegion и выполняет следующие функции:

  • Хостинг и управление регионами
  • Автоматическое разделение регионов
  • Обработка запросов на чтение и запись.
  • Общение с клиентом напрямую

HBase-регионы

Регионы HR являются основными строительными элементами кластера HBase. Они состоят из распределения таблиц и включают в себя семейства столбцов. Регион содержит несколько хранилищ, по одному для каждого семейства столбцов. Он в основном состоит из двух компонентов: MemStore и HFile.

Работник зоопарка

HBase Работник зоопарка ZooKeeper — это централизованный сервер мониторинга, который хранит информацию о конфигурации и обеспечивает распределенную синхронизацию. Распределенная синхронизация координирует работу распределенных приложений в кластере, предоставляя услуги координации между узлами. Если клиент хочет взаимодействовать с регионами, ему сначала необходимо обратиться к ZooKeeper.

Это проект с открытым исходным кодом, предоставляющий множество важных сервисов.

Услуги, предоставляемые ZooKeeper:

  • Поддерживает информацию о конфигурации.
  • Обеспечивает распределенную синхронизацию
  • Устанавливает связь клиента с региональными серверами.
  • Предоставляет временные узлы, представляющие серверы разных регионов.
  • Позволяет главному серверу использовать эти временные узлы для обнаружения доступных серверов в кластере.
  • TracСбой сервера ks и разделение сети

Главный узел и подчиненные узлы HBase (серверы регионов) регистрируются в ZooKeeper. Клиенту необходим доступ к конфигурации кворума ZooKeeper (ZK) для подключения к главному узлу и серверам регионов.

В случае отказа нескольких узлов в кластере HBase, кворум ZooKeeper выдает сообщения об ошибках и начинает восстановление вышедших из строя узлов.

HDFS

HDFS — это распределенная система Hadoop. Файловая системаКак следует из названия, она обеспечивает распределенную среду для хранения данных и представляет собой файловую систему, предназначенную для работы на стандартном оборудовании. Каждый файл хранится в нескольких блоках, а для обеспечения отказоустойчивости блоки реплицируются по всему кластеру Hadoop.

HDFS обеспечивает высокую степень отказоустойчивости и работает на недорогом стандартном оборудовании. Добавление узлов в кластер и выполнение обработки и хранения данных с использованием недорогого стандартного оборудования позволяет клиенту получать лучшие результаты по сравнению с существующей конфигурацией.

Здесь данные, хранящиеся в каждом блоке, реплицируются на 3 узлах, поэтому, если какой-либо узел выйдет из строя, потери данных не произойдет; здесь предусмотрен надлежащий механизм резервного копирования и восстановления.

HDFS взаимодействует с компонентами HBase и хранит большие объемы данных в распределенном режиме.

Модель данных HBase

Модель данных HBase представляет собой набор компонентов, состоящий из таблиц, строк, семейств столбцов, ячеек, столбцов и версий. Таблицы HBase содержат семейства столбцов и строки, элементы которых определены как первичные ключи. Столбец в таблице модели данных HBase представляет собой атрибут объектов.

Модель данных HBase состоит из следующих элементов:

  • Набор столов
  • Каждая таблица с семействами столбцов и строк.
  • В каждой таблице должен быть элемент, определенный как первичный ключ.
  • В HBase ключ строки выступает в качестве первичного ключа.
  • Любой доступ к таблицам HBase осуществляется с использованием этого первичного ключа.
  • Каждый столбец в HBase обозначает атрибут, соответствующий объекту.

Варианты использования HBase

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

Постановка задачи Решение
Телекоммуникационная отрасль сталкивается со следующими техническими проблемами: хранение миллиардов записей в журналах CDR (Call Detail Record), генерируемых телекоммуникационным доменом; обеспечение доступа к журналам CDR и платежной информации клиентов в режиме реального времени; и предоставление экономически эффективного решения по сравнению с традиционными системами баз данных. HBase используется для хранения миллиардов строк подробных записей вызовов. Если в существующую базу данных РСУБД будет добавляться 20 ТБ данных в месяц, производительность ухудшится. Для обработки большого объема данных в этом случае лучшим решением является HBase. HBase выполняет быстрые запросы и отображает записи.
Банковская отрасль ежедневно генерирует миллионы записей. Кроме того, банковской отрасли необходимо аналитическое решение, способное выявлять мошенничество в денежных операциях. Для хранения, обработки и обновления огромных объемов данных, а также для проведения аналитики идеальным решением является HBase, интегрированный с несколькими компонентами экосистемы Hadoop.

Помимо этого, можно использовать HBase:

  • Всякий раз, когда возникает необходимость в приложениях, интенсивно использующих запись данных.
  • Для проведения онлайн-анализа логов и создания отчетов о соответствии требованиям.

Механизм хранения в HBase

HBase — это столбцово-ориентированная база данных, данные в которой хранятся в таблицах. Таблицы сортируются по RowId. Как показано ниже, в HBase есть RowId, представляющий собой набор нескольких семейств столбцов, присутствующих в таблице.

В схеме присутствуют семейства столбцов, представляющие собой пары ключ-значение. Если присмотреться, каждое семейство столбцов содержит несколько столбцов. Значения столбцов хранятся в дисковой памяти. Каждая ячейка таблицы имеет свои собственные метаданные, такие как метка времени и другая информация.

Ниже показана столбцовая схема хранения данных с ключами строк, семействами столбцов и ячейками.

Механизм хранения HBase, отображающий ключ строки, семейства столбцов, столбцы и ячейки.

Ниже приведены ключевые термины, описывающие схему таблицы HBase:

  • Таблица: Набор имеющихся строк.
  • Строка: Набор семейств столбцов.
  • Семейство колонок: Коллекция колонок.
  • Столбец: Набор пар ключ-значение.
  • Пространство имен: Логическая группаping столов.
  • Ячейка: кортеж {строка, столбец, версия}, точно определяющий определение ячейки в HBase.

Столбцово-ориентированные и строкоориентированные хранилища

Столбцово-ориентированные и построчно-ориентированные хранилища данных различаются по механизму хранения. Как известно, традиционные реляционные модели хранят данные в построчном формате, то есть в виде строк данных. Столбцово-ориентированные хранилища хранят таблицы данных в виде столбцов и семейств столбцов.

В таблице ниже приведены некоторые ключевые различия между этими двумя типами хранилищ.

Столбцовая база данных Построчно-ориентированная база данных
Используется в ситуациях, требующих обработки и анализа данных, например, в онлайн-аналитической обработке и ее приложениях. В системах онлайн-транзакций, таких как банковская и финансовая сферы, используется именно этот подход.
Объем данных, которые можно хранить в этой модели, очень велик, исчисляется петабайтами. Он рассчитан на небольшое количество строк и столбцов.

Объяснение чтения и записи данных HBase

Операции чтения и записи с клиентского устройства в HFile показаны на диаграмме ниже.

Поток данных для чтения и записи в HBase между клиентом, сервером регионов, MemStore и HFile.

Шаг 1) Клиент хочет записать данные и, в свою очередь, сначала взаимодействует с сервером регионов, а затем с регионами.

Шаг 2) Регион обращается к MemStore для хранения данных, связанных с семейством столбцов.

Шаг 3) Сначала данные сохраняются в MemStore, где они сортируются, а затем записываются в HFile. Основная причина использования MemStore — хранение данных в распределенной файловой системе на основе ключа строки. MemStore размещается в оперативной памяти сервера регионов, а HFile записываются в HDFS.

Шаг 4) Клиент хочет считать данные из регионов.

Шаг 5) В свою очередь, клиент получает прямой доступ к MemStore и может запрашивать данные.

Шаг 6) Клиент обращается к HFiles для получения данных. Данные извлекаются и обрабатываются клиентом.

MemStore хранит изменения, внесенные в память. Иерархия объектов в регионах HBase, сверху вниз, показана в таблице ниже.

Таблица Таблица HBase присутствует в кластере HBase
Регион HRegions для представленных таблиц
Магазин Для каждого региона таблицы хранится по одному хранилищу на каждый столбец семейства.
MemStore Для каждой таблицы используется MemStore, предназначенный для каждого региона. Он сортирует данные перед записью в HFiles. Благодаря сортировке повышается производительность записи и чтения.
StoreFile StoreFiles для каждого магазина для каждого региона таблицы
Заблокировать Блоки присутствуют внутри StoreFiles

HBase против HDFS

HBase работает поверх HDFS и Hadoop. Ключевые различия между HDFS и HBase заключаются в способах обработки и выполнения операций с данными.

HBase HDFS
Операции с низкой задержкой Операции с высокой задержкой
Случайное чтение и запись Напиши один раз, прочитай много раз
Доступ через Команды оболочки, клиентский API в JavaREST, Avro или Thrift Доступ к данным осуществляется преимущественно через MapReduce (MR) работы
Возможно как хранение, так и обработка. Это предназначено только для складских помещений.

В некоторых типичных промышленных ИТ-приложениях операции HBase используются вместе с Hadoop. К таким приложениям относятся операции с данными фондовой биржи и данными онлайн-банкинга, где HBase является наиболее подходящим решением. После того, как ваш кластер будет готов, вы можете чтение и запись данных в HBase or установить HBase на новом узле.

Часто задаваемые вопросы (FAQ)

Да. HBase — это распределенная столбцово-ориентированная база данных NoSQL, созданная на основе Google Bigtable построен на основе HDFS. Он хранит разреженные данные в таблицах, состоящих из семейств столбцов, и не использует фиксированные схемы или SQL-соединения, как реляционные базы данных.

Журнал событий WAL, также называемый HLog, записывает каждую операцию записи на сервере региона до того, как она попадет в MemStore. Он хранится в HDFS, поэтому, если сервер региона выйдет из строя до завершения операции сброса данных, HBase воспроизведет WAL для восстановления несохраненных изменений.

Сжатие объединяет H-файлы для обеспечения высокой скорости чтения. Малое сжатие объединяет несколько небольших смежных H-файлов в один. Большое сжатие перезаписывает все H-файлы семейства столбцов в один файл и физически удаляет удаленные и устаревшие ячейки.

Оба хранилища NoSQL созданы по образцу Bigtable, но HBase работает на HDFS с одним активным HMaster и строгой согласованностью данных, в то время как Cassandra HBase — это система без главного сервера с настраиваемой, в конечном итоге согласованной репликацией. HBase подходит для аналитики Hadoop; Cassandra подходит для постоянной записи.

Разрабатывайте ключи строк таким образом, чтобы операции чтения и записи равномерно распределялись по регионам. Избегайте монотонно возрастающих ключей, которые создают «горячие точки» на одном региональном сервере. Используйте добавление соли, хеширование или обратное преобразование полей, а также делайте ключи короткими, поскольку они повторяются в каждой ячейке.

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

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

Да. Второй пилот GitHub черновики HBase Java Код клиента, команды оболочки и фильтры сканирования из короткого комментария. RevПеред запуском на реальном кластере проверьте правильность его выходных данных, включая имена таблиц, семейства столбцов и классы API, такие как Connection и Table.

Подведем итог этой публикации следующим образом: