大数据之集群管理工具Ambari原理学习

集群管理工具Ambari原理学习

ambari官网

https://ambari.apache.org/
以下翻译自
https 😕/issues.apache.org/jira/secure/attachment/12559939/Ambari_Architecture.pdf

注:术语

Service

  • Service指Hadoop栈中的服务。HDFS、HBase、Pig是服务的例子。一个服务可以有多个组件(例如HDFS有NameNode,Secondary NameNode,DataNode等)。服务可以只是一个客户端库(例如,Pig没有任何守护进程服务,只有一个客户端库)。

Component

  • 服务由一个或多个组件组成。例如,HDFS有3个组件:NameNode, DataNode和Secondary NameNode。组件可能 是可选的。一个组件可以跨多个节点(例如,多个节点上的DataNode实例)

Node/Host

  • Node是指集群中的一台机器。Node和host可以互换使用

Node-Component

  • 节点组件是指特定节点上的组件实例。 例如,特定节点上的特定DataNode实例是一个节点组件。

Operation

  • Operation 是指在集群上执行的一组要满足的更改或操作, 用户请求或在集群中实现理想的状态更改。例如,启动服务是一种操作,运行冒烟测试是一种操作。如果 用户请求向集群添加新服务,其中包括运行冒烟测试,测试时,满足用户请求的整个操作集将构成一个操作。一个操作可以包含多个有序的“动作”组成(见下面)。

Task

  • 任务是发送到节点执行的工作单元。任务就是节点作为动作的一部分必须执行的工作。例如,一个“动作”可以包括 在节点n1上安装datanode,并安装datanode,在节点n2上安装安装一个datanode和一个Secondnamenode。在这种情况下,n1的“任务”是安装一个datanode, n2的“任务”将是同时安装一个datanode和一个Secondnamenode

Stage

  • 一个阶段是指完成一项操作所需要的一组相互独立任务。在同一阶段的所有任务可以在不同的运行并行运行。

Action

  • 一个“动作”由一台或一组机器上的一个或多个任务组成。每一个 操作由操作id跟踪,节点至少在
    操作的粒度报告状态。一个动作可以被认为是一个执行阶段。在本文档中,除非另有说明,一个阶段和一个动作有一一对应的。action id将是request-id和stage-id的双射。

Stage Plan

  • 一个操作通常由不同机器上的多个任务组成,通常有依赖项要求它们以特定的顺序运行。在其他任务被安排之前,有些任务需要先被完成。因此, 将一个操作所需要的可以分为不同的阶段,每个阶段都必须是 在下一阶段之前完成,但同一阶段的所有任务都可以在不同节点之间并行调度。

Manifest

  • Manifest指的是被发送到节点执行的任务的定义。 Manifest必须完全定义任务,并且必须是可序列化的。表现还可以 保存在磁盘上以进行恢复或记录。

Role

  • Role可以映射到一个组件(例如NameNode、DataNode)或一个动作 (例如HDFS再平衡、HBase冒烟测试、其他管理命令等)。

一、如图Ambari体系结构如下

在这里插入图片描述

二、ambari—server设计

在这里插入图片描述
用例:

描述系统如何在ambari—server服务请求以及组件如何交互

1.添加服务:向现有集群添加新服务。让我们看一个具体的例子,向已运行的 HDFS现有群集添加Hbase服务,HBase主节点和从节点将被添加到现有节点的子集(无其他额外的节点)。它将经历以下步骤:

  • 请求通过API到达服务器,并生成请求id附在请求之后。在协调器中调用此API的处理程序。
  • API Handler 执行在现有群集上启动新服务所需的步骤 。在这种情况下,步骤是:安装所有服务组件以及所需的先决条件,按特定顺序启动先决条件和服务组件,并重新配置Nagios服务器以同时添加新的服务监视。
  • 协调器材将在Dependency Tracker(依赖跟踪器)中查找并找到HBase的先决条件Dependency Tracker将返回HDFS和ZooKeeper组件。Coordinator还将查找Nagios服务器的依赖项,它将返回HBase客户端。Dependency Tracker还将返回所需组件的所需状态。因此,协调员将知道整套组件及其所需状态。协调员将设置 DB 数据库中所有这些组件的所需状态。
  • 在上一步骤中,协调员也可能决定它需要用户的输入来为ZooKeeper选择节点,并可能返回适当的的回应。这取决于API语义。
  • 然后协调员将组件的列表及其所需状态传递给Stage Planner。Stage Planner将返回需要在要将安装/启动/修改这些组件所在的每个节点上执行的分段操作序列。Stage Planner还将使用manifest Generator生成清单(每个阶段的每个单独节点的任务)
  • 协调员将把这个有序的阶段列表传递给Action Managerhe和相应的请求id。
  • Action Manager(行动管理器)将更新FSM中每个节点组件的状态,这将反映一个操作正在进行中。需要注意的是,所有受影响的节点组件的FSM都已更新。在该步骤中,FSM可以检测到一个无效事件和抛出失败,将中止操作,所有操作将被标记为失败并出现错误。

  • Action Manager将为每个操作创建一个操作id,并将其添加到计划。行动经理将从计划中选择第一个Stage,并添加将这个Stage中每个的操作添加到每个受影响节点的队列中。当第一阶段完成时将选择下一个选择阶段。Action Manager还将为预定的操作启动一个计时器。

  • Hearbeat Handler将接收操作的响应并通知Action Manager。Action Manager将发送一个事件到FSM更新状态。在超时的情况下,将再次安排此操作或将其标记为失败。
    一旦操作的所有节点都已完成(响应接收或最终超时)操作被视为已完成。一旦一个阶段所有操作都完成了,该阶段就被认为已完成。

  • 行动完成情况也记录在数据库中。
  • 行动经理进入下一阶段并重复
三、Agent

下图描述了ambari-agent设计
在这里插入图片描述

Agent:

Agent将每隔几秒钟与主服务器心跳一次,并在心跳响应中接收来自主机的命令。心跳响应是Master向agent发送命令的唯一方式。命令将在操作队列中排队,操作执行程序将拾取操作队列。Actionexecutioner将根据命令类型和操作类型会选择正确的工具(Puppet,Python等)执行。因此,在心跳响应中发送的响应将在Agent上异步处理。动作执行者(Action executioner)将响应或进度消息放在消息队列中。Agent将消息队列上的所有内容发送到主服务器Master。

————————————————————————————————
就先到这里,后续的可以自己翻看开头的PDF英文文档

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值