开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情
简介
Ambari是Hadoop生态系统中一个开源的集群管理工具,HDP则是Hadoop的其中一个集成版本(现已收费),我们既可以通过Ambari Server的UI页面去手动的部署HDP,也可以通过Ambari REST API去自动化的部署和管理HDP集群。一般在开发环境,通过REST接口自动化部署更实用。
前提条件
1.HDP集群的主节点已经部署好了ambari-server 2.HDP集群的所有节点已经部署好了ambari-agent并能连通主节点
步骤
- 创建集群:在Ambari REST API中,可以使用
POST /api/v1/clusters/{cluster_name}接口来创建一个新的集群,其中{cluster_name}是新集群的名称。 - 添加主机:在创建集群之后,需要将主机添加到集群中。可以使用
POST /api/v1/clusters/{cluster_name}/hosts接口添加主机。可以使用curl等命令行工具来向Ambari REST API发送请求。 - 安装HDP服务:在添加主机之后,需要安装HDP服务。可以使用
POST /api/v1/clusters/{cluster_name}/services/{service_name}接口来安装服务,其中{service_name}是要安装的服务名称,如HDFS、YARN等。 - 配置服务:在安装服务之后,需要配置服务。可以使用
PUT /api/v1/clusters/{cluster_name}/services/{service_name}/configurations接口来更新服务配置,其中{service_name}是要配置的服务名称,如HDFS、YARN等。 - 启动服务:在配置服务之后,可以使用
PUT /api/v1/clusters/{cluster_name}/services/{service_name}接口来启动服务,其中{service_name}是要启动的服务名称。 - 验证服务:在启动服务之后,需要验证服务是否成功运行。可以使用
GET /api/v1/clusters/{cluster_name}/services/{service_name}接口来获取服务状态。
通过blueprint文件配置HDP集群
使用Blueprint文件是在Ambari中自动部署和配置HDP集群的一种简便方法。Blueprint是一个JSON格式的文件,包含了集群的组件、配置和主机信息等。以下是使用Blueprint文件部署HDP集群的基本步骤:
-
选取一个已经部署好的集群作为模板,下载该集群的blueprint文件
curl -H "X-Requested-By: ambari" --user admin:admin -X GET http://localhost:8080/api/v1/clusters/{cluster_name}?format=blueprint > mybl.json -
用ambari注册blueprint
curl -H "X-Requested-By: ambari" --user admin:密码 -X POST http://localhost:8080/api/v1/blueprints/cluster_blueprint -d @mybl.json上述命令中的cluster_blueprint是与blueprint.json文件的blueprint_name对应。 -
提交vdf.json(用于指定hdp的源,生成ambari-hdp-1.repo文件)
curl -H "X-Requested-By: ambari" --user admin:admin -X POST http://localhost:8080/api/v1/version_definitions -d @vdf.json
-
创建集群模板clustertemplate.json clustertemplate.json中把 host 和 blueprint file 中的 host_group 对应起来。
-
提交集群配置给ambari
curl -i -H "X-Requested-By: ambari" -X POST -u admin:密码 http://localhost:8080/api/v1/clusters/{cluster_name} -d @clustertemplate.json
得到返回
{
"href" : "http://localhost:8080/api/v1/clusters/cc1(这个是clustertempalte.json中的blueprint_name)/requests/1",
"Requests" : {
"id" : 1,
"status" : "Accepted"
}
}
- 查看集群部署状态
curl -i -H "X-Requested-By: ambari" -X GET -u admin:密码 http://localhost:8080/api/v1/clusters/{cluster_name}/requests/