Sahara/PluggableProvisioning/PluginAPI
目录
插件 API
get_versions()
- 返回插件可使用的所有 Hadoop 版本。插件有责任确保为每个 Hadoop 版本提供所有必需的镜像,以及配置和插件创建 Hadoop 集群所需的其他一切。
- 返回值: 字符串列表 - Hadoop 版本
- 示例返回值: (“Apache Hadoop 1.1.1”, “CDH 3”, “HDP 1.2”)
get_configs(hadoop_version)
- 列出插件支持的所有配置,包括描述、默认值和此配置适用的目标。
- 返回值: 配置列表
- 示例返回值: ((“jobtracker heap size”, "JobTracker 堆大小,单位 MB", "int", “512”, true, “service:mapreduce”, "node"))
get_node_processes(hadoop_version)
- 返回给定 Hadoop 版本支持的所有服务和节点进程。每个节点进程属于单个服务,并且这种关系在返回的字典对象中反映出来。有关详细信息,请参阅示例。
- 返回值: 字典,包含条目 (服务 -> 进程列表)
- 示例返回值: {"mapreduce": ["tasktracker", "jobtracker"], "hdfs": ["datanode", "namenode"]}
convert(cluster, file)
- 为插件提供基于插件特定配置创建集群的能力。Savanna 期望插件填充所有必需的字段。有关详细信息,请参阅下面的“集群生命周期(配置文件模式)”部分。
validate_cluster(cluster)
- 验证给定的集群对象。如果正确,则返回空列表。否则,对于每个不正确的字段,该方法应返回带有有意义内容的 validation_error。
- 返回值: validation_errors 列表
- 示例返回值: ((“heap size”), (“堆大小是一个必填字段,必须指定”), (“mapred.task.timeout”, “参数必须是 int”))
update_infra(cluster)
- 插件可以在此处更改集群描述。具体来说,插件
- 必须指定 VM 的镜像
- 可以以任何需要的方式更改 VM 规格。
- 例如,插件可以为管理工具请求额外的 VM。
- 返回值: None
configure_cluster(cluster)
- 配置由 Savanna 预置的 VM 上的集群。在此函数中,插件应执行所有操作,例如调整操作系统、安装所需的软件包(包括 Hadoop,如果需要)、配置 Hadoop 等。
- 返回值: None
start_cluster(cluster)
- 启动已配置的集群。仅当集群已使用 configure_cluster(...) 调用准备好后,才保证调用此方法。
- 返回值: None
scale_cluster(cluster, remaining_vm_specs, new_vm_specs, delete_vm_specs)
- 待修改
- 扩展集群 - 向活动集群添加/删除节点。此函数应配置新节点并将它们附加到集群。此外,插件可以在将要删除的 VM 上进行一些清理。
- 返回值: None
on_terminate_cluster(cluster)
- 当用户终止集群时,Savanna 只是关闭所有集群 VM。在此之前保证调用此方法,允许插件执行一些清理。
- 返回值: None
对象模型
以下是 API 中涉及的所有对象的描述。注意
- cluster 和 node_group 具有 ‘extra’ 字段,允许插件持久化关于集群的任何补充信息。
- node_process 只是集群中某个节点上运行的进程。节点进程列表示例
- jobtracker
- namenode
- tasktracker
- datanode
- 每个插件可能对相同的进程有不同的名称。
сonfig
该对象表示 Hadoop 或 VM 配置中的单个参数。插件可以向此对象添加字段以用于其自身目的:保证控制器将 config 对象返回给插件而不做任何更改。
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| name | 字符串 | ||
| description | 字符串 | ||
| config_type | 枚举 | 可能的值为: 'string', 'integer', 'boolean', 'enum' | |
| config_values | 列表 | 仅当 config_type=enum 时适用,可能的值为: ['a', 'b', 'c'] | |
| default_value | 与 'type' 相同 | ||
| is_optional | 布尔值 | ||
| applicable_target | 字符串 | 目标可以是 get_node_processes(...) 调用中返回的服务,形式为 'service:<service name>',也可以是 'general' | |
| scope | 字符串 | 可以是 'node' 或 'cluster' |
user_input
用户为特定配置提供的价值。
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| config | config | 提供此 user_input 的配置对象 | |
| value | 字符串 | 用户为配置提供的价值 |
instance
为集群创建的实例
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| id | 字符串 | ||
| ip | 字符串 | ||
| credentials | |||
| extra |
node_group
指定集群内的节点组。
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| name | 字符串 | 有助于唯一标识 node_group | |
| image | 字符串 | 来自 Glance 的镜像 ID。此 node_group 中的所有实例都从该镜像启动 | |
| flavor | 字符串 | 应用于此 node_group 中所有实例的 OpenStack flavor | |
| node_processes | 字符串列表 | 在所有此 node_group 的节点上运行的节点进程列表 | |
| node_configs | user_inputs 列表 | 用户提供的配置列表。'general' 配置针对整个节点。针对服务的配置会影响属于这些服务的进程。例如,如果配置针对 'service:mapreduce',则会影响 'jobtracker' 进程。 | |
| anti_affinity_group | 该参数将用于控制 DN 节点的节点放置。待定 | ||
| count | 整数 | 该组中的实例数 | |
| instances | 实例列表 | 创建的实例列表 | |
| vm_requirements | |||
| extra |
cluster
包含关于集群的所有相关信息。此对象提供给插件用于集群创建和扩展。下面的“集群生命周期”部分进一步说明了在哪个时刻填充哪些字段
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| name | 字符串 | ||
| plugin | 字符串 | ||
| hadoop_version | 字符串 | ||
| default_image | 字符串 | 用户指定的 Glance 镜像 ID。插件可以使用它作为集群节点的基镜像 | |
| cluster_configs | user_inputs 列表 | 集群范围的配置列表 | |
| node_groups | node_groups 列表 | ||
| extra |
validation_error
描述用户提供的值中存在的问题。
| 姓名 | 类型 | 约束 | 描述 |
|---|---|---|---|
| config | config | ||
| error_message | 字符串 |