Ambari Server 架构

Ambari Server 架构图,由图中看,主要也是四部分:

Resource Service:资源服务,用来接收前端的 Rest 请求。关于 Resource 的几个基本概念:
Resource:Ambari Server 定义了各种各样的 Resource,比如 Config、User、Cluster、Component、Alert 等都是一种 Resource。
Resource Type:每种 Resource 都对应一个 ResourceType,标记所属的资源类型。
Resource Service:每种 Resource 都对应一个 Resource Service,比如ConfigService、UserService等,Service 中定义了相对应 Resource 的 Rest API。
Resource Provider:每种 Resource 都对应一个 ResourceProvider,比如ConfigResourceProvider、UserResourceProvider等,对 Resource 的具体操作,都封装在 Provider 中。

HeartBeatHandler:处理 Agent 的 Heartbeat 请求。

ActionManager:管理 Action。每个 Host 都有一个 ActionQueue 记录着需要这台 Host 执行的命令。

FSM:维护组件状态的有限状态机。

简述一下 Ambari Server 的工作流程:

前端请求处理流程:前端提交一个 Rest 请求,相应 Resource 的 Service 处理请求,根据 ResourceType 找到对应的 ResourceProvider 执行具体的操作;如果存在需要 Agent 执行的操作,则把操作存储到相应 Host 的 ActionQueue 中;如果需要改变组件的状态,则需要操作 FSM。

Agent 请求处理流程:Agent Heartbeat 每10秒执行一次,Heartbeat Request 会携带命令的执行情况、组件状态以及 Host 状态等信息,HeartBeatHandler 会根据汇报上来的命令执行情况,去操作 FSM 来维护组件的状态;HeartBeatHandler 会从 ActionQueue 中取出需要 Host 执行的命令、修改的配置、Alert 定义等信息,通过 HeartBeat Response 返回给 Agent 执行。

总体来说由于 Ambari Server 和 Ambari Agent 之间是通过短连接进行通信,所以 Server 无法把需要执行的命令,直接推送给相应的 Agent,所以需要 ActionQueue 来存储命令,然后通过 Heartbeat 把命令下发给 Agent 执行。

时间: 2024-08-11 05:33:14

Ambari Server 架构的相关文章

Ambari Server网口带宽占用率很高问题的分析和解决办法

Ambari是Hortonworks出一款开源Hadoop管理系统,是用python写的,目前市场是开源的Hadoop管理系统好像就只有这一个,虽然Ambari问题很多,也不好用,但也没办法了. 最近监控系统经常报警说一个url老是不可达,只是一个ambari服务器的url . 于是登录到服务器上一探究竟. 用iftop查看网络状况,发现网络占用率很高,达到了700Mbps,而且一直居高不下,网卡最大带宽是1000Mbps,被用掉了一大半,怪不得会报警,这是不正常的. 再仔细看,发现ambari

Ambari Agent 架构

Ambari Agent 架构图,由图中看,主要有3部分: HeartBeatHandler:发送 HTTP 请求和 Ambari Server 进行交互.ActionExecutor:Command 执行器.AlertSchedulerHandler:Alert 处理器. 4个数据容器: CommandQueue:存储需要执行的 Command.ResultMap:存储 Command 的执行结果.Alert definitions file:是一个文件,保存所有的 Alert 定义.Aler

大并发server架构 && 大型站点架构演变

server的三条要求: 高性能:对于大量请求,及时高速的响应 高可用:7*24 不间断,出现问题自己主动转移.这叫fail over(故障转移) 伸缩性:使用跨机器的通信(TCP) 另外不论什么网络系统结构都能够抽象成C/S架构.我们常说的B/S模式本质上也是C/S架构(浏览器看作client). 一个典型的server架构: 注: epoll是linux下最高效的网络I/O 因为server须要高效处理大并发连接.因此多个位置均可能出现性能瓶颈,以下我们分析不同位置产生瓶颈的原因及其处理方法

ambari安装问题记录:Ambari Agent host cannot reach Ambari Server 'localhost:8080'.

在安装完ambari-server并配置之后,选定客户端进行指定安装的时候,发现总是遇到这一错误 Ambari Agent host cannot reach Ambari Server 'localhost:8080'. 我看了一下错误日志发现在从ambari-server传送到客户端的setupAgent.py脚本的main函数中的参数设置老是不对,如下所示: 156 def main(argv=None): 157 scriptDir = os.path.realpath(os.path.

为什么我要选择erlang+go进行server架构(2)

原创文章,转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface 为什么我要选择Erlang呢? 一.erlang特别适合中小团队创业: erlang有异常成熟.经过电信级别大规模验证的OTP应用库,仅仅须要非常easy的代码就能建立起异常稳定.容错性强.扩展性强.高并发的server框架,这也是erlang最宝贵的核心价值所在. 二.erlang是天生的并发语言: erlang的并发特性是语言级别的,从开发伊始就採用了CSP并发模式, 以

Ambari Server 服务迁移

迁移准备 配置系统环境 配置新服务器的系统环境,与旧 Ambari-Server 节点服务器一致: 主要有以下几个方面: 1.基础系统依赖: /usr/bin/yum install zlib zlib-devel libjpeg libjpeg-devel libpng libpng-devel gd gd-devel curl curl-devel freetype freetype-devel libxslt libxslt-devel libxml2 libxml2-devel ncur

Ambari Server 多版本配置功能实现分析

稍等开始编辑

Ambari Server 配置组功能实现分析

稍等开始编辑

Ambari Agent Command分析

一.概述: 根据 Ambari Server 架构文章中的介绍,由于 Ambari Server 和 Ambari Agent 之间是通过 HTTP 短连接进行通信,所以 Server 无法把需要执行的 Command,直接推送给 Agent,而是需要把命令存储在 ActionQueue 中, 然后 Agent 通过定期发送 Heartbeat 请求,把 Command 拉过去执行,并通过下次的 Heartbeat 请求,返回执行结果.下面简单分析一下 Command 的处理过程: 二.Agen