How to start, stop and check services via curl command
Keeping on curl based commands from Ambari REST API, it is also
possible start and stop services of your Big Data cluster, and not
only to collect metrics from Ambari.
For example,
ambari-service.sh [start|stop|check] a given service:
cesar@lemmy ~/local/ambari $ ./ambari-service.sh Usage: ambari-service.sh [ZOOKEEPER|HDFS|YARN|MAPREDUCE2|HBASE|HIVE|SPARK|KAFKA|FLINK|ZK-NIFI|ZEPPELIN] [start|stop|check] Available services: "AMBARI_METRICS" "FLINK" "HBASE" "HDFS" "HIVE" "KAFKA" "MAPREDUCE2" "PIG" "SLIDER" "SPARK" "TEZ" "YARN" "ZEPPELIN" "ZK-NIFI" "ZOOKEEPER"
For example:
# We can check any of the available services cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE check Checking HIVE "maintenance_state" : "OFF", "state" : "STARTED" # Stopping a STARTED service such as HIVE cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE stop Stopping HIVE . . # During some seconds the state is STOPPING cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE check Checking HIVE "maintenance_state" : "OFF", "state" : "STOPPING" # When service is stopped the state is INSTALLED cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE check Checking HIVE "maintenance_state" : "OFF", "state" : "INSTALLED" # Then we can start the cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE start Starting HIVE . . # During some seconds the state is STARTING cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE check Checking HIVE "maintenance_state" : "OFF", "state" : "STARTING" # And finally the state is STARTED cesar@lemmy ~/local/ambari $ ./ambari-service.sh HIVE check Checking HIVE "maintenance_state" : "OFF", "state" : "STARTED"
And the ambari-service.sh script:
#!/bin/bash SERVER=ambari.planetexpress.net PORT=8080 USERNAME=admin PASSWORD=robot1729 CLUSTERNAME=bender SERVICE=$1 ENDPOINT="http://${SERVER}:${PORT}/api/v1/clusters/${CLUSTERNAME}/services/${SERVICE}" case "$2" in start) echo "Starting $SERVICE" curl -u $USERNAME:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Starting service via REST"}, "Body": {"ServiceInfo": {"state": "STARTED"}}}' $ENDPOINT ;; stop) echo "Stopping $SERVICE" curl -u $USERNAME:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Starting service via REST"}, "Body": {"ServiceInfo": {"state": "INSTALLED"}}}' $ENDPOINT ;; check) echo "Checking $SERVICE" curl --silent -u ${USERNAME}:${PASSWORD} -X GET ${ENDPOINT}?fields=ServiceInfo | grep state ;; *) echo 'Usage: ambari-service.sh [ZOOKEEPER|HDFS|YARN|MAPREDUCE2|HBASE|HIVE|SPARK|KAFKA|FLINK|ZK-NIFI|ZEPPELIN] [start|stop|check]' echo echo 'Available services:' curl --silent -u $USERNAME:$PASSWORD -X GET http://${SERVER}:${PORT}/api/v1/clusters/${CLUSTERNAME}/services | grep service_name| awk -F":" '{print $2}' ;; esac
Links:
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=41812517