本文梳理的Rest API主要是针对Web端的Rest API,暂不包括处理Agent 请求的API.该部分的处理以后会补充。
目录
- 基础知识准备
1.1. IDEA远程调试Ambari-Server
1.1.1. 在IDEA中配置远程服务器
1.1.2. 以Debug模式启动Ambari-Server
1.1.3. 在IDEA中连接Ambari-Server
1.2. Rest API 说明
1.2.1. 使用curl发送Rest API请求
1.2.2. Ambari-Server中基本的Rest API请求举例
1.3. Ambari-Server目录
1.4. Ambari-Server中基本资源对象与Provider - Ambari-Server 处理Rest API基本流程说明
2.1. 从Server到Handler
2.2. Hander分派
2.3. 具体Handler处理
2.4. 基本流程总结 - Ambari-Server通过Rest API进行服务安装、部署、操作流程
3.1. 服务部署安装流程
3.2. 关于配置
3.2.1. 配置相关的Rest API
3.3. 安装部署时可能遇到的问题
3.3.1. 安装失败,提示缺少配置
3.3.2. 重启时,数据库检查不通过,Ambari-Server重启失败
3.4. 服务操作
3.4.1. 创建服务
3.4.2. 启动服务
3.4.3. 停止服务
3.4.4. 卸载服务 - Ambari-Server通过Rest API进行服务安装、部署、操作源码分析
4.1. 创建服务资源
4.2. 为服务添加服务组件
4.3. 创建配置
4.4. 应用配置
4.5. 指定服务组件部署的主机
4.6. 开始服务组件的安装
4.6.1. 关于Stage与Stage DAG
4.6.2. Stage DAG构建逻辑
4.7. 服务操作 - 用户鉴权、操作权限检查管理
5.1. HTTP基本认证
5.2. 从Ambari-Server用户基本认证之Servlet Filter
5.2.1. 关于spring-security.xml
5.2.2. AmbariUserAuthorizationFilter
5.2.3. AmbariDelegatingAuthenticationFilter
5.2.4. AmbariAuthorizationFilter
5.3. 操作权限检查
5.4. 用户鉴权检查总结
5.5. 用户登录
5.6. 用户登出
第一二章见:
http://blog.csdn.net/youyou1543724847/article/details/78377914
3.Ambari-Server通过Rest API进行服务安装、部署、操作流程
3.1.服务部署安装流程
以Flume服务为例,说明使用Rest API进行服务部署安装步骤。在进行安装部署之前,要确保在Ambari Server节点的相关资源目录下具有待安装部署的服务资源目录。对于Ambari集成了的服务,服务目录在/var/lib/ambari-server/resources/common-services/ServiceName,如果不是Ambari已经集成了的服务,则需要在/var/lib/ambari-server/resources/stacks/HDP/vesion/services目录下创建相关的服务目录,编写相关的服务文件(具体的操作可见“Ambari 自定义服务流程”)。
具体步骤如下:
(1)创建服务资源,在该步骤操作成功之后,登录Ambari,应该能在DashBoard中能看到Flume服务。
API形式为:curl -u admin:admin -i -H 'X-Requested-By:ambari' -X POST -d '{"ServiceInfo":{"service_name":"FLUME"}}' http://node1:8080/api/v1/clusters/mycluster/services
(2)为服务添加服务组件
curl -u admin:admin -i -H 'X-Requested-By:ambari' -X POST http://node1:8080/api/v1/clusters/mycluster/services/FLUME/components/FLUME_HANDLER
注意:安装的组件必须是在服务的metainfo.xml文件中配置了的。
(3)创建配置
在配置前,首先需要了解服务是否需要配置、有那些配置类型、每个配置类型有那些配置Key-value对。关于配置问题详情见3.1节。对于FlUME服务来说,需要的配置类型有:flume-conf,flume-env,flume-logsearch-conf,分配为每个配置类型创建一个配置项
创建flume-conf项: curl -u admin:admin -i -H 'X-Requested-By:ambari' -X POST -d '{
"type":"flume-conf","tag":"version1","properties":{
"content":"# Flume agent config"}}' http://node1:8080/api/v1/clusters/mycluster/configurations
创建flume-env项: curl -u admin:admin -i -H 'X-Requested-By:ambari' -X POST -d '{
"type":"flume-env","tag":"version1","properties":{
"flume_conf_dir":"/etc/flume/conf", "flume_log_dir":"/var/log/flume","flume_run_dir":"/var/run/flume","flume_user":"flume"}}' http://node1:8080/api/v1/clusters/mycluster/configurations
创建flume-logsearch-conf项: curl -u admin:admin -i -H 'X-Requested-By:ambari' -X POST -d '{
"type":"flume-logsearch-conf","tag":"version1","properties":{
"service_name":"flume", "component_mappings":"FLUME:flume_handler","content":"Metadata"}}' http://node1:8080/api/v1/clusters/mycluster/configurations
(4)应用配置
将上述创建的三个配置全部应用到集群上,应用配置的API形式为:
应用flume-conf配置项: curl -u admin:admin -i -H ‘X-Requested-By:ambari’ -X PUT -d ‘{“Clusters”:{“desired_configs”:{“type”:”flume-conf”,”tag”:”version1”}}}’