我是靠谱客的博主 闪闪招牌,这篇文章主要介绍Ambari(六)----Ambari api使用文章目录一. curl简介二. 认证三. 监控四. 管理五.资源六. 部分响应七. 查询谓词八. 批量请求九. 请求信息十. 时间指标十一. 分页十二. 异常十三. 操作中遇到的问题,现在分享给大家,希望可以做个参考。

本博客主要是对Ambari官方api文档的翻译.
并在此基础上,结合实际Ambari环境,给出了一些具体的操作示例,方便自己检索.

Ambari api官方文档

文章目录

一. curl简介
二. 认证
三. 监控

  • 3.1 GET

四. 管理

  • 4.1 POST
  • 4.2 PUT
  • 4.3 DELETE
  • 4.4 异步响应

五.资源

  • 5.1 集合资源
  • 5.2 实例资源
  • 5.3 资源类型
    • 5.3.1 集群
    • 5.3.2 服务
    • 5.3.3 组件
    • 5.3.4 主机
    • 5.3.5 主机组件
    • 5.3.6 配置
    • 5.3.7 请求
    • 5.3.8 任务
    • 5.3.9 请求调度
    • 5.3.10 工作流程
    • 5.3.11 作业
    • 5.3.12 任务尝试
    • 5.3.13 视图
    • 5.3.14 仓库版本
    • 5.3.15 服务版本
    • 5.3.16 滚动升级检查
    • 5.3.17 升级
    • 5.3.18 警报
    • 5.3.19 凭证
    • 5.3.20 权限
    • 5.3.21 用户
    • 5.3.22 认证来源

六. 部分响应
七. 查询谓词
八. 批量请求
九. 请求信息
十. 时间指标
十一. 分页
十二. 异常
十三. 操作中遇到的问题

一. curl简介

    curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。
    不仅如此,curl可以很方便的完成许多rest api的测试需求,甚至是需要登录认证的rest api。
    利用curl指令,可以发出GET,POST,PUT,DELETE请求,也可以改变HTTP header来满足使用rest api需要的特定条件。
    这里列出一些测试Rest api需要用到的curl参数

curl参数参数含义
-X/–request [GET,POST,…]使用指定的http method发出http request
-H/–header设定request的header
-i/–includeresponse的header
-d/–datahttp parameters
-v/–ver bose显示详细信息
-u/–user使用者用户密码
-b/–cookiecookie

二. 认证

执行Ambari API操作需要身份认证. 访问Api需要使用基本身份认证.
您需要在您的请求中发送授权:基本标头已使用基本身份认证.
例如:使用curl和–user选项可以解决此问题

复制代码
1
2
curl --user name:password http://{your.ambari.server}/api/v1/clusters

操作实例:

复制代码
1
2
3
# curl -u admin:admin http://192.168.226.140:8080/api/v1/clusters

注意: 身份认证方法和来源是在Ambari Server配置的,本文档未涵盖更改和配置身份认证的方法和来源

三. 监控

Ambari API提供对Apache Hadoop集群的监控和指标信息的访问。

3.1 GET

使用GET方法读取Ambari资源的属性,指标和子资源。
调用GET方法将返回请求的资源,并且不会产生任何副作用。
响应代码200表示使用包含在响应主体中的请求资源成功处理了请求。

实例:

获取集群名为hadoop的HDFS服务的DATANODE组件资源

复制代码
1
2
3
GET /clusters/hadoop/services/HDFS/components/DATANODE
复制代码
1
2
curl -u -X GET admin:admin http://ip:8083/api/v1/clusters/ambari_develop_cluster/services/HDFS/components/DATANODE

响应码:

复制代码
1
2
200 OK

响应结果(部分):

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{ "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS/components/DATANODE", "ServiceComponentInfo" : { "category" : "SLAVE", "cluster_name" : "hadoop", "component_name" : "DATANODE", "desired_stack" : "HDP-2.6", "desired_version" : "2.6.3.0-235", "display_name" : "DataNode", "init_count" : 0, "install_failed_count" : 0, "installed_count" : 0, "recovery_enabled" : "false", "repository_state" : "CURRENT", "service_name" : "HDFS", "started_count" : 0, "state" : "STARTED", "total_count" : 3, "unknown_count" : 3 }, "host_components" : [ { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/slave1.hadoop/host_components/DATANODE", "HostRoles" : { "cluster_name" : "hadoop", "component_name" : "DATANODE", "host_name" : "slave1.hadoop" } } ] }

四. 管理

Ambari API提供了对Apache Hadoop集群的资源的管理。
这包括创建,删除和更新资源。

4.1 POST

POST方法用于创建新资源. 如果新资源创建成功,则返回201相应代码
还可以返回代码202表示该指令已被服务器接受(参见4.4 异步响应)

实例

为集群hadoop创建HDFS服务

复制代码
1
2
POST /clusters/hadoop/services/HDFS
复制代码
1
2
curl -u admin:admin -X POST http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS

响应:

复制代码
1
2
201 Created

4.2 PUT

PUT方法用于更新资源。
如果修改了现有资源,则将返回200响应代码以指示请求已成功完成。
还可以返回响应代码202以指示该指令已被服务器接受(参见4.4 异步响应)。

实例:

启动HDFS服务(将HDFS服务的状态转变为"STARTED")

复制代码
1
2
PUT /clusters/hadoop/services/HDFS/

请求体

复制代码
1
2
3
4
5
6
{ "ServiceInfo": { "state" : "STARTED" } }
复制代码
1
2
3
# curl操作实例 curl -u admin:admin -X PUT -d '{"ServiceInfo":{"state":"STARTED"}}' http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS

响应
响应代码202指示服务器已经接受了更新资源的指令。
响应的主体包含为执行指令而创建的请求资源的ID和href(参见异步响应)

复制代码
1
2
3
4
5
6
7
8
{ "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20", "Requests" : { "id" : 20, "status" : "Accepted" } }

4.3 DELETE

使用DELETE方法删除资源。
如果删除了现有资源,则将返回200响应代码以指示请求已成功完成。
还可以返回响应代码202,指示服务器已接受该指令并且该资源已标记为删除(参见4.4异步响应)

实例

删除命名为hadoop的集群

复制代码
1
2
DELETE /clusters/hadoop
复制代码
1
2
curl -u admin:admin -X DELETE http://192.168.226.140:8080/api/v1/clusters/hadoop

响应

复制代码
1
2
200 OK

4.4 异步响应

管理API可以返回响应代码202,该响应代码表示请求已被接受。
响应的正文包含为执行指令而创建的请求资源的ID和href

实例

复制代码
1
2
3
# 获取hadoop集群 id为20的请求 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20

响应(部分)

复制代码
1
2
3
4
5
6
7
8
9
10
202 Accepted { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20", "Requests" : { "id" : 20, "request_status" : "IN_PROGRESS" ... } }

然后,可以使用响应主体中的href来查询关联的请求资源并监视请求的进度。
一个请求资源具有一个或多个任务子资源。
以下示例显示如何使用部分响应来查询请求资源的任务资源。

复制代码
1
2
/clusters/c1/requests/6?fields=tasks/Tasks/*
复制代码
1
2
3
curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20?fields=tasks/Tasks/*

返回的任务资源可用于确定请求的状态
stdout属性由于篇幅过长被省略

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{ "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20", "Requests" : { "cluster_name" : "hadoop", "id" : 20 }, "tasks" : [ { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20/tasks/402", "Tasks" : { "attempt_cnt" : 1, "cluster_name" : "hadoop", "command" : "INSTALL", "command_detail" : "HDFS_CLIENT INSTALL", "end_time" : 1603519829073, "error_log" : "/var/lib/ambari-agent/data/errors-402.txt", "exit_code" : 0, "host_name" : "master.hadoop", "id" : 402, "output_log" : "/var/lib/ambari-agent/data/output-402.txt", "request_id" : 20, "role" : "HDFS_CLIENT", "stage_id" : 0, "start_time" : 1603519825310, "status" : "COMPLETED", "stderr" : "None", "stdout" : "", "structured_out" : { "repository_version_id" : "2", "version" : "2.6.3.0-235" } } }, { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/requests/20/tasks/403", "Tasks" : { "attempt_cnt" : 1, "cluster_name" : "hadoop", "command" : "START", "command_detail" : "NAMENODE START", "end_time" : -1, "error_log" : "/var/lib/ambari-agent/data/errors-403.txt", "exit_code" : 777, "host_name" : "master.hadoop", "id" : 403, "output_log" : "/var/lib/ambari-agent/data/output-403.txt", "request_id" : 20, "role" : "NAMENODE", "stage_id" : 1, "start_time" : 1603519829430, "status" : "IN_PROGRESS", "stderr" : "", "stdout" : "", "structured_out" : { "repository_version_id" : "2", "version" : "2.6.3.0-235" } } } ] }

五.资源

5.1 集合资源

集合资源是一组相同类型的资源,而不是任何特定资源。
例如:

复制代码
1
2
/clusters # 指的是集群的集合

5.2 实例资源

实例资源是单个特定资源。
例如:

复制代码
1
2
/clusters/hadoop

指代ID为hadoop的集群资源

5.3 资源类型

资源分为几种类型。
这允许用户查询相同类型的资源集合。
一些资源类型由子类型组成(例如,服务是集群的子资源)。

以下是一些Ambari资源类型的列表以及说明和用法示例

5.3.1 集群

集群资源代表命名的hadoop集群.
集群是顶级资源

集群资源配置

配置描述
Clusters/cluster_id唯一的集群id
Clusters/cluster_name集群名称
Clusters/versionHDP服务版本
Clusters/desired_configs所需的配置

集群资源操作

复制代码
1
2
3
4
5
6
7
8
9
# 获取集群列表 GET /clusters # 获取集群信息 GET /clusters/:name # 创建集群 POST /clusters/:name # 删除集群 DELETE /clusters/:name

5.3.2 服务

服务资源是Hadoop群集的服务(例如HDFS,MapReduce和Ganglia)。
服务资源是集群的子资源。

服务配置

配置描述
ServiceInfo/service_name服务名称
ServiceInfo/cluster_name父集群名称
ServiceInfo/state服务当前状态
ServiceInfo/desired_configs所需配置

服务状态列表

状态描述
INIT首次创建服务后的初始状态
INSTALLING服务安装中…
INSTALL_FAILED服务安装失败
INSTALLED服务安装成功,但并未运行
STARTING服务启动中…
STARTED服务已启动
STOPPING服务停止中…
UNINSTALLING服务卸载中…
UNINSTALLED服务已卸载
WIPING_OUT已安装服务清除中…
UPGRADING服务升级中…
MAINTENANCE服务已标记为维护
UNKNOWN无法确定服务状态

服务资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
# 列出服务列表 GET /clusters/:name/services # 查看服务信息 GET /clusters/:clusterName/services/:serviceName # 创建服务 POST /clusters/:clusterName/services/:serviceName # 更新服务 PUT/clusters/:clusterName/services # 更新指定服务 PUT /clusters/:clusterName/services/:serviceName

5.3.3 组件

组件资源是服务的各个组件(例如HDFS / NameNode和MapReduce / JobTracker)。
组件是服务的子资源。

组件资源配置

配置描述
ServiceComponentInfo/service_name父服务名称
ServiceComponentInfo/component_name组件名称
ServiceComponentInfo/cluster_name父集群名称
ServiceComponentInfo/description组件描述
ServiceComponentInfo/desired_configs所需的配置

组件操作

复制代码
1
2
3
4
5
6
7
# 获取组件列表 GET /clusters/:clusterName/services/:serviceName/components # 查看组件信息 GET /clusters/:name/services/:serviceName/components/:componentName # 创建组件 POST /clusters/:clusterName/services/:serviceName/components/:componentName

5.3.4 主机

主机资源是组成Hadoop集群的主机。
主机是顶级资源,但也可以是集群的子资源。

主机资源配置

配置描述
Hosts/host_name主机名
Hosts/cluster_name父集群名称
Hosts/ip主机ip地址
Hosts/total_mem主机上可用总内存
Hosts/cpu_count主机cpu数量
Hosts/os_arch主机的操作系统架构(例如x86_64)
Hosts/os_type主机的操作系统类型(例如 centos 6)
Hosts/rack_info主机的机架信息
Hosts/last_heartbeat_time自Unix时代以来主机发出的最后一次心跳的时间(以毫秒为单位)
Hosts/last_agent_env主机环境信息
Hosts/last_registration_time自Unix时代以来主机最后一次注册的时间(以毫秒为单位)
Hosts/disk_info主机磁盘信息
Hosts/host_status主机状态(未知,健康,不健康)
Hosts/public_host_name公用主机名。 请注意,通常在创建主机资源的过程中以特定于环境的方式填充此属性。 如果无法确定公共主机名,则它将与host_name属性相同
Hosts/host_state主机状态
Hosts/desired_configs所需配置

主机状态列表

状态描述
INIT新的主机状态
WAITING_FOR_HOST_STATUS_UPDATES从主机接收到注册请求,但主机尚未响应其状态更新检查
HEALTHY服务器定期从主机接收心跳,并且主机状态正常
HEARTBEAT_LOST在配置的心跳到期窗口中,服务器未从主机接收到心跳
UNHEALTHY主机本身或通过其他方式(监视层)报告的主机处于不正常状态

主机操作

复制代码
1
2
3
4
5
6
7
# 获取主机列表 GET /clusters/:clusterName/hosts # 查看主机信息 GET /clusters/:clusterName/hosts/:hostName # 创建主机 POST /clusters/:clusterName/hosts/:hostName

5.3.5 主机组件

主机组件资源是特定主机上的组件。
主机组件是主机的子资源。

主机组件资源配置

配置描述
HostRoles/role_id主机组件id
HostRoles/cluster_name父资源集群名称
HostRoles/host_name父资源主机名称
HostRoles/component_name父组件名称
HostRoles/state主机组件状态
HostRoles/actual_configs实际配置
HostRoles/desired_configs所需配置
HostRoles/stack_id服务id(例如 HDP-1.3.0)

主机组件操作

复制代码
1
2
3
4
5
6
7
8
9
# 主机组件列表 GET /clusters/:name/hosts/:hostName/host_components # 查看主机组件信息 GET /clusters/:name/hosts/:hostName/host_components/:componentName # 创建主机组件 POST clusters/:clusterName/hosts/:hostName/host_components/:componentName # 更新主机组件 PUT api/v1/clusters/:name/hosts/:hostName/host_components/:hostComponentName

5.3.6 配置

配置资源是一组键/值对,用于配置Hadoop集群的服务。
集群具有许多配置集,每个配置集都可以应用于特定功能。
配置由类型,标签和定义它们的属性组成。 例如:

复制代码
1
2
3
4
5
6
7
8
9
{ "type": "core-site", "tag": "version1", "properties": { "fs.default.name": "hdfs://h0:8020" // ... } }

配置资源操作

复制代码
1
2
3
4
5
# 获取集群(名称为hadoop)配置信息 GET /api/v1/clusters/hadoop/configurations curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/configurations
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 获取集群(名称为hadoop)yarn-site 标签为version1配置信息 GET /api/v1/clusters/hadoop/configurations?type=yarn-sie&tag=version1 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/configurations?type=yarn-sie&tag=version1 { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/configurations?type=yarn-site", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/configurations?type=yarn-site&tag=version1", "tag" : "version1", "type" : "yarn-site", "version" : 1, "Config" : { "cluster_name" : "hadoop", "stack_id" : "HDP-2.6" } } ] }
复制代码
1
2
3
4
5
6
7
8
9
10
# 要创建新配置,可以进行以下调用。 创建配置与应用配置不同。 POST /api/v1/clusters/hadoop/configurations { "tag" : "version2", "type" : "global", "Config" : { "cluster_name" : "c2" } }

5.3.7 请求

请求资源是为执行指令而创建的任务组

请求资源配置

配置描述
Requests/id请求id
Requests/cluster_name父集群名称
Requests/request_context请求上下文

请求操作

复制代码
1
2
3
# 获取请求列表 GET /clusters/:clusterName/requests

5.3.8 任务

任务资源是组成请求资源的各个任务

任务资源配置

配置描述
Tasks/id任务id
Tasks/request_id父请求id
Tasks/cluster_name父集群名称
Tasks/attempt_cnt完成此任务的尝试次数
Tasks/command任务命令
Tasks/exit_code退出码
Tasks/host_name主机名
Tasks/role角色
Tasks/stage_id阶段id
Tasks/start_time任务开始时间
Tasks/status任务状态
Tasks/stderr运行任务的错误输出
Tasks/stdout运行任务的标准输出

任务资源状态列表

状态描述
PENDING等待状态…
QUEUED排队中…
IN_PROGRESS正在运行
COMPLETED运行成功
FAILED失败
TIMEDOUT主机未及时响应
ABORTED行动被放弃

任务资源操作

复制代码
1
2
3
# 列出任务列表 GET /clusters/:clusterName/requests/:requestId/tasks

5.3.9 请求调度

请求调度根据调度计划定义要执行的一批请求

请求调度操作示例

复制代码
1
2
3
4
5
6
7
# 列举集群定义的所有请求调度列表 GET /api/v1/clusters/c1/request_schedules # 创建请求调度资源 POST /api/v1/clusters/c1/request_schedules # 删除指定的请求调度资源 DELETE /api/v1/clusters/c1/request_schedules/:id

5.3.10 工作流程

工作流资源是Hadoop集群中MapReduce作业的DAG。

工作流程资源操作

复制代码
1
2
3
4
5
6
# 获取工作流资源列表 GET /clusters/:name/workflows # 查看工作流资源信息 GET /clusters/:name/workflows/:workflowid

5.3.11 作业

作业资源代表工作流程中的各个节点(MapReduce作业)

作业资源操作

复制代码
1
2
3
4
5
# 获取作业资源列表 GET /clusters/:name/workflows/:workflowid/jobs # 查看作业资源信息 GET /clusters/:name/workflows/:workflowid/jobs/:jobid

5.3.12 任务尝试

任务尝试资源是job中map或者reduce任务的尝试

任务尝试资源操作

复制代码
1
2
3
4
5
# 获取任务尝试资源列表 GET /clusters/:name/workflows/:workflowid/jobs/:jobid/taskattempts # 查看任务尝试资源信息 GET /clusters/:name/workflows/:workflowid/jobs/:jobid/taskattempts/:taskattempt

5.3.13 视图

视图提供了一种系统化的方式来插入UI,
以提供Ambari Web中的自定义可视化,管理和监视功能

视图资源操作

复制代码
1
2
3
4
# 获取视图资源列表 GET http://<server>:8080/api/v1/views/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views
复制代码
1
2
3
4
# 获取指定视图资源 GET http://<server>:8080/api/v1/views/FILES/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views/FILES

结果如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{ "href" : "http://192.168.226.140:8080/api/v1/views/FILES", "ViewInfo" : { "view_name" : "FILES" }, "versions" : [ { "href" : "http://192.168.226.140:8080/api/v1/views/FILES/versions/1.0.0", "ViewVersionInfo" : { "version" : "1.0.0", "view_name" : "FILES" } } ] }
复制代码
1
2
3
4
# 获取指定视图资源版本 GET http://<server>:8080/api/v1/views/FILES/versions/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views/FILES/versions
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
{ "href" : "http://192.168.226.140:8080/api/v1/views/FILES/versions", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/views/FILES/versions/1.0.0", "ViewVersionInfo" : { "version" : "1.0.0", "view_name" : "FILES" } } ] }
复制代码
1
2
3
4
# 获取指定视图资源的指定版本 GET http://<server>:8080/api/v1/views/FILES/versions/1.0.0/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views/FILES/versions/1.0.0
复制代码
1
2
3
4
# 获取指定视图资源指定版本的全部实例 GET http://<server>:8080/api/v1/views/FILES/versions/1.0.0/instances/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views/FILES/versions/1.0.0/instances
复制代码
1
2
3
4
5
# 获取指定视图资源指定版本的指定实例 GET http://<server>:8080/api/v1/views/FILES/versions/1.0.0/instances/AUTO_FLES_INSTANCE curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/views/FILES/versions/1.0.0/instances/AUTO_FLES_INSTANCE
复制代码
1
2
3
4
5
#创建指定视图资源指定版的实例 PUT http://<server>:8080/api/v1/views/FILES/versions/1.0.0/instances/AUTO_FLES_INSTANCE_2 # 删除指定视图资源指定版的实例 DELETE http://<server>:8080/api/v1/views/FILES/versions/1.0.0/instances/AUTO_FLES_INSTANCE_2

5.3.14 仓库版本

仓库版本资源包含有关具有Hadoop服务的可用仓库信息。

仓库版本资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 获取仓库版本资源列表 GET http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/stacks/HDP/versions/2.6/repository_versios { "href" : "http://192.168.226.140:8080/api/v1/stacks/HDP/versions/2.6/repository_versions", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/stacks/HDP/versions/2.6/repository_versions/2", "RepositoryVersions" : { "id" : 2, "stack_name" : "HDP", "stack_version" : "2.6" } } ] }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 通过API创建新的存储库版本。 至少应提供一组基本存储库URL。 POST http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/ { "RepositoryVersions": { "repository_version": "2.2.1.1", "display_name": "HDP-2.2.1.1" }, "operating_systems": [ { "OperatingSystems": { "os_type": "redhat6" }, "repositories": [ { "Repositories": { "repo_id": "HDP-2.2", "repo_name": "HDP", "base_url": "http://..." } }, { "Repositories": { "repo_id": "HDP-UTILS-1.1.0.20", "repo_name": "HDP-UTILS", "base_url": "http://..." } } ] } ] }
复制代码
1
2
3
4
5
# 获取特定服务的指定仓库版本 GET http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/2 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/stacks/HDP/versions/2.6/repository_version/2
复制代码
1
2
3
4
# 删除特定服务的指定仓库版本 DELETE http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/2 curl -u admin:admin -X DELETE http://192.168.226.140:8080/api/v1/stacks/HDP/versions/2.6/repository_version/2
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 更新存储库版本。 可以更改显示名称和基本URL PUT http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/1 { "RepositoryVersions": { "display_name": "HDP-2.2.1.1", "id": 1, "repository_version": "2.2.1.1" }, "operating_systems": [ { "href": "http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/1/operating_systems/redhat5", "OperatingSystems": { "os_type": "redhat5" }, "repositories": [ { "href": "http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/1/operating_systems/redhat5/repositories/HDP-2.2", "Repositories": { "base_url": "http://...", "os_type": "redhat5", "repo_id": "HDP-2.2", "repo_name": "HDP" } }, { "href": "http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/repository_versions/1/operating_systems/redhat5/repositories/HDP-UTILS-1.1.0.20", "Repositories": { "base_url": "http://...", "os_type": "redhat5", "repo_id": "HDP-UTILS-1.1.0.20", "repo_name": "HDP-UTILS" } } ] } ] }
复制代码
1
2
3
4
5
6
7
8
9
# 可以在持久化之前验证存储库的URL。 POST http://<server>:8080/api/v1/stacks/<stack_name>/versions/<stack_version>/operating_systems/redhat5/repositories/HDP-UTILS-1.1.0.20?validate_only=true { "Repositories": { "base_url": "http://..." } }

5.3.15 服务版本

服务版本资源包含某些资源版本库与存储库版本之间的关系。

服务版本资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 获取所有服务版本(集群级别) GET http://<server>:8080/api/v1/clusters/<cluster_name>/stack_versions/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/stack_versions { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/stack_versions", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/stack_versions/2", "ClusterStackVersions" : { "cluster_name" : "hadoop", "id" : 2, "repository_version" : 2, "stack" : "HDP", "version" : "2.6" } } ] }
复制代码
1
2
3
4
# 获取所有服务版本(主机级别) GET http://<server>:8080/api/v1/hosts/<host_name>/stack_versions curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/hosts/master/stack_versions
复制代码
1
2
3
4
5
# 获取单一服务版本(集群级别) GET http://<server>:8080/api/v1/clusters/<cluster_name>/stack_versions/2 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/stack_versions/2
复制代码
1
2
3
4
5
# 获取单一服务版本(主机级别) GET http://<server>:8080/api/v1/hosts/<host_name>/stack_versions/1 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/hosts/master/stack_versions/1
复制代码
1
2
3
4
5
6
7
8
9
10
# 在服务版本资源上执行指定仓库版本的安装(集群级别) POST http://<server>:8080/api/v1/clusters/<cluster_name>/stack_versions/ { "ClusterStackVersions": { "stack": "HDP", "version": "2.2", "repository_version": "2.2.0.1-885" } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
# 在服务版本资源上执行指定仓库版本的安装(主机级别) POST http://<server>:8080/api/v1/hosts/<host_name>/stack_versions/ { "HostStackVersions": { "stack": "HDP", "version": "2.2", "repository_version": "2.2.0.1-885" } }

5.3.16 滚动升级检查

滚动升级检查资源存储有关在滚动升级之前执行的检查成功或者检查失败信息。

复制代码
1
2
3
4
# 检索滚动升级检查的结果。 在运行滚动升级之前,所有检查的状态均应为“通过” GET http://<server>:8080/api/v1/clusters/<cluster_name>/rolling_upgrades_check/ curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/rolling_upgrades_check/
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#以下是一个滚动升级检查成功的实例 { href: "http://<server>:8080/api/v1/clusters/<cluster_name>/rolling_upgrades_check/?fields=*", items: [ { href: "http://<server>:8080/api/v1/clusters/<cluster_name>/rolling_upgrades_check/HOSTS_HEARTBEAT", UpgradeChecks: { check: "All hosts must be heartbeating with the server unless they are in Maintenance Mode", check_type: "HOST", cluster_name: "1", failed_on: [ ], id: "HOSTS_HEARTBEAT", reason: "", status: "PASS" } }, { href: "http://<server>:8080/api/v1/clusters/<cluster_name>/rolling_upgrades_check/SECONDARY_NAMENODE_MUST_BE_DELETED", UpgradeChecks: { check: "The SECONDARY_NAMENODE component must be deleted from all hosts", check_type: "SERVICE", cluster_name: "<cluster_name>", failed_on: [ "SECONDARY_NAMENODE" ], id: "SECONDARY_NAMENODE_MUST_BE_DELETED", reason: "The SECONDARY_NAMENODE component must be deleted from host(s): c6401.ambari.apache.org. Please use the REST API to delete it.", status: "FAIL" } } ] }

5.3.17 升级

升级资源用于管理和查询正在进行的滚动升级的状态。

5.3.18 警报

警报资源包含定义,历史记录和出站通知的调度之间的关系。
Ambari利用其自己的警报框架来监视服务,组件或托管并向相关方发出通知
告警定义:
告警定义是用于将警报分发到适当的Ambari代理的模板。 它们控制警报的类型,阈值以及通知目标时要使用的信息。
告警调度:
告警调度涉及创建警报定义组,并向这些组添加通知目标。
告警历史:
告警历史可用于查询告警的当前状态以及所有历史事件

5.3.19 凭证

凭证资源是主体(或用户名)和密码对,它们使用别名标记并存储在临时或持久存储设施中。
这些资源可以被创建,更新和删除。
但是,(出于安全原因)获取凭据资源时,仅返回别名和凭据是存储在临时存储还是持久存储中的指示符。
凭据是集群的子资源。

凭证资源配置

配置描述
Credential/cluster_name集群名称
Credential/alias别名
Credential/principal主体(或用户名)-获取凭据时此值不可见
Credential/key私钥(或密码)-获取凭据时此值不可见
Credential/type凭证存储的类型:持久存储还是临时存储

凭证资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 获取凭证资源列表 GET /clusters/:clusterName/credentials curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/credentials # 获取有关现有凭证的详细信息。 出于安全考虑,也不会返回有关凭据的所有信息。 GET /clusters/:clusterName/credentials/:alias GET /clusters/hadoop/credentials/kdc.admin.credentials { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/credentials/kdc.admin.credentials", "Credential" : { "alias" : "kdc.admin.credentials", "cluster_name" : "hadoop", "type" : "temporary" } } # 创建凭证 POST /clusters/:clusterName/credentials/:alias # 更新凭证 PUT /clusters/:clusterName/credentials/:alias # 删除凭证 DELETE /clusters/:clusterName/credentials/:alias DELETE /clusters/hadoop/credentials/external.db

5.3.20 权限

权限资源用于帮助确定用户的授权权限。
通过在用户和要投影到某个资源上的权限之间建立特权关系,将权限分配给用户

权限资源配置

配置描述
PermissionInfo/permission_id权限的唯一ID-该值可用于唯一标识权限
PermissionInfo/permission_name权限的唯一名称-此值可用于唯一标识权限
PermissionInfo/permission_label权限的描述性标签-此值可用于在用户界面中显示权限
PermissionInfo/resource_name此权限与之相关的资源类型。 可能的值包括:Ambari(Ambari服务器自身),CLUSTER(由Ambari服务器管理的集群),VIEW(由Ambari服务器管理的视图)

权限资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 返回现有权限的集合 GET /permissions curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/permissions { "href" : "http://192.168.226.140:8080/api/v1/permissions", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/permissions/1", "PermissionInfo" : { "permission_id" : 1 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/2", "PermissionInfo" : { "permission_id" : 2 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/3", "PermissionInfo" : { "permission_id" : 3 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/4", "PermissionInfo" : { "permission_id" : 4 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/5", "PermissionInfo" : { "permission_id" : 5 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/6", "PermissionInfo" : { "permission_id" : 6 } }, { "href" : "http://192.168.226.140:8080/api/v1/permissions/7", "PermissionInfo" : { "permission_id" : 7 } } ] }
复制代码
1
2
3
4
# 获取现有权限的详细信息 GET /permissions/:permission_id curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/permissions/1
复制代码
1
2
3
4
5
6
7
# 创建一个新的权限资源。 不支持此操作,权限是只读资源。 会返回500的状态码 POST /permissions/:permission_id # 更新已有的权限资源 不支持此操作,权限是只读资源。 会返回500的状态码 PUT /permissions/:permission_id # 删除已有的权限资源 不支持此操作,权限是只读资源。 会返回500的状态码 DELETE /permissions/:permission_id

5.3.21 用户

用户资源代表可以使用Ambari的用户。
用户被授予在Ambari中执行任务的权限。

用户资源配置列表

配置描述
Users/user_id用户的唯一ID-该值可用于唯一标识用户。该值在内部生成,并且是只读的。
Users/user_name用户的唯一名称-此值不区分大小写,可用于唯一标识用户。创建资源时必须设置该值; 否则为只读。
Users/local_user_name用户的本地用户名-该值区分大小写,并用作通过Ambari Views访问服务时要使用的用户名。 如果未设置,将使用用户名值。该值可由Ambari管理员设置; 否则为只读。
Users/display_name用户的本地用户名-此值用于消息和用户界面中的显示目的。 如果未设置,将使用用户名值。该值可由用户或Ambari管理员设置。
Users/active用户活动状态(活动返回true,否则返回false)
Users/consecutive_failures自上次成功进行身份验证以来的连续身份验证失败次数。该值是只读的。
Users/created指示何时创建用户资源的时间戳。该值在内部生成,并且是只读的。
Users/groups用户是组中的一个成员。该值是只读的。
Users/admin只是用户是否具有管理权限,不推荐使用此属性,可以通过查询用户或角色的权限找到此信息.该值可由Ambari管理员设置; 否则为只读。
Users/ldap_user表示从LDAP服务器导入用户。 不推荐使用此属性.可以通过查询用户的身份验证源找到此信息。该值是只读的。
Users/user_type用户帐户的类型。 可能的值包括:LOCAL(用户具有Ambari本地密码),LDAP(用户使用LDAP服务器进行身份验证),KERBEROS(用户使用Kerberos令牌进行身份验证),PAM(用户使用PAM进行身份验证),JWT(用户使用来自Knox的JWT令牌进行身份验证)
Users/password用户密码
Users/old_password用户曾用密码

用户资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 获取存在的用户列表 GET /users curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/users { "href" : "http://192.168.226.140:8080/api/v1/users", "items" : [ { "href" : "http://192.168.226.140:8080/api/v1/users/admin", "Users" : { "user_name" : "admin" } } ] }
复制代码
1
2
3
4
5
# 获取指定的用户 GET /users/:user_name curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/users/admin
复制代码
1
2
3
# 创建用户 仅具有AMBARI.MANAGE_USERS特权的用户(当前为Ambari管理员)可以执行此操作。 POST /users/:user_name
复制代码
1
2
3
4
5
# 更新用户 PUT /users/:user_name # 删除用户 DELETE /users/:user_name

5.3.22 认证来源

认证源资源是用户资源的子资源。
每个来源都代表一个用户可以用来登录Ambari的身份验证来源。
有不同类型的身份验证源,例如(但不限于)Local,LDAP,JWT和Kerberos。

认证来源配置
配置|描述
AuthenticationSourceInfo/source_id(内部生成,只读)|身份验证源的唯一ID-该值可用于唯一标识身份验证源。
AuthenticationSourceInfo/user_name(只读)|父资源用户名
AuthenticationSourceInfo/authentication_type|身份验证源的类型。 可能的值包括LOCAL,LDAP,KERBEROS,PAM,JWT
AuthenticationSourceInfo/key|身份验证类型专用密钥
AuthenticationSourceInfo/old_key(只读)|身份验证类型曾用密钥
AuthenticationSourceInfo/created(只读)|创建身份验证源资源的时间戳
AuthenticationSourceInfo/updated|(只读)|指示何时更新认证源资源的时间戳

认证来源资源操作

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
# 获取认证来源 GET /users/:user_name/sources # 获取指定用户指定source id的认证来源 GET /users/:user_name/sources/:source_id #创建认证来源资源 POST /users/:user_name/sources # 更新认证来源资源 PUT /user/:user_name/sources/:source_id # 删除认证来源资源 DELETE /user/:user_name/sources/:source_id

六. 部分响应

部分响应用于控制查询返回哪些字段。
部分响应可用于限制返回哪些字段,此外,它还允许查询到达并从子资源返回数据。关键字“字段”用于指定部分响应。 仅将指定的字段返回给客户端。
要指定子元素,请使用符号“ a / b / c”。 可以指定属性,类别和子资源。
通配符“ *”可用于显示资源的所有类别,字段和子资源。
可以组合使用这些功能来为子组件提供“扩展”功能。 无论指定了部分响应字段如何,总是为资源返回某些字段。
这些字段是唯一标识资源的字段。 这将是资源的主要ID字段,并且是资源所有祖先的主要ID字段的外键。

示例:使用部分响应将响应限制为特定字段

复制代码
1
2
3
4
5
6
7
8
9
10
11
GET /api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total", "ServiceComponentInfo" : { "cluster_name" : "hadoop", "component_name" : "NAMENODE", "service_name" : "HDFS" } }

示例:使用部分响应将响应限制为多个字段/类别

复制代码
1
2
3
4
5
6
7
8
9
10
11
GET /api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total,metrics/cpu curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total,metrics/cpu { "href" : "http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS/components/NAMENODE?fields=metrics/disk/disk_total,metrics/cpu", "ServiceComponentInfo" : { "cluster_name" : "hadoop", "component_name" : "NAMENODE", "service_name" : "HDFS" } }

示例:使用部分响应来限制对子资源的响应

复制代码
1
2
3
4
GET /api/v1/clusters/hadoop/hosts/master.hadoop?fields=host_components curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/master.hadoop?fieldshost_components

示例:使用部分响应将子资源扩展到一个级别

复制代码
1
2
3
4
GET /api/v1/clusters/hadoop/hosts/master.hadoop?fields=host_components/* curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/master.hadoop?fieldshost_components/*

示例:使用部分响应进行子资源的多级扩展

复制代码
1
2
3
GET /api/v1/clusters/hadoop/hosts/master.hadoop?fields=host_components/component/* curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/master.hadoop?fieldshost_components/component/*

示例:使用部分响应将收集资源实例扩展到一个深度

复制代码
1
2
3
GET /api/v1/clusters/hadoop/hosts?fields=* curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/?fields=*

示例: 对于每个群集,获取群集名称,所有主机名和所有服务名称

复制代码
1
2
3
GET /api/v1/clusters?fields=Clusters/cluster_name,hosts/Hosts/host_name,services/ServiceInfo/service_name

示例:获取给定组件的所有主机名

复制代码
1
2
GET /api/v1/clusters/c1/services/HDFS/components/DATANODE?fields=host_components/HostRoles/host_name

示例:获取给定服务的所有主机名和组件名称

复制代码
1
2
3
GET /api/v1/clusters/c1/services/HDFS?fields=components/host_components/HostRoles/host_name, components/host_components/HostRoles/component_name

七. 查询谓词

查询谓词用于限制查询返回的数据. 与SQL查询中的where语句同义.
出了谓词中使用的字段外,提供查询参数不会导致返回数据的任何链接扩展.
查询谓词只能应用于集合资源,由至少一个关系表达式组成.
具有多个关系表达式的谓词还包含逻辑运算符,这些运算符连接关系表达式。 谓词也可以使用方括号对表达式进行显式分组。

关系查询操作符

操作符实例描述
=name=host1字符串或数字相等
!=name!=host1字符串或数字不等
<disk_total<50数字小于
>disk_total>50数字大于
<=disk_total<=50数字小于等于
>=disk_total>=50数字大于等于

逻辑运算操作符

操作符实例描述
|name=host1|name=host2
&prop1=foo&prop2=bar
!!prop<50

逻辑运算符优先级

标准逻辑运算符优先级规则适用。
以最低优先级开始的优先顺序列出了以上逻辑运算符。

括号

符号含义
(左括号
)右括号

括号可用于提供表达式的显式分组。
方括号内的表达式具有最高优先级。

操作符功能

操作符实例描述
in()name.in(foo,bar)in功能,类似逻辑运算符中的或
isEmpty()category.isEmpty()用于确定类别是否包含任何属性

运算符函数的行为类似于关系运算符,并提供其他功能。
某些运算符函数(例如in())像上述关系运算符一样充当二进制运算符,其中存在左和右操作数。
一些运算符函数是一元运算符,例如isEmpty(),其中只有一个操作数。

查询谓词操作

示例:获取具有2个以上cpu并且状态为HEALTHY的主机

复制代码
1
2
3
4
GET /api/v1/clusters/hadoop/hosts?Hosts/host_status=HEALTHY&Hosts/cpu_count>=2 curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts?Hosts/host_status=HEALTHY&Hosts/cpu_count>=2

示例:获取cpu小于两个或者状态不是HEALTHY的主机

复制代码
1
2
GET /api/v1/clusters/c1/hosts?Hosts/cpu_count<2|Hosts/host_status!=HEALTHY

示例:获取所有cpu小于2的rhel6主机或者cpu大于3的centos6主机

复制代码
1
2
GET /api/v1/clusters/c1/hosts?Hosts/os_type=rhel6&Hosts/cpu_count<2|Hosts/os_type=centos6&Hosts/cpu_count>=3

示例:获取状态不是HEALTHY或者最后一次心跳时间小于1360600135905并且机架信息为default_rack的所有主机

复制代码
1
2
3
GET /api/v1/clusters/c1/hosts?(Hosts/host_status!=HEALTHY|Hosts/last_heartbeat_time<1360600135905) &Hosts/rack_info=default_rack

示例:使用IN运算符获取主机名为host1或host2或host3的主机

复制代码
1
2
GET /api/v1/clusters/c1/hosts?Hosts/host_name.in(host1,host2,host3)

示例:获取并扩展所有HDFS组件,这些组件在“ metrics / jvm”类别中至少具有1个属性(组合查询和部分响应语法)

复制代码
1
2
GET /api/v1/clusters/c1/services/HDFS/components?!metrics/jvm.isEmpty()&fields=*

示例:将所有“已安装”服务的状态更新为“已开始”

复制代码
1
2
3
4
5
6
7
PUT /api/v1/clusters/c1/services?ServiceInfo/state=INSTALLED { "ServiceInfo": { "state" : "STARTED" } }

八. 批量请求

可以批量处理请求。
这允许在单个请求中将多个主体指定为数组。

示例:在单个请求中创建多个主机

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
POST /api/v1/clusters/c1/hosts/ [ { "Hosts" : { "cluster_name" : "c1", "host_name" : "host1" } }, { "Hosts" : { "cluster_name" : "c1", "host_name" : "host2" } }, { "Hosts" : { "cluster_name" : "c1", "host_name" : "host3" } } ]

九. 请求信息

请求信息资源允许用户在请求主体中指定其他属性。

描述
查询请求的查询字符串。 对于克服URL的长度限制以及为批处理请求的每个元素指定查询字符串很有用。
上下文上下文字符串,API客户端尅传递上下文字符串以指定请求的内容(比如:启动HDFS服务,添加主机等)

查询
查询属性允许用户将查询字符串指定为请求主体的一部分。
如果查询字符串很长,导致请求超出URL的限制,有时这是必需的。
示例:在请求正文中指定查询字符串

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PUT /clusters/c1/services { "RequestInfo":{ "query":"ServiceInfo/state=STARTED&ServiceInfo/service_name=HDFS&…" }, "Body": { "ServiceInfo": { "state" : "INSTALLED" } } }

查询属性也可以应用于批处理请求的元素。

示例:在请求主体中为批处理请求指定查询字符串

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
PUT /api/v1/clusters/c1/hosts [ { "RequestInfo":{ "query":"Hosts/host_name=host1" }, "Body": { "Hosts": { "desired_config": { "type": "global", "tag": "version50", "properties": { "a": "b", "x": "y" } } } } }, { "RequestInfo":{ "query":"Hosts/host_name=host2" }, "Body": { "Hosts": { "desired_config": { "type": "global", "tag": "version51", "properties": { "a": "c", "x": "z" } } } } } ]

上下文
在某些情况下,请求将返回202以指示该指令已被服务器接受(请参见异步响应)。
在这些情况下,响应的正文包含为执行指令而创建的请求资源的ID和href。
可能需要将上下文字符串附加到请求,然后将其分配给结果请求响应。

在以下示例中,发出了停止HDFS服务的请求。
请注意,上下文是作为请求信息属性传递的。

示例:在请求正文中指定查询字符串

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PUT /clusters/c1/services { "RequestInfo":{ "query":"ServiceInfo/state=STARTED&ServiceInfo/service_name=HDFS", "context":"Stop HDFS service." }, "Body": { "ServiceInfo": { "state" : "INSTALLED" } } }

响应:

复制代码
1
2
3
4
5
6
7
8
{ "href" : "http://your.ambari.server/api/v1/clusters/c1/requests/13", "Requests" : { "id" : 13, "status" : "InProgress" } }

当查询上例中返回的请求资源时,将提供的上下文字符串作为响应的一部分返回。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
GET api/v1/clusters/c1/requests/13 #响应 { "href" : "http://ec2-50-19-183-89.compute-1.amazonaws.com:8080/api/v1/clusters/c1/requests/13", "Requests" : { "id" : 13, "cluster_name" : "c1", "request_context" : "Stop HDFS service." }, "tasks" : [] }

十. 时间指标

某些指标的值在一定范围内可用。要查询度量标准的值范围,请使用以下部分响应语法。

要获取单个属性的时态数据:?fields = category / property [开始时间,结束时间,步骤]

要获取类别中所有属性的时间数据:?fields = category [开始时间,结束时间,步骤]

开始时间:必填字段。 Unix纪元时间格式的查询开始时间。结束时间:可选字段,默认为现在。 Unix纪元时间格式的查询结束时间。步骤:可选字段,默认为相应指标系统的默认值。如果提供,还必须提供结束时间。返回的数据点之间的时间间隔(以秒为单位)。提供的值越大,返回的数据点就越少,因此可用于限制在给定时间范围内返回的数据量。这仅用作建议,因此结果间隔可能与指定的间隔不同。

返回的结果是指定时间范围内的数据点列表。每个数据点都是一个值/时间戳对。

注意:必须理解,请求大量的时间数据可能会导致严重的性能下降,这一点很重要。始终要求提供最少的信息量。如果需要大量数据,请考虑将请求分成多个较小的请求。

实例:仅使用开始时间对单个属性进行时间查询

复制代码
1
2
3
GET /api/v1/clusters/hadoop/hosts/master.hadoop?fields=metrics/jvm/gcCount[1360610225] curl -u admin:admin -X GET http://192.168.226.140:8080/api/v1/clusters/hadoop/hosts/master.hadoop?fields=metrics/jvm/gcCount[1360610225]

实例:使用开始时间,结束时间和步骤来临时查询类别

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
GET /api/v1/clusters/c1/hosts/host1?fields=metrics/jvm[1360610200,1360610500,100] 200 OK { “href” : …/clusters/c1/hosts/host1?fields=metrics/jvm[1360610200,1360610500,100]”, ... “metrics”: [ { “jvm”: { "gcCount" : [ [10, 1360610200], [12, 1360610300], [13, 1360610400], [14, 1360610500] ], "gcTimeMillis" : [ [1000, 1360610200], [2000, 1360610300], [5000, 1360610400], [9500, 1360610500] ], ... } } ] }

十一. 分页

通过指定页面大小和偏移量,可以将为请求返回的资源划分为多个页面。

参数描述
page_size分页响应要返回的资源数量
from起始页资源(包含起始页)
to结束页资源(包含结束页)

注意:可以指定from或to,不能两者都指定。 如果两者均未指定,则假定为“ from = 0”。
offset是一个整数值,表示资源集中的偏移量(基于零)。
例如,“ from = 21”表示响应页面的第一个资源应为资源集的第21个资源。

实例:从21号开始获取包含10个请求资源的页面

复制代码
1
2
/api/v1/clusters/cl1/requests?from=21&page_size=10

start关键字指示资源集的开始,相当于偏移量0。

实例:从头开始获取包含10个请求资源的页面

复制代码
1
2
3
4
/api/v1/clusters/cl1/requests?from=start&page_size=10 /api/v1/clusters/cl1/requests?from=0&page_size=10

end关键字指示资源集的结尾,相当于偏移量为-1。

实例:获取最后10个请求资源

复制代码
1
2
3
4
/api/v1/clusters/cl1/requests?to=end&page_size=10 /api/v1/clusters/cl1/requests?to=-1&page_size=10

隐含资源的默认排序(通过资源键属性的自然排序)。

HTTP返回码

http码描述
200OK
400错误的请求
401未经授权
403禁止的
404未找到
500内部服务器错误

十二. 异常

异常响应的实例

复制代码
1
2
3
4
5
6
404 Not Found { "status" : 404, "message" : "The requested resource doesn't exist: Cluster not found, clusterName=someInvalidCluster" }
复制代码
1
2
3
4
5
6
7
400 Bad Request { "status" : 400, "message" : "The properties [foo] specified in the request or predicate are not supported for the resource type Cluster." }

十三. 操作中遇到的问题

创建服务失败:

复制代码
1
2
3
# 执行如下命令创建HDFS服务 curl -u admin:admin -X POST http://192.168.226.140:8080/api/v1/clusters/hadoop/services/HDFS

报错如下:

复制代码
1
2
3
4
5
{ "status" : 400, "message" : "CSRF protection is turned on. X-Requested-By HTTP header is required." }

解决方案:

复制代码
1
2
3
4
5
6
7
vi /etc/ambari-server/conf/ambari.properties # 添加如下内容: api.csrfPrevention.enabled=false # 重启ambari-server ambari-server restart # 重新执行添加/删除服务命令

最后

以上就是闪闪招牌最近收集整理的关于Ambari(六)----Ambari api使用文章目录一. curl简介二. 认证三. 监控四. 管理五.资源六. 部分响应七. 查询谓词八. 批量请求九. 请求信息十. 时间指标十一. 分页十二. 异常十三. 操作中遇到的问题的全部内容,更多相关Ambari(六)----Ambari内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部