Ambari-Server Rest API处理2(Ambari-Server通过Rest API进行服务安装、部署、操作流程+操作源码分析)

本文梳理的Rest API主要是针对Web端的Rest API,暂不包括处理Agent 请求的API.该部分的处理以后会补充。

目录

  1. 基础知识准备
    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
  2. Ambari-Server 处理Rest API基本流程说明
    2.1. 从Server到Handler
    2.2. Hander分派
    2.3. 具体Handler处理
    2.4. 基本流程总结
  3. 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. 卸载服务
  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. 用户鉴权、操作权限检查管理
    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”}}}’

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ambari API是Apache Ambari提供的REST API,可以用于管理和监控Hadoop集群。以下是使用Ambari API进行调用的一些基本步骤: 1. 构建API URL Ambari API的URL基于以下格式: http://<ambari-server>:<port>/api/v1/<resource>/<resource_id> 其中,<ambari-server>是Ambari服务器的IP地址或主机名,<port>是Ambari服务器的端口号,<resource>是API资源的名称,<resource_id>是要操作的资源的唯一标识符。 2. 发送API请求 可以使用curl或其他HTTP客户端发送API请求。示例代码如下: curl -u <username>:<password> -H "X-Requested-By: ambari" -X GET http://<ambari-server>:<port>/api/v1/clusters/<cluster_name>/services 其中,<username>和<password>是Ambari管理员的用户名和密码,<cluster_name>是要操作的集群的名称,GET表示获取资源列表。 3. 解析API响应 API响应是JSON格式的,可以使用Python、Java等编程语言解析。示例代码如下: import requests import json url = 'http://<ambari-server>:<port>/api/v1/clusters/<cluster_name>/services' headers = {'X-Requested-By': 'ambari'} auth = ('<username>', '<password>') response = requests.get(url, headers=headers, auth=auth) response_json = json.loads(response.text) for service in response_json['items']: print(service['ServiceInfo']['service_name']) 以上是使用Ambari API进行调用的基本步骤。在实际使用中,还可以根据需要添加其他参数和选项,例如过滤器、排序、限制返回字段等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值