ambari全攻略流程,认识ambari(一)

ambari介绍

Apache Ambari 项目旨在通过开发用于供应、管理和监控 Apache Hadoop 集群的软件来简化 Hadoop 管理。Ambari 提供了一个直观、易于使用的 Hadoop 管理 Web UI,由其 RESTful API 提供支持。

Ambari 系统功能:

  • 配置 Hadoop 集群
    – Ambari 提供了一个分步向导,用于在任意数量的主机上安装 Hadoop 服务。
    – Ambari 为集群处理 Hadoop 服务的配置。
  • 管理 Hadoop 集群
    – Ambari 为在整个集群中启动、停止和重新配置 Hadoop 服务提供集中管理。
  • 监控 Hadoop 集群
    – Ambari 提供了一个仪表板来监控 Hadoop 集群的健康和状态。
    – Ambari 利用Ambari Metrics System进行指标收集。
    – Ambari 利用Ambari Alert Framework进行系统警报,并在需要您注意时通知您(例如,节点出现故障、剩余磁盘空间不足等)。

ambari设计架构

设计目标

  • 平台独立性
    系统必须在架构上⽀持任何硬件和操作系统,例如:RHEL、SLES、Ubuntu、Windows 等。本质上依赖于平台的组件(例如,处理 yum、rpm 包、debian 包等的组件)应该可以通过明确定义的接⼝进行插拔。

  • 可插拔组件
    架构不得采⽤特定的⼯具和技术。任何特定的⼯具和技术都必须由可插拔组件封装。该架构将专注于 Puppet(集中配置管理系统)和相关组件的可插拔性,这是⼀种供应和配置⼯具的选择,以及⽤于持久化状态的数据库。可插拔性⽬标不包括组件间的标准化协议或接⼝与组件的第三⽅实现⼀起⼯作。

  • 版本管理与升级
    运行在各个节点上的 Ambari 组件必须⽀持多个版本的协议,才能⽀持组件的独⽴升级。 Ambari 的任何组件的升级都不能影响集群状态。

  • 可扩展性
    设计应⽀持轻松添加新服务、组件和 API。可扩展性还意味着可以轻松修改 Hadoop 堆栈的任何配置或供应步骤。此外,还需要考虑⽀持 HDP 以外的Hadoop 堆栈的可能性

  • 故障恢复
    系统必须能够从任何组件故障中恢复到⼀致的状态。系统应在恢复后尝试完成挂起的操作。如果某些错误是不可恢复的,故障仍应使系统保持⼀致状态。

  • 安全
    – Ambari ⽤⼾(API 和 Web UI)的⾝份验证和基于⻆⾊的授权。
    – 通过 Kerberos 保护的 Hadoop 堆栈的安装、管理和监视。
    – ⾝份验证和加密之间的有线通信Ambari 组件(例如,Ambari主代理通信)。

  • 错误追踪
    该设计力求简化跟踪故障的过程。错误应该以⾜够的完整与详细的提供给⽤⼾以供分析。

  • 接近实时状态反馈
    对于需要⼀段时间才能完成的操作,系统需要能够及时向⽤⼾提供有关当前运行任务的中间进度、操作完成百分⽐、对操作⽇志的引⽤等(接近实时)。

ambari术语

  • Service(服务)
    Service是指 Hadoop 堆栈中的服务。 HDFS、HBase 和 Zookeeper等是服务的⽰例。⼀个服务可能有多个组件(例如,HDFS 有 NameNode、Secondary NameNode、DataNode 等)。服务也可以只是⼀个客⼾端(例如,Pig没有任何守护程序服务,但只有⼀个客⼾端库)
  • Component(组件)
    Service由⼀个或多个Component组成。例如,HDFS 有 3 个组件:NameNode、DataNode 和 Secondary NameNode。组件可能是可选的。⼀个组件可以跨越多个节点(例如,多个节点上的 DataNode 实例)。
  • Node/Host(节点)
    Node/Host是指集群中的⼀台机器。
  • Node-Component(节点组件)
    Node-Component是指特定节点上的组件实例。例如,特定节点上的特定 DataNode 实例是节点组件。
  • Operation(操作)
    Operation是指在集群上执行的⼀组更改或操作,以满⾜⽤⼾请求或在集群中实现所需的状态更改。例如,启动服务是⼀项操作,运行冒烟测试是⼀项操作。如果⽤⼾请求向集群添加新服务并且还包括运行冒烟测试,那么满⾜⽤⼾请求的整个操作集将构成⼀个操作。
  • Task(任务)
    Task是发送到节点执行的⼯作单元。Task是节点作为Action的⼀部分的⼯作。例如,“Action”可以包括在节点 Node1上安装DataNode,在节点 Node2 上安装DataNode和SNameNode。在这种情况下,Node1 的“任务”将是安装⼀个DataNode,⽽ Node2的“任务”将是安装⼀个DataNode和⼀个SNameNode。
  • Stage(阶段)
    Stage是指完成⼀项操作所需的⼀组任务,并且相互独⽴;同⼀阶段的所有任务都可以跨不同节点并行运行。
  • Action(动作)
    Action由⼀台机器或⼀组机器上的⼀个或多个任务组成。每个动作都有动作 id 跟踪,并且节点⾄少在动作的粒度上报告状态。⼀个动作可以被认为是⼀个正在执行的阶段。
  • Stage Plan(阶段计划)
    ⼀个操作通常由不同机器上的多个任务组成,它们通常具有依赖关系,要求它们以特定顺序运行。有些任务需要先完成,然后才能安排其他任务。因此,⼀个操作所需的任务可以划分为多个阶段,每个阶段必须在下⼀个阶段之前完成,但同⼀阶段的所有任务可以跨不同节点并行调度。
  • Manifest(清单)
    Manifest是指发送到节点执行的任务的定义。清单必须完全定义任务并且必须是可序列化的。清单也可以保存在磁盘上以进行恢复或记录。
  • Role(⻆⾊)
    Role映射到组件(例如,NameNode、DataNode)或操作阶段计划(例如,HDFS rebalancing、HBase smoke test、其他管理命令等)

ambari架构图

ambari整体架构图

ambari全攻略流程,认识ambari(一)_第1张图片

ambari-server架构图

ambari全攻略流程,认识ambari(一)_第2张图片

ambari-agent架构图

ambari全攻略流程,认识ambari(一)_第3张图片

流程示例

介绍⼀些基本⽤例并描述系统如何在高层次上服务请求以及组件如何交互。

ambari-server

向现有集群添加新服务。让我们举⼀个将 Hbase 服务添加到已经运行 HDFS 的现有集群的具体⽰例。HBase master 和 slaves 将被添加到现有节点

  1. 请求通过API 到达服务器,并⽣成请求ID 并将其附加到请求中。在 Coordinator 中调⽤此 API 的处理程序。
  2. API 处理程序执行为现有集群启动新服务所需的步骤。在这种情况下,步骤将是:安装所有服务组件以及所需的先决条件,以特定顺序启动先决条件和服务组件,并重新配置 Nagios 服务器以添加新的服务监控。
  3. Coordinator 将在 Dependency Tracker 中查找并找到 HBase 的先决条件。 Dependency
    Tracker 将返回 HDFS 和 ZooKeeper 组件。协调器还将查找 Nagios 服务器的依赖关系,并将返回
    HBase 客⼾端。 Dependency Tracker 还将返回所需组件的所需状态。因此,Coordinator 将知道
    整个组件集及其所需的状态。协调器将为数据库中的所有这些组件设置所需的状态。
  4. 在上⼀步中,协调器还可以确定它需要⽤⼾输⼊来为 ZooKeeper 选择节点,并可能返回适当的响应。然后,协调员会将组件列表及其所需状态传递给舞台策划者。 Stage Planner 将返回需要在installed、started、modified这些组件的每个节点上执行的分阶段操作序列。 Stage Planner 还将使⽤ Manifest Generator⽣成manifest。
  5. Coordinator 将把这个有序的阶段列表传递给 Action Manager对应的请求ID。
  6. Action Manager 将更新 FSM 中每个节点组件的状态,这将反映操作正在进行中。请注意,每个受影响的节点组件的 FSM 都会更新。在此步骤中,FSM 可能会检测到⽆效事件并抛出失败,这将中⽌操作,并且所有操作都将标记为失败并出现错误。
  7. Action Manager 将为每个操作创建⼀个操作ID,并将其添加到计划中。动作管理器将从计划中选择第⼀个阶段,并将此阶段中的每个动作添加到每个受影响节点的队列中。第⼀个阶段完成后将选择下⼀个阶段。 Action Manager 还将为计划的操作启动⼀个计时器。
  8. Heartbeat Handler 将接收操作的响应并通知操作管理器。 Action Manager 将向 FSM 发送事件以
    更新状态。在超时的情况下,该操作将再次安排或标记为失败。⼀旦动作的所有节点都已完成(收到响应或最终超时),则认为该动作已完成。完成阶段的所有操作后,该阶段被视为已完成。
  9. 操作完成也记录在数据库中。
  10. Action Manager进⼊下⼀个Stage并重复 。

ambari-agent

Agent将每隔⼏秒向Master发送⼀次⼼跳,并在⼼跳响应中接收来⾃Master的命令。⼼跳响应
将是 master 向Agent发送命令的唯⼀⽅式。该命令将在动action queue中排队,由Action executioner 根据command类型和action类型选择正确的⼯具(Puppet、Python 等)执行。因此,
在⼼跳响应中发送的action将在Agent执行异步处理。Action执行者会将响应或进度消息放⼊消息队列中。Agent将在下⼀个⼼跳中将消息队列中的所有内容发送给Master。

附件为原文Ambari_Architecture.PDF

如果有问题和建议可以评论私信,欢迎点赞收藏转发

你可能感兴趣的:(ambari,hadoop,大数据)