跳转到: 导航, 搜索

Sahara/PluggableProvisioning

概述

Savanna 可插拔配置机制旨在部署 Hadoop 集群,并将其与第三方供应商管理工具(如 Apache Ambari 和 Cloudera Management Console)集成。 此外,所有与配置和管理 vanilla Hadoop 相关的功能都将被提取到单独的 Vanilla Hadoop 插件中。 此页面描述了所有组件及其工作流程。 请访问以下资源以获取更多信息

其他资源

插件 API 和对象模型 Savanna/PluggableProvisioning/PluginAPI
集群对象生命周期 Savanna/PluggableProvisioning/ClusterLifecycle

组件及其描述

Savanna 可插拔机制由以下主要组件组成

  1. Savanna (控制器)
  2. 插件

还有两个组件被控制器和插件使用

  1. 镜像注册表 (IR);
  2. 虚拟机管理器;

镜像注册表

Savanna 通常情况下,以及每个插件特别需要 Glance 中准备好的特殊镜像。
例如,如果用户想从头开始部署集群,则只需要一个镜像 - Ubuntu,例如。 因此,应该能够从 Glance 获取精确的 Ubuntu 镜像。 在更一般的情况下,应该能够确定哪个镜像属于特定的插件。 除了这一点,有些插件使用特殊的“管理”节点类型,这需要特殊的管理镜像。
IR 提供了一种机制来解决这个问题:将镜像与一个或多个标签关联,并设置有关镜像的一些附加信息,例如

  1. _savanna_tag_<tag-name>: True
  2. _savanna_description: “简短描述”
  3. _savanna_os: “ubuntu-12.04-x86_64”
  4. _savanna_hadoop: “hadoop-1.1.1”

镜像信息存储在 PostgreSQL 中。 镜像的 ID 在 Glance 和 IR 中是相同的。

虚拟机管理器

该组件只是一个低级助手包,用于帮助插件与虚拟机交互。

镜像注册表和虚拟机管理器的API

请访问 Savanna/PluggableProvisioning/IRAndVMManagerAPI


Savanna 和插件

确定 Savanna 和插件之间的责任划分非常重要

  • Savanna
    • 提供资源和基础设施(预配置的虚拟机、DNS 等);
    • 集群拓扑、节点和存储放置;
    • 集群/Hadoop/工具配置和状态存储;
  • 插件
    • 集群监控;
    • 附加工具的安装和管理(Pig、Hive 等);
    • 最终集群配置和 Hadoop 管理;
    • 添加/删除集群中的节点(对于 Savanna 来说是不透明的)。

Savanna - 插件互操作性

  1. 用户使用 Savanna API 启动集群(添加/删除节点);
  2. 用户确定应使用哪个配置插件;
  3. 如果用户想从插件的特定配置文件启动集群,则插件会验证文件的正确性并创建集群对象。 请参阅下一节中相应的流程;
  4. Savanna 解析用户的更改并对其进行通用验证; 除此之外,Savanna 还会运行插件特定的验证;
  5. Savanna 在 DB 中创建(修改)集群对象,向用户返回响应并启动后台作业,该作业将配置和启动集群;
  6. 用户从 Savanna API 接收到有关创建(修改)集群的信息的响应;
  7. 虚拟机管理器提供助手,用于 ssh/scp/etc 到虚拟机;
  8. 插件应在管理虚拟机上配置和启动第三方供应商管理工具,该工具将控制 Hadoop 集群;
  9. 插件可以更新集群状态和信息以公开有关它的信息。


从用户角度看集群创建流程

流程如下

  • 指定集群名称;
  • 获取插件列表;
  • 选择插件版本和 Hadoop 版本(仅次要变化);
  • 选择集群的创建类型
用户有两种集群创建方式
  • a. 从集群模板(见…)
  • b. 从配置文件 (CF)
集群模板以及 CF 描述了集群的模式。 但是 CF 的处理和格式对于每个插件来说是特定的。
如果用户选择 a,则可以更改、添加或删除节点组。 在这些操作期间,用户可以更改每个组中的节点数量,更改节点组模板或为该组选择另一个名称。 完成所有更改后,集群已准备好进行验证。
在第二种情况下,流程几乎相同。 但是,用户在编辑节点组期间无法添加新的节点组或删除旧的节点组。 在“节点组模板”的位置使用 Flavor。
  • 如果可能,添加或删除节点组并为每个节点组指定 flavor 或节点模板;
  • 启动集群;
  • [b-flow] 插件验证配置文件
  • savanna 执行基本验证并将集群配置传递给插件;
  • 插件验证请求,如果有效,则将生成基础设施请求;
  • 基础设施请求将包含
    • 元组列表(flavor、镜像、实例数);
    • 机器启动后需要执行的操作列表,例如无密码 ssh、设置 DNS;
  • savanna 创建并准备基础设施并将描述传递给插件;
  • 插件启动 Hadoop 集群。

My cluster.png