Ambari-單步建立 整體介紹
Ambari-單步建立 詳細步驟 (以建立HDP版本號爲例)
-
調用建立集羣的API
-
request body 包含stack版本號
-
POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>
-
request body:
{
"Clusters": {
"version" : "BAIDU-1.0」
}
}
-
實際命令
curl -u admin:admin -i -X POST -d '{"Clusters":{"version":"BAIDU-1.0"}}' -H "X-Requested-By:ambari" http://<ambari-server>/api/v1/clusters/<cluster-name>
-
向已建立的集羣加入host
-
向已建立的集羣加入服務 (以加入HDFS服務爲例)
-
加入hdfs服務
-
採用HTTP POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services json
-
request body api
{
"ServiceInfo": {
"service_name": "HDFS"
}
}curl
-
實際命令函數
curl -u admin:admin -i -X POST -d '{"ServiceInfo":{"service_name":"HDFS"}}' -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services
- 當中 <ambari-server> = nj01-hadoop-rd03.nj01.com <cluster-name> = abaciCluster <service-name> = HDFS
- 加入服務組件 (包含namenode datanode)
- 採用HTTP POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>/components/<component-name>
- 實際命令
curl -u admin:admin -i -X POST -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services/HDFS/components/NAMENODE
curl -u admin:admin -i -X POST -H "X-Requested-By:ambari" http://nj01-hadoop-rd03.nj01.com:8080/api/v1/clusters/abaciCluster/services/HDFS/components/DATANODE
-
當中 <ambari-server> = nj01-hadoop-rd03.nj01.com <cluster-name> = abaciCluster <service-name> = HDFS <component-name> = NAMENODE/DATANODE
- 注意:調用restapi的次數有該服務的組件種類決定。
-
加入用戶對HDFS的配置
- 採用HTTP POST http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/configurations
- request body 以hadoop-user-info.properties.xml爲例
{
"type": "hadoop-user-info.properties",
"tag": "1",
"properties": {
"root_ugi": "root,baidu",
"user_ugi": "public,slave",
"content": " # Format: username=password,group1,group2,group3 root=baidu,root public=slave,slave "
}
}
- 上面的key-value值會存儲在command-json中
- 實際命令:
curl -u admin:admin -i -X POST -d '{"type":"hadoop-user-info.properties","tag":"1","properties":{"root_ugi":"root,baidu","user_ugi":"public,slave","content":" # Format: username=password,group1,group2,group3 root=baidu,root public=slave,slave "}}' -H "X-Requested-By:ambari" http://<ambari-server>:8080/api/v1/clusters/abaciCluster/configurations
- 注意:配置項很是多。可能需要調用屢次該restapi。
-
更新用戶加入的配置 更新後配置信息中的key/value會寫入至command-json中
- HTTP PUT 請求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>
- request body
{
"Clusters": {
"desired_configs": {
"type": "hadoop-user-info.properties",
"tag": "1"
}
}
}oop
-
實際命令post
curl -u admin:admin -i -X PUT -d '{ "Clusters" : {"desired_configs": {"type": "hadoop-user-info.properties", "tag" : "1" }}}' -H "X-Requested-By:ambari" http://<ambari-server>:8080/api/v1/clusters/abaciCluster
-
對於每個組件配置對應的host (03爲namenode 02 06爲datanode)
-
將所有服務部署完畢後,開始進行集羣服務的安裝、開啓、關閉
- 服務安裝
- HTTP PUT 請求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>
- request body
{
"ServiceInfo": {
"state": "INSTALLED"
}
}
-
實際命令:
curl -u admin:admin -i -X PUT -d '{"ServiceInfo": {"state" : "INSTALLED"}}' -H "X-Requested-By:ambari" http://<ambari-server>/api/v1/clusters/abaciCluster/services/ZOOKEEPER
- 服務開啓
- HTTP PUT 請求 http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/<service-name>
- request body
{
"ServiceInfo": {
"state": "STARTED"
}
}
-
實際命令:
curl -u admin:admin -i -X PUT -d '{"ServiceInfo": {"state" : "STARTED"}}' -H "X-Requested-By:ambari" http://<ambari-server>:8080/api/v1/clusters/abaciCluster/services/ZOOKEEPER
-
服務關閉
- 服務關閉的命令同服務安裝全然一致,當該服務在集羣中的狀態爲started時,這時調用ambari-api的安裝命令。ambari系統會將正在執行的服務進程經過python腳本內的stop函數進行關閉。
文章有修改過 詳細關於ambari的問題可以聯繫我 你們一塊兒討論一下