Як встановити HBase на Ubuntu: Покрокова інструкція

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

Встановлення HBase на Ubuntu працює у трьох режимах — автономному, псевдорозподіленому та повністю розподіленому — охоплюючи завантаження tar-архіву випуску, редагування hbase-env.sh та hbase-site.xml, запуск демонів та виправлення поширених помилок запуску.

  • 🧩 Режими встановлення: Автономний режим працює в одній JVM на локальній файловій системі; розподілені режими зберігають дані в Hadoop HDFS.
  • (І.Е. завантажити: Отримайте бінарний tar-архів HBase з сайту Apache HBase та розпакуйте його у свій домашній каталог.
  • Конфігурація: Встановіть JAVA_HOME та HBASE_HOME, потім визначте каталоги hbase.rootdir та ZooKeeper у hbase-site.xml.
  • ▶ ゚ Стартап: Запустіть start-hbase.sh, підтвердіть HMaster за допомогою jps, а потім відкрийте інтерактивний запит за допомогою оболонки hbase.
  • 🌐 Псевдорозподілений: Вкажіть hbase.rootdir на HDFS, увімкніть hbase.cluster.distributed та встановіть кворум ZooKeeper і порт клієнта.
  • 🩹 Вирішення проблем: Вирішіть помилки region-server, ZooKeeper кворуму, кореневого каталогу та часу очікування сеансу, редагуючи hosts та hbase-site.xml.

Як встановити Apache HBase на Ubuntu в автономному, псевдорозподіленому та повністю розподіленому режимах

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

Режими встановлення Apache HBase

Apache HBase можна встановити в трьох режимах. Особливості цих режимів описано нижче.

1) Установка в автономному режимі (без залежності від системи Hadoop)

  • Це режим HBase за замовчуванням.
  • Він працює з локальною файловою системою.
  • Він не використовує Hadoop HDFS.
  • Може працювати лише демон HMaster.
  • Не рекомендується для виробничого середовища.
  • Працює в одній JVM.

2) Встановлення псевдорозподіленого режиму (система Hadoop з одним вузлом + встановлення HBase)

  • Це триває Hadoop HDFS.
  • Усі демони працюють на одному вузлі.
  • Рекомендовано для виробничого середовища.

3) Повністю розподілена інсталяція (багатовузолове середовище Hadoop + інсталяція HBase)

  • Це триває Hadoop HDFS.
  • Усі демони працюють на всіх вузлах, присутніх у кластері.
  • Настійно рекомендується для виробничого середовища.

Щодо встановлення Hadoop, зверніться до цього Посібник з встановлення Hadoop.

На наведених нижче знімках екрана використовується HBase 1.1.2. Поточні стабільні випуски – це серії HBase 2.5.x та 2.6.x (Java 8 або 11), але кроки встановлення та файли конфігурації залишаються по суті тими ж самими.

Як завантажити стабільну версію файлу HBase tar

Крок 1) Перейдіть до Офіційна сторінка завантажень Apache HBase щоб завантажити HBase. Відкриється веб-сторінка завантажень, як показано нижче.

Сторінку завантаження Apache HBase, відкриту в браузері, щоб отримати tar-архів випуску

Крок 2) Виберіть стабільну версію, як показано нижче, версію HBase 1.1.2.

Вибір стабільної версії HBase 1.1.2 на сторінці завантаження

Крок 3) Натисніть на hbase-1.1.2-bin.tar.gz. Буде завантажено tar-файл. Скопіюйте tar-файл у місце встановлення.

Натисніть посилання hbase-1.1.2-bin.tar.gz для завантаження tar-файлу.

Як встановити HBase в Ubuntu з автономним режимом

Ось покроковий процес встановлення HBase в автономному режимі в Ubuntu:

Крок 1) Виконайте команду нижче. Помістіть hbase-1.1.2-bin.tar.gz до /home/hduser.

Крок 2) Розпакуйте його, виконавши команду $tar -xvf hbase-1.1.2-bin.tar.gz. Це розпакує вміст і створить hbase-1.1.2 у теці /home/hduser.

Крок 3) Відкрийте hbase-env.sh, як показано нижче, та вкажіть шлях JAVA_HOME у розташуванні, як показано нижче.

Редагування hbase-env.sh для встановлення шляху JAVA_HOME для автономного режиму

Крок 4) Відкрийте файл ~/.bashrc та вкажіть шлях HBASE_HOME, як показано нижче.

export HBASE_HOME=/home/hduser/hbase-1.1.1
export PATH= $PATH:$HBASE_HOME/bin

Оновлений файл ~/.bashrc із записом HBASE_HOME показано нижче.

Додавання шляху HBASE_HOME до файлу bashrc для автономного режиму

Крок 5) Додайте властивості до файлу. Відкрийте hbase-site.xml та помістіть наступні властивості всередину файлу.

hduser@ubuntu$ gedit hbase-site.xml (код, як показано нижче)

<property>

<name>hbase.rootdir</name>

<value>file:///home/hduser/HBASE/hbase</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/HBASE/zookeeper</value>

</property>

Файл hbase-site.xml відкрився в gedit показано нижче.

hbase-site.xml відкрито в gedit з окремими властивостями rootdir та ZooKeeper

Тут ми розміщуємо дві властивості:

  • Один для кореневого каталогу HBase, і
  • Другий для каталогу даних, який відповідає ZooKeeper.

Усі дії HMaster та ZooKeeper вказують на цей hbase-site.xml.

Крок 6) Згадайте IP-адреси. Відкрийте файл hosts, що знаходиться в каталозі /etc., та вкажіть IP-адреси, як показано нижче.

Редагування файлу /etc/hosts для зіставлення IP-адрес машин

Крок 7) Тепер запустіть start-hbase.sh у каталозі hbase-1.1.1/bin, як показано нижче. Потім ви можете перевірити за допомогою команди jps, чи працює HMaster.

Вивід команди jps, що показує, як процес HMaster працює в автономному режимі

Крок 8) Запустіть оболонку HBase. Оболонку HBase можна запустити за допомогою оболонка hbase команду, і вона перейде в інтерактивний режим оболонки, як показано на скріншоті нижче. Після переходу в режим оболонки ми можемо виконувати всі типи команд.

Інтерактивний запит оболонки HBase, запущений командою оболонки hbase

Автономний режим не потребує запуску демонів Hadoop. HBase може працювати незалежно.

Псевдорозподілений режим інсталяції HBase

Це ще один метод встановлення Apache HBase, відомий як псевдорозподілений режим встановлення. Нижче наведено кроки для встановлення HBase за допомогою псевдорозподіленого режиму.

Крок 1) Помістіть hbase-1.1.2-bin.tar.gz до /home/hduser.

Крок 2) Розпакуйте його, виконавши команду $tar -xvf hbase-1.1.2-bin.tar.gz. Це розпакує вміст і створить hbase-1.1.2 у теці /home/hduser.

Крок 3) Відкрийте hbase-env.sh, як показано нижче, вкажіть шлях JAVA_HOME та шлях до регіональних серверів у розташуванні та експортуйте команду, як показано нижче.

Редагування hbase-env.sh з використанням JAVA_HOME та шляху до регіональних серверів для псевдорозподіленого режиму

Крок 4) На цьому кроці ми відкриємо файл ~/.bashrc та вкажемо шлях HBASE_HOME, як показано на скріншоті нижче.

Встановлення шляху HBASE_HOME у файлі bashrc для псевдорозподіленого режиму

Крок 5) Відкрийте hbase-site.xml та вкажіть наведені нижче властивості у файлі (код, як показано нижче).

<property>

<name>hbase.rootdir</name>

<value>hdfs://localhost:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>localhost</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>hbase.zookeeper.property.clientPort</name>

<value>2181</value>

</property>

<property>

<name>hbase.zookeeper.property.dataDir</name>

<value>/home/hduser/hbase/zookeeper</value>

</property>

Файл hbase-site.xml з псевдорозподіленими властивостями показано нижче.

hbase-site.xml з псевдорозподіленими властивостями HDFS та ZooKeeper

Решту конфігурації ZooKeeper показано нижче.

Продовження конфігурації ZooKeeper у форматі hbase-site.xml для псевдорозподіленого режиму

Кожна властивість у файлі відіграє певну роль:

  • Налаштування кореневого каталогу HBase у властивості hbase.rootdir.
  • Для розподіленої конфігурації hbase.cluster.distributed має бути встановлено на значення true.
  • Тут слід налаштувати властивість кворуму ZooKeeper.
  • Реплікація налаштовується у властивості dfs.replication. За замовчуванням ми встановлюємо значення реплікації як 1. У повністю розподіленому режимі присутні кілька вузлів даних, тому ви можете збільшити реплікацію, встановивши значення більше за 1 у властивості dfs.replication.
  • Порт клієнта слід згадати у властивості hbase.zookeeper.property.clientPort.
  • Каталог даних ZooKeeper можна згадати у властивості hbase.zookeeper.property.dataDir.

Крок 6) Спочатку запустіть демони Hadoop, а потім демони HBase, як показано нижче. Спочатку потрібно запустити демони Hadoop за допомогою команди ./start-all.sh, як показано нижче.

Виконання команди start-all.sh для запуску демонів Hadoop

Після цього запустіть демони HBase за допомогою hbase-start.sh, як показано нижче.

Запуск демонів HBase за допомогою скрипта start-hbase.sh у псевдорозподіленому режимі

Тепер перевірте запущені процеси за допомогою команди jps, як показано нижче.

Вивід команди jps зі списком запущених демонів Hadoop та HBase

Встановлення HBase у повністю розподіленому режимі

Повністю розподілений режим розширює псевдорозподілене налаштування на реальний кластер.

  • Ця конфігурація працює в режимі кластера Hadoop, де в кластері з'являються та працюють кілька вузлів.
  • Інсталяція така ж, як і в псевдорозподіленому режимі; єдина відмінність полягає в тому, що вона буде запускатися на кількох вузлах.
  • Файли конфігурації, згадані в hbase-site.xml та hbase-env.sh, такі ж, як і в псевдорежимі.

У повністю розподіленому режимі переконайтеся, що версія Hadoop на вашому кластері відповідає бібліотекам Hadoop, що постачаються з HBase, щоб демони правильно взаємодіяли.

Усунення несправностей встановлення HBase

1) Постановка проблеми: Головний сервер ініціалізується, але регіональні сервери не ініціалізуються.

Зв'язок між головним сервером та регіональними серверами відбувається через їхні IP-адреси. Головний сервер прослуховує регіональні сервери, які працюють або мають IP-адресу 127.0.0.1. IP-адреса 127.0.0.1 – це локальний хост, який відповідає власному локальному хосту головного сервера.

Причина:

У подвійному зв'язку між регіональними серверами та головним сервером, регіональний сервер постійно інформує головний сервер, що його IP-адреса — 127.0.0.1.

Рішення:

  • Видаліть вузол "Ім'я головного сервера" із запису локального хоста, який присутній у файлі hosts.
  • Розташування файлу хоста: /etc/hosts.

Що змінити:

Відкрийте /etc/hosts та перейдіть до цього місця.

127.0.0.1 fully.qualified.regionservernameregionservername localhost.localdomain localhost
: : 1              localhost3.localdomain3 localdomain3

Змініть наведену вище конфігурацію, як зазначено нижче (видаліть назву сервера регіону, як зазначено вище).

127.0.0.1    localhost.localdomainlocalhost
: : 1 localhost3.localdomain3 localdomain3

2) Опис проблеми: Не вдалося знайти мою адресу: XYZ у списку кворум-серверів ZooKeeper

Причина:

  • Сервер ZooKeeper не зміг запуститися, і в назві сервера виникає помилка, наприклад, .xyz.
  • HBase намагається запустити сервер ZooKeeper на комп'ютері, але водночас комп'ютер не може знайти себе в конфігурації кворуму, що присутня в конфігурації hbase.zookeeper.quorum.

Рішення:

  • Замініть ім'я хоста на ім'я хоста, яке наведено в повідомленні про помилку.
  • Якщо у вас є DNS-сервер, ви можете встановити наведені нижче конфігурації у файлі hbase-site.xml: hbase.zookeeper.dns.interface та hbase.zookeeper.dns.nameserver.

3) Постановка проблеми: Створено кореневий каталог для HBase через Hadoop DFS

  • Майстер каже, що вам потрібно запустити скрипт міграції HBase.
  • Після запуску цього скрипт міграції HBase відповідає, що в кореневому каталозі немає файлів.

Причина:

  • Для HBase було створено новий каталог за допомогою розподіленої файлової системи Hadoop.
  • Тут HBase очікує двох можливостей:

1) Кореневий каталог не існує.

2) Попередній запущений екземпляр HBase було ініціалізовано раніше.

Рішення:

  • Переконайтеся, що кореневий каталог HBase наразі не існує або був ініціалізований попереднім запуском екземпляра HBase.
  • Як частину рішення, виконайте такі кроки.

Крок 1) Використайте Hadoop dfs для видалення кореневого каталогу HBase.

Крок 2) HBase самостійно створює та ініціалізує каталог.

4) Постановка проблеми: події закінчення терміну дії сеансу ZooKeeper

Причина:

  • Сервери HMaster або HRegion завершили роботу, викликавши винятки.
  • Якщо ви переглянете журнали, ви зможете дізнатися про фактичні винятки, які були викинуті.

Нижче показано виняток, що виник через подію "Термін дії ZooKeeper" (або "Термін дії ZooKeeper"). Виділені події – це деякі з винятків, що сталися у файлі журналу.

Код файлів журналів, як показано нижче:

WARN org.apache.zookeeper.ClientCnxn: Exception
closing session 0x278bd16a96000f to sun.nio.ch.SelectionKeyImpl@355811ec

java.io.IOException: TIMED OUT	
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:906)
WARN org.apache.hadoop.hbase.util.Sleeper: We slept 79410ms, ten times longer than scheduled: 5000
INFO org.apache.zookeeper.ClientCnxn: Attempting connection to server hostname/IP:PORT
INFO org.apache.zookeeper.ClientCnxn: Priming connection to java.nio.channels.SocketChannel[connected local=/IP:PORT remote=hostname/IP:PORT]
INFO org.apache.zookeeper.ClientCnxn: Server connection successful
WARN org.apache.zookeeper.ClientCnxn: Exception closing session 0x278bd16a96000d to sun.nio.ch.SelectionKeyImpl@3544d65e

java.io.IOException: Session Expired	 
at org.apache.zookeeper.ClientCnxn$SendThread.readConnectResult(ClientCnxn.java:589)
at org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:709)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:945)
ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expired

Рішення:

  • Розмір оперативної пам’яті за замовчуванням становить 1 ГБ. Для тривалого імпорту підтримуйте обсяг оперативної пам’яті більше 1 ГБ.
  • Збільште час очікування сеансу для ZooKeeper.
  • Щоб збільшити час очікування сеансу ZooKeeper, змініть наступну властивість у файлі hbase-site.xml, який знаходиться у шляху до папки hbase/conf.
  • Тайм-аут сеансу за замовчуванням становить 60 секунд. Ви можете змінити його на 120 секунд, як зазначено нижче.
<property>
    <name> zookeeper.session.timeout </name>
    <value>1200000</value>
</property>
<property>
    <name> hbase.zookeeper.property.tickTime </name>
    <value>6000</value>
</property>

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

HBase потребує підтримуваного Java виконання з встановленим JAVA_HOME. Псевдорозподілений та повністю розподілений режими також потребують запуску Hadoop HDFS кластер. Автономному режиму потрібні лише Java, оскільки він використовує локальну файлову систему та постачає власний ZooKeeper.

Не для автономного режиму, який працює на локальній файловій системі в одній JVM без демонів Hadoop. Псевдорозподілений та повністю розподілений режими вимагають Hadoop, оскільки вони зберігають дані в HDFS та залежать від його NameNode та DataNodes.

Відредагуйте conf/hbase-env.sh та додайте рядок export JAVA_HOME=/path/to/your/jdk, який вказує на корінь JDK. HBase зчитує це значення під час запуску. Ви також можете експортувати JAVA_HOME в ~/.bashrc, щоб оболонка знайшла Java глобально

У цьому посібнику показано HBase 1.1.2, але поточні стабільні випуски належать до лінійок HBase 2.5.x та 2.6.x, причому 3.0 знаходиться в бета-версії. Для новіших версій потрібно Java 8 або 11. Кроки завантаження, налаштування та запуску залишаються по суті тими ж самими.

Виконайте команду jps та знайдіть процес HMaster, а також HRegionServer та HQuorumPeer у розподілених режимах. Ви також можете відкрити веб-інтерфейс HBase Master або запустити status всередині оболонка hbase щоб підтвердити, що кластер працює.

За замовчуванням головний сервер HBase прослуховує порт 16000 з веб-інтерфейсом на 16010, а кожен сервер регіону використовує порт 16020 з інтерфейсом користувача на 16030. ZooKeeper прослуховує клієнтський порт 2181, який встановлюється через hbase.zookeeper.property.clientPort.

Помічники штучного інтелекту та інструменти аналізу журналів машинного навчання сканують журнали HBase та ZooKeeper, кластеризують їх та виявляють першопричину помилок, таких як закінчення терміну дії сеансу або збої кворуму. Вони пропонують виправлення конфігурації, хоча інженер повинен підтвердити кожну зміну перед її застосуванням.

Так. Копілот GitHub створює фрагменти hbase-site.xml, записи hbase-env.sh та сценарії запуску оболонки з короткого коментаря. RevПерегляньте його пропозиції щодо правильних назв властивостей, шляхів та портів, перш ніж запускати їх, оскільки згенерована конфігурація може посилатися на застарілі значення за замовчуванням.

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