Ambari系列(三): Ambari架构详解
demofoucs/shifenglov/article/details/42803283
前言
Hadoop集的管控一直是一个热门的话题,对于这样的一个应用场景,我所知道国内很早就有人研究并且取得不错的成绩,这就是EasyHadoop。它的功能主要有集安装,管理,监控等功能,有兴趣的朋友可以百度,这位作者的博客有很详细的介绍。今天,我所要重点介绍的Apache的顶级项目,现在是大数据新贵Hortonworks公司在推进的项目Ambari,这款软件具有集自动化安装、中心化管理、集监控、报警等功能,使得安装集从几天的时间缩短在几小时以内,运维人员从数十人降低到几人以内,极大的提高集管理的效率。
Ambari介绍
Ambari是Hadoop分布式集配置管理工具,是由hortonworks主导的开源项目,它已经成为了apache基金会的开源项目,已经成为Hadoop运维系统中的得力助手。
Ambari充分利用了一些已有的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中做到了集式服务管理能力、监控能力、展示能力,这些优秀的开源软件有:
(1)、agent端,采用了puppet管理节点。
(2)、在web端,采用ember.js作为前端MVC框架和NodeJS相关工具,用handlebars.js作为页面渲染引擎,在CSS/HTML方面还用了Bootstrap框架。
(3)、在Server端,采用了Jetty、Spring、JAX-RS等。
(4)、同时利用了Ganglia、Nagios的分布式监控能力。
Ambari框架采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。ambari依赖其它已经成熟的工具,例如:其ambari-server就依赖python,而ambari-agent还同时依赖ruby,puppet,fecter等工具,还有它也依赖一些监控工具nagios和ganglia用于监控集状况。其中:
puppet是分布式集配置管理工具,也是典型的Server/Client模式,能够集中式管理分布式集的安装配置部署,主要语言是ruby。
facter是用Python写的一个节点资源采集库,用于采集节点的系统信息,例如OS信息,由于ambari-agent 主要是用Python写的,因此用facter可以很好的采集到节点信息。
项目目录介绍
 
webserver接口开发
描述
ambari-server
Ambari的Server程序,主要管理部署在每个节点上的管理监控程序
Ambari-agent
部署在监控节点上运行的管理监控程序
Contrib
自定义第三方库
ambari-web
Ambari页面UI的代码,作为用户与Ambari server交互的。
ambari-views
用于扩展Ambari Web UI中的框架
Docs
文档
ambari-common
Ambari-server 和Ambari-agent 共用的代码
Ambari系统架构
 
在ambari-server开放的Rest API中分为主要的两大类 API,其中一类为ambari-web提供监控管理服务,另一类用于与ambari-agent交互,接受ambari-agent向ambari-server发送心跳请求。Master模块接受API和Agent Interface的请求,完成ambari-server的集中式管理监控逻辑,而每个agent节点只负责所在节点的状态采集及维护工作。
 
 Ambari-agent内部架构
Ambari-agent是一个无状态的,其功能分两部分:
采集所在节点的信息并且汇总发送心跳发送汇报给ambari-server。
处理ambari-server的执行请求。
因此它有两种队列:
(1)、消息队列Message Queue,或称为ResultQueue。包括节点状态信息(包括注册信息)和执行结果信息,并且汇总后通过心跳发送给ambari-server。
(2)、操作队列ActionQueue。用于接收ambari-server发送过来的状态操作,然后交给执行器调用puppet或Python脚本等模块执行任务。
Ambari-server内部架构
Ÿ  Live Cluster State:集现有状态,各个节点汇报上来的状态信息会更改该状态;
Ÿ  Desired State:用户希望该节点所处状态,是用户在页面进行了一系列的操作,需要更改某些服务的状态,这些状态还没有在节点上产生作用;
Ÿ  Action State:操作状态,是状态改变时的请求状态,也可以看作是一种中间状态,这种状态可以辅助LiveCluster State向Desired State状态转变。
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。