通过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 就被彻底的清除掉了。

‘ 所谓成功 ’

坚持把简单的事情做好就是不简单

坚持把平凡的事情做好就是不平凡

每个人都有潜在的能量,只是很容易–

被习惯所掩盖,

被时间所迷离,

被惰性所消磨。

那么,成功呢?就是在平凡中做出不平凡的坚持