正确的术语是 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) 重启 ambari-server 以获取堆栈更改
sudo ambari-server restart
3) 使用 Ambari UI 服务安装向导安装您的自定义服务。
4) 进行测试和调试,对自定义服务描述符文件进行任何更改。
5) 使用 Ambari UI 停止您的服务及其所有组件。
6) 使用类似于下面的remove-service.sh 脚本的方式从 Ambari 卸载您的服务。
7) 从第 1 步开始重新安装修改后的服务。冲洗并重复。
删除服务.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 重新安装您的服务。在这种情况下,使用服务安装向导重新安装将不起作用。有关如何使用 rest api 重新安装服务的更多详细信息,请参阅 ambari wiki。
在Ambari Wiki 上可以找到很多关于开发自定义 ambari 服务和 ambari rest api 的有用信息。