Ambari系列:Ambari架构详解_第1页
Ambari系列:Ambari架构详解_第2页
Ambari系列:Ambari架构详解_第3页
Ambari系列:Ambari架构详解_第4页
Ambari系列:Ambari架构详解_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ambari系列(三):Ambari架构详解/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可以很好的采集到节点信息。项目目录介绍

目录描述ambari-serverAmbari的Server程序,主要管理部署在每个节点上的管理监控程序Ambari-agent部署在监控节点上运行的管理监控程序Contrib自定义第三方库ambari-webAmbari页面UI的代码,作为用户与Ambariserver交互的。ambari-views用于扩展AmbariWebUI中的框架Docs文档ambari-commonAmbari-server和Ambari-agent共用的代码Ambari系统架构一类用于与ambari-agent交完成ambari-server的集中式在ambari-server开放的RestAPI中分为主要的两大类API,其中一类为ambari-web提供监控管理服务,:互,接受ambari-agent向ambari-server发送心跳请求。Master模块接受API和AgentInterface的请求,一类用于与ambari-agent交完成ambari-server的集中式AgentAgentAgentAgentAgentAgentAmbari-agent内部架构Ambari-agent是一个无状态的,其功能分两部分:采集所在节点的信息并且汇总发送心跳发送汇报给ambari-server。处理ambari-server的执行请求。因此它有两种队列:(1)、消息队列MessageQueue,或称为ResultQueue。包括节点状态信息(包括注册信息)和执行结果信息,并且汇总后通过心跳发送给ambari-server。(2)、操作队列(2)、操作队列ActionQueue。用于接收ambari-server发送过来的状态操作,然后交给执行器调用puppet或Python脚本等模块执行任务。Powr

ShelltitLn:DJ.OE.fin,nersnAmbari-server内部架构LiveClusterState:集群现有状态,各个节点汇报上来的状态信息会更改该状态;DesiredState:用户希望该节点所处状态,是用户在页面进行了一系列的操作,需要更改某些服务的状态,这些状态还没有在节点上产生作用;ActionState:操作状态,是状态改变时的请求状态,也可以看作是一种中间状态,这种状态可以辅助LiveClusterState向DesiredState状态转变。

ServerHeartbeatsActionevent!Coordnaiorhander)DesiredHeartbeatHanderNode,roeventsActionManagerDapende^cyPackerActionstate―AManlf如GeneratorPlannerAmbari-server的HeartbeatServerHeartbeatsActionevent!Coordnaiorhander)DesiredHeartbeatHanderNode,roeventsActionManagerDapende^cyPackerActionstate―AManlf如GeneratorPlannerCoordinator模块又可以称为APIhandler,主要在接收WEB端操作请求后,会检查它是否符合要求,stageplanner分解成一组操作,最后提供给ActionManager去完成执行操作。因此,从上图就可以看出,Ambari-Server的所有状态信息的维护和变更都会记录在数据库中,用户做一些更改服务的操作都会在数据库上做一些相应的记录,同时,agent通过心跳来获得数据库的变更历史。

Ambari-web内部架构Ambari-web使用了一个流行的前端Embar.jsMVC框架实现,Embar.js是一个TodoMVC框架,它涵盖了现今典型的单页面应用(singlepageapplication)几乎所有的行为。使用了nodejs使用brunch作为项目的构建管理工具Brunch,是一个超快的HTML5构建工具。它有如下功能:(1)、编译你的脚本、模板、样式、链接它们。(2)、将脚本和模板封装进common.js/AMD模块里,链接脚本和样式。(3)、为链接文件生成源地图,复制资源和静态文件。(4)、通过缩减代码和优化图片来收缩输出,看管你的文件更改。(5)、并通过控制台和系统提示通知你错误。Nodejs是一个基于ChromeJavaScript运行时建立的一个平台,用来方便的搭建快速的易于扩展的网络应用,NodeJS借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合运行在分布式设备的数据密集型的实时应用。Ambari-web目录结构目录或文件描述app/主要应用程序代码。包括Ember中的view、templates、controllers、models、routesconfig.coffeeBrunch应用程序生成器的配置文件package.jsonNpm包管理配置文件test/vendor/测试文件Javascript库和样式表适用第三方库。Ambari-web/app/目录或文件描述

assets/静态文件controllers/控制器data/数据mappers/JSON数据到Client的Ember实体的映射modelsMVC中的Modelroutes/路由器styles样式文件views试图文件templates/页面模板app.jsEmber主程序文件config.js配置文件Ambari-serverAmbari-server使用的jetty作为Servlet容器作为内嵌的java服务器,其中相关的代码在server/controller下的AmbariServer.java中。其中Session的管理似乎AmbariSessionManager重写了SessionManager类(1)、jetty是一个开源的Servlet容器,它为基于java的web容器,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行的Java应用提供网络和web连接。(2)、GoogleGuice一个google的IOC容器(3)、Spring(4)、JAX-RSAmbari-server依赖于Ambari-Views项目包名描述org.apache.ambari.server.api.services对web接口的入口方法,处理/api/vV*的请求org.apache.ambari.ser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论