Ambari——NWU_LK

Ambari

Ambari介绍

Ambari 是 Apache Software Foundation 的一个顶级开源项目,是一个集中部署、管理、监控 Hadoop 分布式集群的工具。但是这里的 Hadoop 是一个广义概念,并不仅仅指的是 Hadoop(HDFS、MapReduce),而是指 Hadoop 生态圈(包括 Spark、Hive、Hbase,Sqoop,Zookeeper、Flume 等),Ambari 可以使 Hadoop 大数据软件更容易使用,且可以方便的集成我们自己的服务让 Ambari 统一管理。

  • 部署:自动化部署 Hadoop 软件,能够自动处理服务、组件之间的依赖(比如 HBase 依赖 HDFS,DataNode 启动的时候,需要 NameNode 先启动等)。
  • 管理:Hadoop 服务组件的启动、停止、重启,配置文件的多版本管理。
  • 监控:Hadoop 服务的当前状态(组件节点的存活情况、YARN 任务执行情况等),当前主机的状态(内存、硬盘、CPU、网络等),而且可以自定义报警事件。
Ambari架构

由四部分组成

  • Brower:指的是前端,前端通过 HTTP 发送 Rest 指令和 Ambari Server 进行交互。
  • Ambari Server:是一个 web 服务器,开放两个端口,分别用来和前端、Agent 进行交互。Ambari Server 的数据存储在 MySQL 中。
  • Metrics Collector:是一个 web 服务器,提供两个功能,一方面将 Metrics Monitor 和 Metrics Sink 汇报上来的监控信息存储到 HBase 中,另一方面提供监控信息查询接口,供 Ambari Server 进行查询。
  • Host:实际安装大数据服务的主机,可以有多台。从图中可以看出,每台主机都安装有一个 Ambari Agent 服务和 Metrics Monitor 服务,有些组件如果需要更详细和特有的监控信息,可以集成相对应的 Metrics Sink(比如HDFS的 Metrics Sink 可以监控空间的使用情况)。
Ambari主要功能
  • 核心业务:集群的统一部署、管理以及基本的监控(比如组件的存活情况)都是由这条线来完成的,由前端、Ambari Server 和 Ambari Agent 组成。前端提供可视化界面,发送操作指令;Ambari Server 维护着整个集群的状态;Ambari Agent 执行具体的指令去操作服务和组件,而且会通过心跳汇报 Host 和服务的状态信息。
  • Metrics 监控业务:提供详细的监控功能,由 Metrics Collector、Metrics Monitor、Metrics Sink 组成。Metrics Collector 存储监控信息,并提供查询接口;Metrics Monitor 主要负责收集并汇报 Host 相关的指标,比如主机的 CPU、内存、网络等;Metrics Sink 负责收集并汇报组件的相关指标,比如该组件的 CPU 使用率,内存使用情况等。
Ambari Server 详解

组成部分:Resource Service、HeartBeatHandler、ActionQueue、FSM

  1. Resource Service
    资源服务,用来接收前端的 Rest 请求。资源服务,用来接收前端的 Rest 请求。关于 Resource 的几个基本概念:
  • Resource:Ambari Server 定义了各种各样的 Resource,比如 Config、User、Cluster、Component、Alert 等。
  • Resource Type:每种 Resource 都对应一个 ResourceType,标记所属的资源类型。
  • Resource Service:每种 Resource 都对应一个 Resource Service,比如ConfigService、UserService等,Service 中定义了相对应 Resource 的 Rest API。
  • Resource Provider:每种 Resource 都对应一个 ResourceProvider,比如ConfigResourceProvider、UserResourceProvider等,对 Resource 的具体操作,都封装在 Provider 中。
  1. HeartBeatHandler:处理 Agent 的 Heartbeat 请求
  2. ActionQueue:每个 Host 都有一个 ActionQueue 记录着需要这台 Host 执行的命令。
  3. 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 Agent 详解

在这里插入图片描述
主要由三部分组成

  • HeartBeatHandler:发送 HTTP 请求和 Ambari Server 进行交互。
  • ActionExecutor:Command 执行器。
  • AlertSchedulerHandler:Alert 处理器。

图中的四个数据容器

  • CommandQueue:存储需要执行的 Command。
  • ResultMap:存储 Command 的执行结果。
  • Alert definitions file:是一个文件,保存所有的 Alert 定义。
  • AlertCollect:存储 Alert 的检查结果。
Ambari Agent 工作流程
  1. HeartBeatHandler:通过ResultMap收集组件当前状态和Command 执行结果、通过AlertCollect收集Alert检查结果等,封装到 HTTP Request 当中,发送给 Ambari Server。Ambari Server 响应请求,通过 HTTP Response 带回来需要执行的 Command、需要终止的 Command、发生修改的 Config、发生修改的 Alert 定义等。Ambari Agent再把 Comand 和 修改的 Config 封装为 Agent Command 对象,存储到 CommandQueue 中;把修改的 Alert 定义,更新到 Alert definitions 文件中(如果 Alert definitions 文件发生了变化,需要通知 AlertSchedulerHandler 重新加载一遍)。
  2. ActionExecutor:定期从 CommandQueue 中加载需要执行的 Command,找到 Command 对应的 Python 脚本,执行脚本,并把结果存储到 ResultMap 中。
  3. AlertSchedulerHandler:从 Alert definitions 文件中加载所有 Alert 定义,根据 Alert 定义,找到对应的 Python 脚本,周期性执行,并把结果存储到 AlertCollect 中。
Ambari 项目目录
目录描述
Ambari-serverAmbari的Server,依赖python,采用了Jetty、Spring、JAX-RS等
Ambari-agentagent节点,使用facter采集信息,puppet管理节点
Contrib自定义第三方库
ambari-webAmbari页面UI的代码,作为用户与Ambari server交互的,采用ember.js作为前端MVC框架和NodeJS相关工具,用handlebars.js作为页面渲染引擎,在CSS/HTML方面还用了Bootstrap框架
ambari-views用于扩展Ambari Web UI中的框架
Docs文档
ambari-commonAmbari-server 和Ambari-agent 共用的代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值