通过API卸载Ambari服务
- 2019 年 12 月 30 日
- 笔记
就是一系列下定决心的努力
· 正 · 文 · 来 · 啦 ·
当我们为了体验ambari安装很多服务时,因为安装过多,导致机器很卡,或者暂时用不到,还容易除错,那么我来教你如何卸载。
01
登陆ambari 管理界面

02
以Hbase 为例子

我们需要关闭这个服务

然后选择Delete,并且输入'delete'

有些服务关闭不掉,该怎么办呢? 无法卸载?
我们可以先选择 Turn On Maintenance Mode(维护模式)

然后 就可以选择stop 进而可以选择Delete Service (如下图)

成功删除

如下图 我们希望删除暂时不用的服务:

删除配置完成后的结果

那么如果以上方法无法删除呢? 请看官方API 删除:
实例 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 返回的结果

用 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 包

如果需要彻底清除掉 Storm 的 package,则需要到各个 Agent 机器执行如下命令。
yum erase“storm_2_2*”
执行完后,这个 Service 就被彻底的清除掉了。
‘ 所谓成功 ’
坚持把简单的事情做好就是不简单,
坚持把平凡的事情做好就是不平凡。
每个人都有潜在的能量,只是很容易–
被习惯所掩盖,
被时间所迷离,
被惰性所消磨。
那么,成功呢?就是在平凡中做出不平凡的坚持。