ambari-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Krzysztof Adamski <adamskikrzys...@gmail.com>
Subject Re: Start/stop all services programmatically
Date Fri, 10 Apr 2015 05:44:08 GMT
Thanks. At least the dependancies are resolved by API automatically. I will
query for the list of services and then pass the list to the stop request.

On Thu, Apr 9, 2015 at 4:39 PM Sumit Mohanty <smohanty@hortonworks.com>
wrote:

>  ​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> 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> 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> 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(SLAVE,MASTER)
>>>>
>>>>
>>>> On Thu, Apr 9, 2015 at 7:41 AM Sumit Mohanty <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.or
>>>>> g:8080/api/v1/clusters/c1/host_components?HostRoles/host_nam
>>>>> e=u1201.ambari.apache.org&HostRoles/state=STARTED"
>>>>>
>>>>>
>>>>>  Predicates such as "HostRoles/host_name=u1201.ambari.apache.org&
>>>>> HostRoles/state=STARTED​" will help narrow down the choices.
>>>>>
>>>>>
>>>>>  ------------------------------
>>>>> *From:* Krzysztof Adamski <adamskikrzysiek@gmail.com>
>>>>> *Sent:* Wednesday, April 08, 2015 10:11 PM
>>>>> *To:* 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>
>>>>> 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/sr
>>>>>> c/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>
>>>>>> Reply-To: "user@ambari.apache.org" <user@ambari.apache.org>
>>>>>> Date: Wednesday, April 8, 2015 5:27 PM
>>>>>> To: "user@ambari.apache.org" <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":{"Service
>>>>>> Info":{"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":{"Service
>>>>>> Info":{"state":"STARTED"}}}
>>>>>> ' http://ambari:8080/api/v1/clusters/ing_hdp/services
>>>>>>
>>>>>>  I hope this helps.
>>>>>> Yusaku
>>>>>>
>>>>>>   From: Krzysztof Adamski <adamskikrzysiek@gmail.com>
>>>>>> Reply-To: "user@ambari.apache.org" <user@ambari.apache.org>
>>>>>> Date: Tuesday, April 7, 2015 12:15 AM
>>>>>> To: "user@ambari.apache.org" <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/?Serv
>>>>>> iceComponentInfo/category.in(SLAVE,MASTER)&host_components/H
>>>>>> ostRoles/host_name=host1&fields=host_components/HostRoles/co
>>>>>> mponent_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/clus
>>>>>> ters/ing_hdp/hosts/host1/host_components/$1
>>>>>>
>>>>>> }
>>>>>>
>>>>>> Thanks for any guide.
>>>>>>
>>>>>

Mime
View raw message