Ambari

转载自
https://www.jianshu.com/p/dc73d9d03823
有部分补充和改动

Ambari 主要分为三部分:

  • Server
     内含ambari-server(java/shell/python)、ambari-web(js/html)、ambari-admin(js/html)三个子项目

  • Ambari-Agent
     * ambari-agent(python)项目*

  • Ambari-Metrics
     又称AMS(Ambari-Metrics-System),内含ambari-xxxx-sink(java)、ambari-metrics-collector(java)、ambari-metrics-monitor(java)等
    –Ambari架构图–
    在这里插入图片描述

  • 心跳机制
      ambari-server和ambari-agent是通过ambari-agent定期发送post请求上报agent所在主机的状态,ambari-server在接收到ambari-agent上报的状态后,给ambari-agent返回应该在这台主机上执行的指令,这样一次完整的流程就是一次心跳,通过心跳完成主从交互的这种机制就是心跳机制

  • Server
    此Server 并不是代码层面的的Ambari-Server,而是站在业务的角度来看,server 将集群的状态通过web UI 或RESTAPI的形式呈献给用户,也是通过这两种形式将用户的指令(比如stop namenode、start datanode)下发到集群,从而完成用户与hadoop集群的交互。server 从代码层面由三个项目组成:ambari-server、ambari-web、ambari-agent。也就是说在将ambari项目打成rpm包时,这三个项目会汇总到一个名字叫ambari-server-xxxx.rpm包中。

用户和集群的交互流程

在server安装、配置完成并启动后,用户通过浏览器访问server,在地址栏输入的url是由ambari-web(以后简称web)模块响应请求,web端又调用ambari-server 的rest api获取数据显示在浏览器页面上。当用户想要通过浏览器操作集群(stop、start某些组件)时,由web端向ambari-server发送post或put请求,ambari-server 接收到请求后通过心跳机制,向ambari-agent(以后简称agent)发送指令,最后由agent执行shell或python脚本来完成。

显示在浏览器上的数据来源

浏览器页面上显示的数据根据时间状态可以分为两种类型。一种是集群内各服务的实时状态信息,这类数据是由AMS模块实时采集上报给Ambari-Metrics-Collector,再由Ambari-Server调用ambari-metrics-collector的REST API显示在页面上。这部分数据没有落地到ambari-server 的数据库中,在每次web端调用ambari-server的数据时,ambari-server都会调用ambari-metrics-collector获取数据,进行适当的加工处理后直接返回给web端 显示在浏览器页面上。
还有一种由ambari-server缓存在内存,持久化到数据库的数据,这类数据比如主机列表、服务列表、服务的配置信息等。这些数据是由agent采集通过心跳发送给ambari-server后,ambari-server更新自身的数据状态。当web端调用ambari-server的rest api获取这些数据时,ambari-server将web端请求的数据直接返回给web显示在浏览器页面。

Ambari-Agent

ambari-agent 是由Python语言开发,负责对集群内主机状态的采集以及执行ambari-server发来的指令,将执行结果上报给ambari-server。ambari-agent虽然是离hadoop集群最近的一个模块,但是它不保存集群的任何状态信息,完全听命于ambari-server。

Ambari-Metrics(AMS)

AMS是ambari内部一个比较完整的系统,全权负责集群内各组件状态信息的采集。
在这里插入图片描述
在这里插入图片描述

AMS 也是一个 Master-Slave 结构的框架。Master 模块便是 Metrics Collector,Slave 则是 Metrics Monitor 和 Hadoop Sinks。Slave 模块负责收集信息,并发送给 Collector。默认安装时Ambari Metrics为embedded模式,这样收集的所有数据是存放在Collector节点的本地的,大量的Metrics数据会挤占大量的本地存储空间,该为分布式模式后Metrics数据会放置到HDFS上,所以通常这是安装Ambari后必备一个操作。
当然 Metrics Monitor 和 Hadoop Sinks 也有不同的职责,前者主要负责收集机器本身相关的指标,例如 CPU、Mem、Disk 相关信息;后者则负责收集 Hadoop 相关 Service 模块的性能数据,例如该模块Namenode占用了多少 Mem,以及该模块的 CPU 占用率等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值