Ambari Server通过Rest Api部署HDP集群

462 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

简介

Ambari是Hadoop生态系统中一个开源的集群管理工具,HDP则是Hadoop的其中一个集成版本(现已收费),我们既可以通过Ambari Server的UI页面去手动的部署HDP,也可以通过Ambari REST API去自动化的部署和管理HDP集群。一般在开发环境,通过REST接口自动化部署更实用。

前提条件

1.HDP集群的主节点已经部署好了ambari-server 2.HDP集群的所有节点已经部署好了ambari-agent并能连通主节点

步骤

  1. 创建集群:在Ambari REST API中,可以使用POST /api/v1/clusters/{cluster_name}接口来创建一个新的集群,其中{cluster_name}是新集群的名称。
  2. 添加主机:在创建集群之后,需要将主机添加到集群中。可以使用POST /api/v1/clusters/{cluster_name}/hosts接口添加主机。可以使用curl等命令行工具来向Ambari REST API发送请求。
  3. 安装HDP服务:在添加主机之后,需要安装HDP服务。可以使用POST /api/v1/clusters/{cluster_name}/services/{service_name}接口来安装服务,其中{service_name}是要安装的服务名称,如HDFS、YARN等。
  4. 配置服务:在安装服务之后,需要配置服务。可以使用PUT /api/v1/clusters/{cluster_name}/services/{service_name}/configurations接口来更新服务配置,其中{service_name}是要配置的服务名称,如HDFS、YARN等。
  5. 启动服务:在配置服务之后,可以使用PUT /api/v1/clusters/{cluster_name}/services/{service_name}接口来启动服务,其中{service_name}是要启动的服务名称。
  6. 验证服务:在启动服务之后,需要验证服务是否成功运行。可以使用GET /api/v1/clusters/{cluster_name}/services/{service_name}接口来获取服务状态。

通过blueprint文件配置HDP集群

使用Blueprint文件是在Ambari中自动部署和配置HDP集群的一种简便方法。Blueprint是一个JSON格式的文件,包含了集群的组件、配置和主机信息等。以下是使用Blueprint文件部署HDP集群的基本步骤:

  1. 选取一个已经部署好的集群作为模板,下载该集群的blueprint文件 curl -H "X-Requested-By: ambari" --user admin:admin -X GET http://localhost:8080/api/v1/clusters/{cluster_name}?format=blueprint > mybl.json

  2. 用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对应。

  3. 提交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
  1. 创建集群模板clustertemplate.json clustertemplate.json中把 host 和 blueprint file 中的 host_group 对应起来。

  2. 提交集群配置给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"
  }
}
  1. 查看集群部署状态
curl -i -H "X-Requested-By: ambari" -X GET -u admin:密码 http://localhost:8080/api/v1/clusters/{cluster_name}/requests/