ambari-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sumit Mohanty <smoha...@hortonworks.com>
Subject Re: Start/stop all services programmatically
Date Thu, 09 Apr 2015 14:38:30 GMT
​I do not think the predicate is implemented yet.


Looking into to UI (as Yusaku suggested) this is what it is issuing.


{"RequestInfo":{"context":"Start All Host Components","operation_level":{"level":"HOST","cluster_name":"c1","host_names":"u1201.ambari.apache.org"},"query":"HostRoles/component_name.in(APP_TIMELINE_SERVER,DATANODE,HISTORYSERVER,NAMENODE,NODEMANAGER,RESOURCEMANAGER,SECONDARY_NAMENODE,ZOOKEEPER_SERVER)"},"Body":{"HostRoles":{"state":"STARTED"}}}:​


As you can see all component names are explicit.

________________________________
From: Krzysztof Adamski <adamskikrzysiek@gmail.com>
Sent: Thursday, April 09, 2015 1:38 AM
To: user@ambari.apache.org
Subject: Re: Start/stop all services programmatically

Still no luck.
The status is I can stop all components that were originally started (excluding client components,
thanks Sumit).
curl -u admin:admin -H "X-Requested-By: ambari" -i -X PUT -d '{"RequestInfo":{"context":"Stop
All Host Components"},"Body":{"HostRoles":{"state":"INSTALLED"}}}' "http://u1201.ambari.apache.org:8080/api/v1/clusters/c1/host_components?HostRoles/host_name=u1201.ambari.apache.org&HostRoles/state=STARTED"

However I cannot start the components as client ones are complaining. I wish there was a third
state STOPPED. Any ideas how to make a one-liner to start all hosts components excluding client?
I was only able to make GET working
curl -u admin:admin -H "X-Requested-By: ambari" -i -X GET "http://ambari:8080/api/v1/clusters/HADOOP_LAB/components?ServiceComponentInfo/categry.in(MASTER,SLAVE)&host_components/HostRoles/host_name=host1&host_components/HostRoles/state=INSTALLED"





On Thu, Apr 9, 2015 at 9:26 AM Krzysztof Adamski <adamskikrzysiek@gmail.com<mailto:adamskikrzysiek@gmail.com>>
wrote:
Couldn't make PUT working :(

I see there is another option
https://cwiki.apache.org/confluence/display/AMBARI/Restarting+host+components+via+the+API


On Thu, Apr 9, 2015 at 8:34 AM Krzysztof Adamski <adamskikrzysiek@gmail.com<mailto:adamskikrzysiek@gmail.com>>
wrote:
almost there
Get works
curl -u admin:admin -H "X-Requested-By: ambari" -i -X GET "http://ambari:8080/api/v1/clusters/HADOOP_LAB/components?ServiceComponentInfo/categry.in(MASTER,SLAVE)&host_components/HostRoles/host_name=host1&host_components/HostRoles/state=INSTALLED"


On Thu, Apr 9, 2015 at 7:56 AM Krzysztof Adamski <adamskikrzysiek@gmail.com<mailto:adamskikrzysiek@gmail.com>>
wrote:
That's it. A clever solution indeed.

How about starting the services then? How to quickly exclude client components?
 "message" : "java.lang.IllegalArgumentException: Invalid desired state for a client component"

There is a filter like this
ServiceComponentInfo/category.in<http://category.in>(SLAVE,MASTER)


On Thu, Apr 9, 2015 at 7:41 AM Sumit Mohanty <smohanty@hortonworks.com<mailto:smohanty@hortonworks.com>>
wrote:

You can try something like this ....


curl -u admin:admin -H "X-Requested-By: ambari" -i -X PUT -d '{"RequestInfo":{"context":"Stop
All Host Components"},"Body":{"HostRoles":{"state":"INSTALLED"}}}' "http://u1201.ambari.apache.org:8080/api/v1/clusters/c1/host_components?HostRoles/host_name=u1201.ambari.apache.org&HostRoles/state=STARTED"


Predicates such as "HostRoles/host_name=u1201.ambari.apache.org<http://u1201.ambari.apache.org>&HostRoles/state=STARTED​"
will help narrow down the choices.


________________________________
From: Krzysztof Adamski <adamskikrzysiek@gmail.com<mailto:adamskikrzysiek@gmail.com>>
Sent: Wednesday, April 08, 2015 10:11 PM
To: user@ambari.apache.org<mailto:user@ambari.apache.org>

Subject: Re: Start/stop all services programmatically
Hi Yusaku,

Many thanks for pointing me to the dependancies file. It would help a lot.

The problem with the stop all command you sent is that this for all services within the cluster
and I want to do this explicitly on a host basis to perform a rolling OS patching.
Another issue is that specifying state:INSTALL would result in installing client components
on the hosts where I do not want to have them e.g. data nodes.
Unless I did something wrong.

Regards,
Krzysztof


On Thu, Apr 9, 2015 at 2:34 AM Yusaku Sako <yusaku@hortonworks.com<mailto:yusaku@hortonworks.com>>
wrote:
Sorry, forgot to answer your second question regarding dependencies.
Such dependencies are specified in a file called role_command_order.json as part of the stack
defintion.

https://github.com/apache/ambari/blob/trunk/ambari-server/src/main/resources/stacks/HDP/2.0.6/role_command_order.json

If you try to start/stop all services in bulk, the command order rules will be followed automatically
by the server.

Yusaku

From: Yusaku Sako <yusaku@hortonworks.com<mailto:yusaku@hortonworks.com>>
Reply-To: "user@ambari.apache.org<mailto:user@ambari.apache.org>" <user@ambari.apache.org<mailto:user@ambari.apache.org>>
Date: Wednesday, April 8, 2015 5:27 PM
To: "user@ambari.apache.org<mailto:user@ambari.apache.org>" <user@ambari.apache.org<mailto:user@ambari.apache.org>>
Subject: Re: Start/stop all services programmatically

Hi Krzysztof,

You can do everything that the UI does with the API.
The best way to learn what API calls the UI is making is to use the browser's developer tool
and watch the network traffic.

Stop all services:
curl -i -uadmin:admin -H "X-Requested-By: ambari" -X PUT -d '
{"RequestInfo":{"context":"Stop all services","operation_level":{"level":"CLUSTER","cluster_name":"ing_hdp"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}
' http://ambari:8080/api/v1/clusters/ing_hdp/services

Start all services:
curl -i -uadmin:admin -H "X-Requested-By: ambari" -X PUT -d '
{"RequestInfo":{"context":"Start all services","operation_level":{"level":"CLUSTER","cluster_name":"ing_hdp"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}
' http://ambari:8080/api/v1/clusters/ing_hdp/services

I hope this helps.
Yusaku

From: Krzysztof Adamski <adamskikrzysiek@gmail.com<mailto:adamskikrzysiek@gmail.com>>
Reply-To: "user@ambari.apache.org<mailto:user@ambari.apache.org>" <user@ambari.apache.org<mailto:user@ambari.apache.org>>
Date: Tuesday, April 7, 2015 12:15 AM
To: "user@ambari.apache.org<mailto:user@ambari.apache.org>" <user@ambari.apache.org<mailto:user@ambari.apache.org>>
Subject: Start/stop all services programmatically

Hello,

I am busy implementing a manual job to stop all hosts services via script before rebooting
the OS. The examples I found in wiki are per service or component.

1. Is there any way to invoke the stop/start for all hosts components just like from a web
interface?
2. How ambari determines the proper order for the services to start/stop e.g. first stop hiveserver
before stopping mysql etc.

curl -s --user admin:admin -H "X-Requested-By: ambari" -X GET "http://ambari:8080/api/v1/clusters/ing_hdp/components/?ServiceComponentInfo/category.in(SLAVE,MASTER)&host_components/HostRoles/host_name=host1&fields=host_components/HostRoles/component_name,host_components/HostRoles/state"
| jq -r '[[.items[].host_components[].HostRoles.component_name]]|tostring' | sed -r 's/[\["]//g'
| sed -r 's/[]]//g'
  function stop(){
curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Stop
‘"$1"’ via REST"}, "Body": {"HostRoles": {"state": "INSTALLED"}}}' http://ambari:8080/api/v1/clusters/ing_hdp/hosts/host1/host_components/$1
}
Thanks for any guide.
Mime
View raw message