Apache Ambari

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:09, 14 января 2019.
Apache Ambari
Apache-ambari-project.png
Разработчики: Apache Software Foundation, Cloudsoft
Выпущена: November 2013; 6 years ago (2013-11)
Постоянный выпуск: 2.4.2 / 29 November 2016 года; 3 years ago (2016-11-29)
Предыдущий выпуск: 2.4.1 / September 2016; 3 years ago (2016-09)
Состояние разработки: Active
Написана на: Java, JavaScript и Python
Операционная система: Linux
Размер дистрибутива: 49 МБ
Веб-сайт ApacheAmbari

Apache Ambari - это программный продукт компании Apache Software Foundation [Источник 1], нацеленный на упрощение работы с Hadoop при помощи разработанного программного обеспечения для управления и контроля кластеров Apache Hadoop. Ambari предоставляет пользовательский интерфейс и управление им при помощи собственного RESTful API. Изначально Ambari был дополнительным продуктом Hadoop, но в данный момент это один из основных продуктов Apache с собственной лицензией.

Обзор

Ambari позволяет системным администраторам обеспечивать работу, управлять и контролировать кластер Hadoop, а также интегрировать Hadoop с существующей корпоративной инфраструктурой:

  • Обеспечение работоспособности
    • Ambari обеспечивает пошаговую установку сервисов Hadoop для любого количества хостов
    • Ambari поддерживает конфигурации сервисов Hadoop для кластера
  • Управление кластером Hadoop
    • Ambari обеспечивает централизованное управление запуском, остановкой и конфигурацией сервисов Hadoop для всего кластера
  • Контроль кластера Hadoop
    • Ambari предоставляет доступ к панели контроля состояния кластера Hadoop
    • Ambari запускает систему измерений Ambari для записи измерений
    • Ambari запускает фреймворк сигналов Ambari для системных оповещений (ядро вышло из строя, недостаточно свободного дискового пространства и др.).
  • Интеграция Hadoop
    • Интеграция возможностей Hadoop для ваших приложений при помощи REST API

Архитектура

Высокоуровневая архитектура Apache Ambari представлена на рисунке 1. Ambari состоит из двух основных компонентов: сервера (Ambari Server) и агентов (Agents).

Рисунок 1 – Верхнеуровневая архитектура Ambari

Агенты

Агенты каждые несколько секунд отправляют запрос (heartbeat) мастеру, в ответе запроса они получают команды от мастера. Такие запросы - это единственный способ мастера отправить команду агентам.

Полученная команда помещается в очередь, называемую очередь заданий (action queue). Задачи из нее получает исполнитель задач (action executioner). Исполнитель задач подбирает правильный инструмент для выполнения (Puppet, Python, и т.д.) в зависимости от типа команды и типа задачи. Таким образом задачи, полученные в ответе на запрос, будут обработаны агентом асинхронно. Исполнитель задач помещает сообщения о процессе выполнения задачи в очередь сообщений (message queue). Затем агент все сообщения, лежащие в очереди, отправит мастеру в следующем запросе.

Описанная архитектура агента Ambari показана на рисунке 2.

Рисунок 2 – Архитектура Ambari Agent

Сервер Ambari

Запросы на сервер попадают с помощью API. Сперва каждому запросу генерируется уникальный request id, затем в Координаторе (Coordinator) для пришедшего в запросе API вызывается обработчик (handler).

Обработчик API реализует шаги, необходимые для выполнения запрошенного API. Например, в случае добавления нового сервиса к существующему кластеру такими шагами будет: установить все компоненты сервиса вместе с необходимыми зависимостями (prerequisites), запустить их в специальном порядке и перенастроить сервер Nagios, чтобы добавить новый сервис к мониторингу.

Координатор может обращаться к Трекеру Зависимостей (Dependency Tracker), чтобы найти полный набор компонентов и их необходимые состояния. Затем Координатор передает список компонентов и их состояния в Планировщик Этапов (Stage Planner). Планировщик Этапов возвращает поэтапную последовательность операций, которые необходимо произвести на каждой ноде, на которой переданные компоненты будут установлены/запущены/изменены. Планировщик Этапов также генерирует манифест (список задач для каждой отдельной ноды для каждого отдельного этапа), используя Генератор Манифеста (Manifest Generator).

Затем Координатор передает упорядоченный список этапов и request id в Менеджер Задач (Action Manager).

Менеджер Задач обновляет в FSM состояние каждой ноды и ее компонентов, что будет обозначать, что операция в состоянии выполнения. Важно, что FSM обновляется для каждой затронутой ноды. На этой стадии FSM может обнаружить недействительное программное событие и бросить ошибку, что прервет выполнение операции и все задачи будут помечены как упавшие с ошибкой.

Дальше Менеджер Задач для каждой операции создает идентификатор action id и добавляет его в план. Менеджер Задач выберет первый этап из плана и все действия этого этапа добавит в очередь каждой затронутой ноды. Когда с первым этапом будет закончено, Менеджер Задач перейдет к следующему и так до конца. Для запланированных задач запускается таймер.

Обработчик Запросов (Heartbeat Handler) получит запрос на выполнение задачи и уведомит об этом Менеджер Задач. Затем Менеджер Задач отправит в FSM событие, чтобы обновить его состояние. В случае таймаута, задача будет запланирована на выполнение заново или помечена как завершившаяся с ошибкой. Когда все ноды, затронутые для задачи, достигнут состояния выполнения (придет ответ или наступит время финального таймаута), задача будет считаться выполненной. И когда все задачи этапы будут завершены, этап будет считаться выполненным.

Завершение задачи также записывается в базе данных. Затем Менеджер Задач переходит к следующему этапу, и все повторяется.

Описанная архитектура сервера Ambari показана на рисунке 3.

Рисунок 3 – Архитектура Ambari Server

Установка

Ниже описана инструкция, как поставить кластер из виртуальных машин на локальной машине с помощью Ambari.

Установка виртуальных машин

Понадобится установленные VirtualBox и Vagrant.

Необходимо склонировать репозиторий “ambari-vagrant” из GitHub:

git clone https://github.com/u39kun/ambari-vagrant.git

Отредактируйте /etc/hosts на своем компьютере, чтобы можно было разрешать имена хостов на виртуальных машинах:

sudo -s 'cat ambari-vagrant/append-to-etc-hosts.txt >> /etc/hosts'

Скопируйте приватный ключ в удобную для вас папку, чтобы его было легко загрузить в Ambari Web.

vagrant

Комманда выше выводит использованные команды, а также создает приватный ключ ~/.vagrant.d/insecure_private_key. [Источник 2]

Запуск виртуальных машин

Измените текущую директорию на ambari-vagrant:

cd ambari-vagrant

В ней будут лежать папки для разных ОС. Используйте "cd" в папку той ОС, которую хотите использовать. Рекомендуемая ОС - centos6.8, так как она запускается быстрее других. Теперь можно запустить виртуальные машины с помощью команды:

cd centos6.8
cp ~/.vagrant.d/insecure_private_key .
./up.sh <# of VMs to launch>

Например, up.sh 3 запускает 3 виртуальные машины. Используя Vagrantfile, можно указать для запуска до 10 машин (на самом деле можно указать и больше, но только в случае если ваш компьютер способен на это).

FQDN всех виртуальных машин будет: <os-code>[01-10].ambari.apache.org, где <os-code> это или c59 (CentOS 5.9), или c68 (CentOS 6.8), и так далее. Например, c5901.ambari.apache.org, c6801.ambari.apache.org, и т.д.

IP адресс виртуальных машин будет: 192.168.<os-subnet>.1[01-10], где <os-subnet> это 59 для CentOS 5.9, 68 для CentOS 6.8, и т.д. Например, 192.168.59.101, 192.168.64.101, и т.д.

Тест Ambari

Если это ваше первое использование vagrant команды, запустите:

vagrant init

Зайдите в виртуальную машину:

vagrant ssh c6801

Важно, что эта команда логинит вас как пользователя vagrant.

Когда вы залогинетесь, введите, чтобы стать пользователем root:

sudo su -

Чтобы установить Ambari, можно собрать бинарные файлы самому из исходных файлов[Источник 3] или использовать публичные бинарные файлы.

В этой инструкции используется публичный бинарный файл, созданный с помощью Hortonworks, коммерческого поставщика Hadoop. [Источник 2]

 # CentOS 6 (for CentOS 7, replace centos6 with centos7 in the repo URL)
 # 
 # to test public release 2.5.1
wget -O /etc/yum.repos.d/ambari.repo http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.5.1.0/ambari.repo
yum install ambari-server -y
  
# Ubuntu 14 (for Ubuntu 16, replace ubuntu14 with ubuntu16 in the repo URL)
# to test public release 2.5.1
wget -O /etc/apt/sources.list.d/ambari.list http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.5.1.0/ambari.list
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD
apt-get update
apt-get install ambari-server -y
  
 # SUSE 11 (for SUSE 12, replace suse11 with suse12 in the repo URL)
 # to test public release 2.5.1
 wget -O /etc/zypp/repos.d/ambari.repo http://public-repo-1.hortonworks.com/ambari/suse11/2.x/updates/2.5.1.0/ambari.repo
 zypper install ambari-server -y

Ambari предлагает много опций для установки, но для быстроты можно воспользоваться настройками по умолчанию, использовав команды:

ambari-server setup -s
ambari-server start

Когда сервер Ambari запустится, в браузере необходимо зайти по ссылке: http://c6801.ambari.apache.org:8080 (урл зависит от ОС, которая выбиралась выше). Важно, что для полного запуска серверу Ambari может потребоваться некоторое время, так что необходимо будет перезагружать страницу пока не появится страница логина. [Источник 2]

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

Затем надо будет перейти на страницу опций установки (Install Options), используя полное имя домена виртуальных машин, например:

c6801.ambari.apache.org
c6802.ambari.apache.org
c6803.ambari.apache.org

Вместо этого можно использовать выражение:

c68[01-03].ambari.apache.org

На странице необходимо указать пользователя vagrant, который не является суперпользователем, и загрузить файл insecure_private_key, который ранее был скопирован как приватный ключ.

Далее на странице будут показаны инструкции по установке кластера.

Когда захотите закончить тестирование, используйте команду удаления виртуальных машин:

vagrant destroy -f

Источники

  1. Ambari // Website. URL: https://ambari.apache.org (дата обращения: 18.12.2018)
  2. 2,0 2,1 2,2 Apache Ambari Wiki // Website. URL: https://cwiki.apache.org/confluence/display/AMBARI/Quick+Start+Guide (дата обращения: 19.12.2018)
  3. Ambari Development // Website. URL: https://cwiki.apache.org/confluence/display/AMBARI/Ambari+Development (дата обращения: 19.12.2018)

Ссылки