Разработка плагина Амбари

Я хотел бы разработать плагин Ambari для развертывания некоторых сервисов (что-то вроде этого https://github.com/tzolov/elasticsearch-yarn-ambari-plugin).

Я хотел бы попросить передовой опыт для разработки/отладки.

В настоящее время мы удаляем и копируем новые файлы в AMBARI_SERVER_SERVICE_PATH/services/, а затем ambari-agent stop && ambari-server stop && ambari-server reset --silent && ambari-server start && ambari-agent start, и я не считаю это хорошим решением.

У вас есть хорошие советы, рекомендации, ссылки?


person Babu    schedule 07.06.2016    source источник


Ответы (1)


Правильный термин — Пользовательская служба Ambari, а не плагин.

Следующая последовательность — лучший подход, который я нашел до сих пор в разработке пользовательских сервисов. Допустим, вы разрабатываете пользовательский сервис «FOO».

1) Извлеките свой сервис foo в стек, для которого вы разрабатываете. Для этого напр. Я предполагаю HDP 2.4:

tar -xzvf foo_service.tgz -C /var/lib/ambari-server/resources/stacks/HDP/2.4/services/FOO

2) Перезапустите амбари-сервер, чтобы принять изменения стека.

sudo ambari-server restart

3) Используйте мастер установки службы пользовательского интерфейса Ambari для установки пользовательской службы.

4) Проведите тестирование и отладку, внесите любые изменения в файлы пользовательских дескрипторов службы.

5) Остановите службу и все ее компоненты с помощью пользовательского интерфейса Ambari.

6) Удалите свой сервис из Ambari, используя что-то похожее на скрипт remove-service.sh ниже.

7) Переустановите модифицированный сервис, начиная с шага 1. Промойте и повторите.

удалить-service.sh:

#!/usr/bin/env bash

host=localhost
cluster=hdp
port=8080
user=admin
password='admin'

echo "Deleting the FOO service..."
curl -i -H "X-Requested-By: ambari" -u $user:$password -X DELETE http://$host:$port/api/v1/clusters/$cluster/services/FOO

ПРИМЕЧАНИЕ. Иногда этот подход не работает, если не удается правильно установить пользовательскую службу. В этом случае вам иногда приходится вносить исправления в файлы дескрипторов, перезапускать сервер ambari, а затем использовать API-интерфейс ambari rest для переустановки службы. Использование мастера установки службы для переустановки в этом сценарии не работает. См. вики ambari для получения более подробной информации о том, как использовать остальные API для переустановки службы.

Много полезной информации о разработке пользовательских служб ambari и API для отдыха ambari можно найти на Ambari Wiki.

person cjackson    schedule 10.06.2016
comment
Я нашел также ambari-server reset полезным в этом случае - person Babu; 13.06.2016
comment
ambari-server reset действительно решает этот вариант использования, но это занимает значительно больше времени, так как вам нужно повторно выделить кластер. - person cjackson; 22.06.2016