我想开发用于部署某些服务的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
,我觉得这不是很好的解决方案。
你有什么好的建议,推荐和链接吗?
答案 0 :(得分:1)
正确的术语是Ambari Custom Service而不是插件。
以下序列是我在开发自定义服务时发现的最佳方法。让我们说你正在开发定制服务'FOO'。
1)将您的foo服务提取到您正在开发的堆栈中。为此例如。我将假设HDP 2.4:
tar -xzvf foo_service.tgz -C /var/lib/ambari-server/resources/stacks/HDP/2.4/services/FOO
2)重新启动ambari-server以获取堆栈更改
sudo ambari-server restart
3)使用Ambari UI服务安装向导安装自定义服务。
4)进行测试和调试,对自定义服务描述符文件进行任何更改。
5)使用Ambari UI停止您的服务及其所有组件。
6)使用类似于以下remove-service.sh
脚本的内容从Ambari卸载您的服务。
7)从步骤1开始重新安装修改过的服务。冲洗并重复。
remove-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-server,然后使用ambari rest API重新安装您的服务。使用服务安装向导重新安装在此方案中不起作用。有关如何使用其余api重新安装服务的详细信息,请参阅ambari wiki。
在Ambari Wiki上开发自定义ambari服务和ambari rest api时,可以找到很多有用的信息。