跳转到: 导航, 搜索

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 只是集群中某个节点上运行的进程。节点进程列表示例
  1. jobtracker
  2. namenode
  3. tasktracker
  4. 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 字符串