ambari页面上的一些选项按钮试试就知道用法,但是ambari安装hawq遇到诸多奇奇怪怪的问题,头都大了,只有选择重新再来,但是ambari不能删除services彻底,并且相关资料比较少,因此记录如下:
http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari2/index.html
删除services
Ambari 常用的 REST API 介绍
Ambari 借鉴了很多成熟分布式软件的 API 设计。Rest API 就是一个很好地体现。通过 Ambari 的 Rest API,可以在脚本中通过 curl 维护整个集群。并且,我们可以用 Rest API 实现一些无法在 Ambari GUI 上面做的操作。下面是一些实例。
实例 1,通过 API 卸载已安装的 Service
目前 Ambari 不支持在 GUI 上面卸载已安装的 Service。所以当一个 Service 不再需要的时候,用户没法删除掉该 Service。幸运的是 Ambari 提供了 DELETE 的 Rest API,我们可以通过该 API 来删除 Ambari 中 Service。不过这里需要注意,这个方法只是从 Ambari Service 中删除了 Service。这样一来,Ambari 的 GUI 界面中不再显示这个 Service。但是 Service 本身还安装在 Agent 所在的机器。如果用户需要彻底的清除掉这个 Service,仍需要手工的到每个机器卸载(例如,在每个机器执行 yum erase)。
这里我以删除 Storm 为例。卸载之前,需要确认是否停掉了该 Service。我们通过 GET 方法来得到这个结果(这里当然也可以直接从 GUI 上面看到 Service 状态)。具体的命令如下:
curl -u admin:admin -H “X-Requested-By: ambari” -X GET
http://zwshen86:8080/api/v1/clusters/bigdata/services/STORM
命令中的 zwshen86 为 Ambari Server 的机器名(端口默认为 8080),bigdata 为 cluster 名字,STORM 为 Service 的名字。
在返回的报文中,可以看到 State 字段。如果是 INSTALLED,代表这个 Service 已经是停掉的状态。我们可以继续删除步骤。如果不是 INSTALLED,则需要先停掉这个 Service,可以从 WEB 上操作,也可以用 Rest API。
图 17. Get 返回的结果
图 17. Get 返回的结果
用 Rest API 停掉 Service 的命令格式如下,有兴趣的朋友可以尝试一下。
curl -u admin:admin -H “X-Requested-By: ambari” -X PUT -d ‘{“RequestInfo”: {“context”:”Stop Service”},”Body”:{“ServiceInfo”:{“state”:”INSTALLED”}}}’ http://AMBARI_SERVER_HOST:8080/api/v1/clusters/c1/services/SERVICE_NAME
执行如下命令删除 STORM:
curl -u admin:admin -H “X-Requested-By: ambari” -X DELETE http://zwshen86:8080/api/v1/clusters/bigdata/services/STORM
执行完成后,Storm 就从 Ambari 的 Service 里面删掉了,但是 Storm 的 package 还存在于机器。
图 18. Storm 的 RPM 包
图 18. Storm 的 RPM 包
如果需要彻底清除掉 Storm 的 package,则需要到各个 Agent 机器执行如下命令。
yum erase“storm_2_2*”
执行完后,这个 Service 就被彻底的清除掉了。删除cluster
删除服务不彻底,需要删除集群,通过重置服务端,来删除自己建立的cluster
ambari-server reset- 重装ambari
google之后,有人回复ambari.sh sh hdfs -l -s …等问题时,说它用jdk1.8,就没有问题,因此,决定重装
ambari-server setup