У меня есть требование, когда я хочу развернуть файл jar в определенном месте на всех узлах кластера hadoop с помощью сервера Ambari. Для этого я думаю, что могу использовать сервисную функцию. Итак, я создал образец службы и мог развернуть ее как клиент или ведомый на всех узлах. Я добавил новую папку как Testservice внутри /var/lib/ambari-server/resources/stacks/HDP/2.2/services/, и в ней есть следующие файлы / каталоги
[machine]# cd /var/lib/ambari-server/resources/stacks/HDP/2.2/services/Testservice^C
[machine]#
[machine]# pwd
/var/lib/ambari-server/resources/stacks/HDP/2.2/services/Testservice
[machine]# ls
configuration metainfo.xml package
[machine]# ls package/*
package/archive.zip
package/files:
filesmaster.py test1.jar
package/scripts:
test_client.py
[machine]#
Таким образом мой сервис добавляется и устанавливается на всех узлах. На каждом узле создается соответствующий каталог «/var/lib/ambari-agent/cache/stacks/HDP/2.2/services/Testservice» с такой же файловой структурой, как указано выше. На данный момент скрипт test_client.py вообще не имеет кода. Просто фиктивная реализация функции установки, настройки.
Итак, здесь я хочу добавить код, такой, что package / files / test1.jar с каждого хоста в определенное место назначения говорит: «/ lib folder. Мне нужна помощь в этом вопросе. Как я могу использовать сценарий test_client.py? Как я могу напишите общий код, чтобы скопировать мой файл jar.
test_client.py имеет метод установки, как показано ниже
class TestClient(Script):
def install(self, env):
Требуются дополнительные сведения о том, как можно использовать переменную env для получения всех необходимых базовых путей для каталога служб Ambari и базовых путей установки hadoop.