Ambari Rest API modify configuration

先附一個(gè)官方文檔

有兩種方式修改配置文件

1. 使用REST API

第一種方式
①步
curl --user admin:admin -H "X-Requested-By: ambari" -i -X POST -d '{"type": "capacity-scheduler", "tag": "version16", "properties" : {"yarn.scheduler.capacity.root.queues" : "default,aa","yarn.scheduler.capacity.root.aa.capacity":"10","yarn.scheduler.capacity.root.aa.maximum-capacity":"100","yarn.scheduler.capacity.root.aa.state":"RUNNING"}}' http://192.168.1.63:8080/api/v1/clusters/eds-cluster/configurations·enter code here
②步
curl --user admin:admin -H "X-Requested-By: ambari" -i -X PUT -d '{"Clusters":{"desired_config" : {"type": "capacity-scheduler", "tag": "version15"}}}' http://192.168.1.63:8080/api/v1/clusters/eds-cluster/configurations

第二種方式
curl --user admin:admin -i -X PUT -d '{"Clusters":{"desired_config" : {"type": "mapred-site", "tag": "version1384716041120", "properties" : {...}}}}' http://AMBARI_SERVER_HOST:8080/api/v1/clusters/CLUSTER_NAME

2. 使用 configs.sh

其原理就是把命令傳過來(lái)的字符串緩存到j(luò)son文件中,然后再使用 REST API 進(jìn)行修改。
官網(wǎng)文檔,不做解釋
/var/lib/ambari-server/resources/scripts/configs.shUsage: configs.sh [-u userId] [-p password] [-port port] <ACTION> <AMBARI_HOST> <CLUSTER_NAME> <CONFIG_TYPE> [CONFIG_FILENAME | CONFIG_KEY [CONFIG_VALUE]] [-u userId]: Optional user ID to use for authentication. Default is 'admin'. [-p password]: Optional password to use for authentication. Default is 'admin'. [-port port]: Optional port number for Ambari server. Default is '8080'. Provide empty string to not use port. <ACTION>: One of 'get', 'set', 'delete'. 'Set' adds/updates as necessary. <AMBARI_HOST>: Server external host name <CLUSTER_NAME>: Name given to cluster. Ex: 'c1' <CONFIG_TYPE>: One of the various configuration types in Ambari. Ex:global, core-site, hdfs-site, mapred-queue-acls, etc. [CONFIG_FILENAME]: File where entire configurations are saved to, or read from. Only applicable to 'get' and 'set' actions [CONFIG_KEY]: Key that has to be set or deleted. Not necessary for 'get' action. [CONFIG_VALUE]: Optional value to be set. Not necessary for 'get' or 'delete' actions.

例子:
/var/lib/ambari-server/resources/scripts/configs.sh get 192.168.1.68 eds-cluster capacity-scheduler
(返回的內(nèi)容就是"properties" : {"yarn.scheduler.capacity.root.queues" : "default,aa","yarn.scheduler.capacity.root.aa.capacity":"10"}
/var/lib/ambari-server/resources/scripts/configs.sh set localhost eds-cluster capacity-scheduler "yarn.scheduler.capacity.root.queues" "default,DataCanvas"

還有一個(gè)最重要的就是使用文件進(jìn)行更新了,如果屬性很多的話用單條命令執(zhí)行就顯得有點(diǎn)不合適,況且使用命令更新一次則配置文件對(duì)應(yīng)的版本就會(huì)迭代一次,這樣使用文件更新配置相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。

例子:/var/lib/ambari-server/resources/scripts/configs.sh set 192.168.1.68 eds-cluster capacity-scheduler version16.json
這里的文件不一定必須是json文件,但是文件的內(nèi)容格式是固定的,如下:
"properties" : { "yarn.scheduler.capacity.root.queues" : "default,aa", "yarn.scheduler.capacity.root.aa.capacity":"10", "yarn.scheduler.capacity.root.aa.maximum-capacity":"100", "yarn.scheduler.capacity.root.aa.state":"RUNNING" }

這樣我們?cè)诟屡渲脮r(shí)就可以先使用/var/lib/ambari-server/resources/scripts/configs.sh get 192.168.1.68 eds-cluster capacity-scheduler獲取當(dāng)前配置,經(jīng)過處理后再使用/var/lib/ambari-server/resources/scripts/configs.sh set 192.168.1.68 eds-cluster capacity-scheduler version16.json進(jìn)行更新配置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容