Sahara/PluggableProvisioning
< Sahara
目录
概述
Savanna 可插拔配置机制旨在部署 Hadoop 集群,并将其与第三方供应商管理工具(如 Apache Ambari 和 Cloudera Management Console)集成。 此外,所有与配置和管理 vanilla Hadoop 相关的功能都将被提取到单独的 Vanilla Hadoop 插件中。 此页面描述了所有组件及其工作流程。 请访问以下资源以获取更多信息
其他资源
插件 API 和对象模型 Savanna/PluggableProvisioning/PluginAPI
集群对象生命周期 Savanna/PluggableProvisioning/ClusterLifecycle
组件及其描述
Savanna 可插拔机制由以下主要组件组成
- Savanna (控制器)
- 插件
还有两个组件被控制器和插件使用
- 镜像注册表 (IR);
- 虚拟机管理器;
镜像注册表
Savanna 通常情况下,以及每个插件特别需要 Glance 中准备好的特殊镜像。
例如,如果用户想从头开始部署集群,则只需要一个镜像 - Ubuntu,例如。 因此,应该能够从 Glance 获取精确的 Ubuntu 镜像。 在更一般的情况下,应该能够确定哪个镜像属于特定的插件。 除了这一点,有些插件使用特殊的“管理”节点类型,这需要特殊的管理镜像。
IR 提供了一种机制来解决这个问题:将镜像与一个或多个标签关联,并设置有关镜像的一些附加信息,例如
- _savanna_tag_<tag-name>: True
- _savanna_description: “简短描述”
- _savanna_os: “ubuntu-12.04-x86_64”
- _savanna_hadoop: “hadoop-1.1.1”
镜像信息存储在 PostgreSQL 中。 镜像的 ID 在 Glance 和 IR 中是相同的。
虚拟机管理器
该组件只是一个低级助手包,用于帮助插件与虚拟机交互。
镜像注册表和虚拟机管理器的API
请访问 Savanna/PluggableProvisioning/IRAndVMManagerAPI
Savanna 和插件
确定 Savanna 和插件之间的责任划分非常重要
- Savanna
- 提供资源和基础设施(预配置的虚拟机、DNS 等);
- 集群拓扑、节点和存储放置;
- 集群/Hadoop/工具配置和状态存储;
- 插件
- 集群监控;
- 附加工具的安装和管理(Pig、Hive 等);
- 最终集群配置和 Hadoop 管理;
- 添加/删除集群中的节点(对于 Savanna 来说是不透明的)。
Savanna - 插件互操作性
- 用户使用 Savanna API 启动集群(添加/删除节点);
- 用户确定应使用哪个配置插件;
- 如果用户想从插件的特定配置文件启动集群,则插件会验证文件的正确性并创建集群对象。 请参阅下一节中相应的流程;
- Savanna 解析用户的更改并对其进行通用验证; 除此之外,Savanna 还会运行插件特定的验证;
- Savanna 在 DB 中创建(修改)集群对象,向用户返回响应并启动后台作业,该作业将配置和启动集群;
- 用户从 Savanna API 接收到有关创建(修改)集群的信息的响应;
- 虚拟机管理器提供助手,用于 ssh/scp/etc 到虚拟机;
- 插件应在管理虚拟机上配置和启动第三方供应商管理工具,该工具将控制 Hadoop 集群;
- 插件可以更新集群状态和信息以公开有关它的信息。
从用户角度看集群创建流程
流程如下
- 指定集群名称;
- 获取插件列表;
- 选择插件版本和 Hadoop 版本(仅次要变化);
- 选择集群的创建类型
- 用户有两种集群创建方式
- a. 从集群模板(见…)
- b. 从配置文件 (CF)
- 集群模板以及 CF 描述了集群的模式。 但是 CF 的处理和格式对于每个插件来说是特定的。
- 如果用户选择 a,则可以更改、添加或删除节点组。 在这些操作期间,用户可以更改每个组中的节点数量,更改节点组模板或为该组选择另一个名称。 完成所有更改后,集群已准备好进行验证。
- 在第二种情况下,流程几乎相同。 但是,用户在编辑节点组期间无法添加新的节点组或删除旧的节点组。 在“节点组模板”的位置使用 Flavor。
- 用户有两种集群创建方式
- 如果可能,添加或删除节点组并为每个节点组指定 flavor 或节点模板;
- 启动集群;
- [b-flow] 插件验证配置文件
- savanna 执行基本验证并将集群配置传递给插件;
- 插件验证请求,如果有效,则将生成基础设施请求;
- 基础设施请求将包含
- 元组列表(flavor、镜像、实例数);
- 机器启动后需要执行的操作列表,例如无密码 ssh、设置 DNS;
- savanna 创建并准备基础设施并将描述传递给插件;
- 插件启动 Hadoop 集群。
