HBase Archiтектура: варіанти використання, компоненти та модель даних

⚡ Розумний підсумок

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

  • 🧭 HМайстер: Призначає регіони регіональним серверам, обробляє балансування навантаження та перемикання на резервний архів, а також керує змінами схеми та метаданих.
  • 🗄️ Сервери регіону: Автоматично обслуговувати запити клієнтів на читання та запис, розміщувати регіони та розділяти регіони в міру зростання даних.
  • 🧱 Регіони та магазини: Кожен регіон зберігає одне сховище на сімейство стовпців, побудоване з MemStore в пам'яті та HFiles на диску.
  • 🔗 Оглядач зоопарку: Координує кластер, tracзбої сервера ks та зберігає конфігурацію кворуму, яку клієнти використовують для підключення.
  • 🧮 Модель даних: Таблиці групують сімейства стовпців та рядки, а ключ рядка діє як первинний ключ для кожного доступу.
  • HBase проти HDFS: HBase додає низькозатримкові випадкові операції читання та запису поверх пакетного сховища HDFS.

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

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

HBase Archiструктуру та її важливі компоненти

Архітектура HBase має такі основні компоненти:

  • HMaster
  • Сервер HRegion
  • Регіони
  • ZooKeeper
  • HDFS

Нижче наведено детальну архітектуру HBase з її компонентами, як показано на діаграмі.

Діаграма архітектури HBase, що показує HMaster, регіональні сервери, ZooKeeper та HDFS

HMaster

HMaster в HBase – це реалізація головного сервера в архітектурі HBase. Він діє як агент моніторингу для контролю всіх екземплярів регіонального сервера, присутніх у кластері, та як інтерфейс для всіх змін метаданих. У розподіленому кластерному середовищі головний сервер працює на NameNode. Головний сервер виконує кілька фонових потоків.

Нижче наведено важливі ролі, які виконує HMaster у HBase:

  • Відіграє життєво важливу роль з точки зору продуктивності та підтримки вузлів у кластері.
  • HMaster забезпечує продуктивність адміністратора та розподіляє послуги між серверами різних регіонів.
  • HMaster призначає регіони регіональним серверам.
  • HMaster контролює балансування навантаження та перемикання на резервний комп'ютер для обробки навантаження на вузли, присутні в кластері.
  • Коли клієнт хоче змінити будь-яку схему або операцію з метаданими, HMaster бере на себе відповідальність за ці операції.

Деякі з методів, що надаються інтерфейсом HMaster, є переважно методами, орієнтованими на метадані:

  • Таблиця (createTable, removeTable, enable, disable)
  • ColumnFamily (додати стовпець, змінити стовпець)
  • Регіон (перемістити, призначити)

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

В усій архітектурі ми маємо кілька регіональних серверів. На регіональних серверах присутній HLog, який зберігає всі файли журналів.

Регіональні сервери HBase

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

HRegionServer – це реалізація сервера регіонів. Він відповідає за обслуговування та керування регіонами, або даними, що присутні в розподіленому кластері. Сервери регіонів працюють на вузлах даних, присутніх у кластері Hadoop.

HMaster може зв'язуватися з кількома серверами HRegion та виконує такі функції:

  • Хостинг і управління регіонами
  • Автоматичне поділ регіонів
  • Обробка запитів на читання та запис
  • Безпосереднє спілкування з клієнтом

Регіони HBase

HRegions – це основні будівельні елементи кластера HBase. Вони складаються з розподілу таблиць та сімейств стовпців. Регіон містить кілька сховищ, по одному для кожного сімейства стовпців. Він складається переважно з двох компонентів: MemStore та HFile.

ZooKeeper

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), згенерованих телекомунікаційною сферою; забезпечення доступу до журналів CDR та платіжної інформації клієнтів у режимі реального часу; та забезпечення економічно ефективного рішення порівняно з традиційними системами баз даних. HBase використовується для зберігання мільярдів рядків детальних записів викликів. Якщо 20 ТБ даних додавати на місяць до існуючої бази даних RDBMS, продуктивність погіршиться. Для обробки великої кількості даних у цьому випадку використання 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 розміщується в основній пам'яті регіонального сервера, тоді як HFiles записуються в 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 у Java, REST, Avro або Thrift Доступ переважно здійснюється через MapReduce (MR) вакансії
Можна виконувати як зберігання, так і обробку Це лише для складських приміщень

Деякі типові промислові ІТ-додатки використовують операції HBase разом із Hadoop. До таких додатків належать дані фондової біржі та операції з даними онлайн-банкінгу, де HBase є найкращим рішенням. Щойно ваш кластер буде готовий, ви зможете читання та запис даних у HBase or встановити HBase на свіжому вузлі.

Поширені запитання

Так. HBase — це розподілена, стовпцево-орієнтована база даних NoSQL, змодельована за моделлю Google Bigtable, побудований на основі HDFS. Він зберігає розріджені дані в таблицях сімейств стовпців і не використовує фіксовані схеми або SQL-з'єднання, як реляційна база даних.

WAL, також відомий як HLog, записує кожен запис на регіональному сервері, перш ніж він потрапить до MemStore. Він зберігається на HDFS, тому, якщо регіональний сервер аварійно завершує роботу перед зливом, HBase відтворює WAL, щоб відновити незбережені редагування.

Стиснення об'єднує HFiles для забезпечення швидкого зчитування. Незначне стиснення об'єднує кілька невеликих суміжних HFiles в один. Значне стиснення перезаписує всі HFiles сімейства стовпців в один файл і фізично видаляє видалені та застарілі комірки.

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

Розробляйте ключі рядків таким чином, щоб операції читання та запису рівномірно розподілялися по регіонах. Уникайте монотонно зростаючих ключів, які створюють гарячі точки на одному сервері регіону. Використовуйте соління, хешування або зворотне налаштування полів і робіть ключі короткими, оскільки вони повторюються в кожній клітинці.

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

Інструменти штучного інтелекту та машинного навчання аналізують шаблони запитів та доступу, щоб запропонувати схеми ключів рядків та сімейств стовпців, які уникають гарячих точок. Вони також сканують метрики та журнали Region Server, щоб завчасно виявляти аномалії, такі як перекошені регіони або вузли, що не працюють.

Так. Копілот GitHub чернетки HBase Java клієнтський код, команди оболонки та фільтри сканування з короткого коментаря. Revперегляньте його вивід на наявність правильних назв таблиць, сімейств стовпців та класів API, таких як Connection та Table, перш ніж запускати його на реальному кластері.

Підсумуйте цей пост за допомогою: