Поиск по сайту:

Как установить и настроить Hive с высокой доступностью — часть 7


Hive — это модель Хранилища данных в экосистеме Hadoop. Он может работать как инструмент ETL поверх Hadoop. Включение высокой доступности (HA) в Hive не похоже на то, что мы делаем в основных службах, таких как Namenode и Resource Manager.

Автоматический переход на другой ресурс не произойдет в Hive (Hiveserver2). Если какой-либо Hiveserver2 (HS2) выйдет из строя, выполнение заданий на этом неисправном HS2 завершится сбоем. Нам необходимо повторно отправить задание, чтобы оно могло выполняться на другом HiveServer2. Таким образом, включение HA в HS2 — это не что иное, как увеличение количества компонентов HS2 в кластере.

В этой статье мы увидим, как установить и включить Высокую доступность Hive.

Требования

  • Лучшие практики по развертыванию сервера Hadoop на CentOS/RHEL 7 — часть 1
  • Настройка необходимых компонентов Hadoop и усиление безопасности – часть 2
  • Как установить и настроить Cloudera Manager в CentOS/RHEL 7 — часть 3
  • Как установить CDH и настроить размещение услуг в CentOS/RHEL 7 — часть 4
  • Как настроить высокую доступность для Namenode – часть 5
  • Как настроить высокую доступность для Resource Manager — часть 6

Давайте начнем…

Установка и настройка улья

1. Войдите в Cloudera Manager по указанному ниже URL-адресу и перейдите к Cloudera Manager –> Добавить службу .

http://13.233.129.39:7180/cmf/home

2. Выберите сервис «Hive».

3. Назначьте службы на узлах.

  • Шлюз – это клиентская служба, через которую пользователь может получить доступ к Hive. Обычно эта служба размещается на узлах Edge, предназначенных для пользователей.
  • Hive Metastore – это центральный репозиторий для хранения метаданных Hive.
  • WebHCat Server – это веб-API для HCatalog и других служб Hadoop.
  • Hiveserver2 – это интерфейс клиентов для выполнения запросов в Hive.

После выбора серверов нажмите «Продолжить», чтобы продолжить.

4. Hive Metastore необходима базовая база данных для хранения метаданных. Здесь мы используем базу данных PostgreSQL по умолчанию, встроенную в CDH.

Нижеуказанные данные базы данных будут введены автоматически, «Проверочное соединение» будет пропущено, поскольку указанная база данных будет создана «на лету». В режиме реального времени нам необходимо создать базу данных во внешней базе данных и проверить соединение, чтобы продолжить работу. После этого нажмите «Продолжить».

5. Настройте каталог Hive Warehouse. /user/hive/warehouse — это путь к каталогу по умолчанию для хранения таблиц Hive. Нажмите «Продолжить».

6. Начинается установка Hive.

7. После завершения установки вы получите статус «Завершено». Нажмите «Продолжить», чтобы продолжить.

8. Установка и настройка Hive успешно завершены. Нажмите «Готово», чтобы завершить процедуру установки.

9. Вы можете увидеть службу Hive, добавленную в Кластер через Панель управления Cloudera Manager.

10. Вы можете просмотреть Hiveserver2 в экземплярах Hive. Мы добавили Hiveserver2 в master1.

Cloudera Manager –> Hive –> Экземпляры –> Hiveserver2.

Включение высокой доступности в Hive

11. Затем добавьте роль Hive, перейдя в Cloudera Manager –> Hive –> Действия –> Добавьте экземпляры ролей.

12. Выберите серверы, на которых вы хотите разместить дополнительный Hiveserver2. Вы можете добавить больше двух, ограничений нет. Здесь мы добавляем дополнительный Hiveserver2 в master2.

13. Выбрав сервер, нажмите «Продолжить».

14. Hiverserver2 будет добавлен в Hive Instances. Вам необходимо запустить его, перейдя в Cloudera Manager. –> Hive –> Экземпляры –> (Выбрать Hiveserver2 добавлено недавно) –> Действие для выбранных –> < Strong>Начать.

15. После запуска Hiveserver2 на master2 вы получите статус «Завершено». Нажмите Закрыть.

16. Вы можете видеть, что оба Hiveserver2 работают.

Проверка доступности улья

Мы можем подключить Hiveserver2 через линию связи, которая представляет собой тонкий клиент и командную строку. Для установления соединения используется драйвер JDBC.

17. Войдите на сервер, на котором работает Hive Gateway.

[tecmint@master1 ~]$ beeline

18. Введите строку подключения JDBC, чтобы подключить Hiveserver2. В этой связи в качестве строки мы упоминаем Hiverserver2 (master2) с номером порта по умолчанию 10000. Эта строка подключения будет подключаться только к Hiveserver2, который работает на master2.

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. Запустите пример запроса.

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

Это встроенная база данных по умолчанию.

20. Используйте приведенную ниже команду, чтобы завершить сеанс Hive.

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. Таким же способом можно подключить Hiveserver2, работающий на master2.

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. Мы можем подключить Hiveserver2 в режиме Zookeeper Discovery. В этом методе нам не нужно упоминать Hiveserver2 в строке подключения, вместо этого мы используем Zookeeper для обнаружения доступного Hiveserver2.

Здесь мы можем использовать сторонний балансировщик нагрузки для балансировки нагрузки между доступными Hiverserver2. Приведенная ниже конфигурация необходима для включения Режима обнаружения Zookeeper, перейдя в Cloudera Manager –> Hive –> Конфигурация.

24. Затем найдите свойство «Фрагмент расширенной конфигурации HiveServer2» и щелкните символ +, чтобы добавить свойство ниже.

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. После ввода свойства нажмите «Сохранить изменения».

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

27. Нажмите «Перезапустить устаревшие».

28. Доступны два варианта. Если кластер находится в активной эксплуатации, нам нужно отдать предпочтение последовательному перезапуску, чтобы минимизировать простои. Поскольку мы устанавливаем новую версию, мы можем выбрать второй вариант «Повторно развернуть конфигурацию клиента» и нажать «Перезагрузить сейчас».

29. После успешного завершения перезапуска вы получите статус «Завершено». Нажмите «Готово», чтобы завершить процесс.

30. Теперь мы подключим Hiveserver2, используя режим Zookeeper Discovery. В соединении JDBC — строка, которая нам нужна для использования серверов Zookeeper с номером порта 2081. Соберите серверы Zookeeper, перейдя в Cloudera Manager –> Zookeeper –> Экземпляры –> (Запишите имена серверов).

Это три сервера, на которых установлен Zookeeper, 2181 — номер порта.

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. Теперь войдите в Билайн.

[tecmint@master1 ~]$ beeline

32. Введите строку подключения JDBC, как указано ниже. Мы должны упомянуть Режим обнаружения служб и Пространство имен Zookeeper. «hiveserver2» — это пространство имен по умолчанию для Hiveserver2.

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. Теперь сеанс подключен к Hiveserver2, работающему на master1. Запустите образец запроса для проверки. Используйте команду ниже, чтобы создать базу данных.

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. Используйте команду ниже, чтобы просмотреть базу данных.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. Теперь мы проверим высокую доступность в режиме обнаружения Zookeeper. Перейдите в Cloudera Manager и остановите Hiveserver2 на master1, который мы тестировали выше.

Cloudera Manager –> Hive –> Экземпляры –> (выберите Hiveserver2 на master1 ) –> Действие для выбранного –> Стоп.

36. Нажмите кнопку «Стоп». После остановки вы получите статус «Завершено». Проверьте Hiveserver2 на master1, перейдя в Hive –> Экземпляры.

37. Подключитесь к beeline и подключите Hiveserver2, используя ту же строку подключения JDBC, что и Zookeeper Discovery. Режим, как мы это делали в предыдущих шагах.

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

Теперь вы будете подключены к Hiveserver2, работающему на master2.

38. Подтвердите это с помощью примера запроса.

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

Заключение

В этой статье мы подробно рассмотрели, как использовать модель Хранилище данных Hive в нашем кластере с высокой доступностью. В производственной среде реального времени более трех Hiveserver2 будут размещены с включенным режимом обнаружения Zookeeper.

Здесь все Hiveserver2 регистрируются в Zookeeper в общем пространстве имен. Zookeeper динамически обнаруживает доступный Hiveserver2 и устанавливает сеанс Hive.