Ambari是hadoop分布式集群配置管理工具,是由hortonworks主导的开源项目。它已经成为apache基金会的孵化器项目,已经成为hadoop运维系统中的得力助手,引起了业界和学术界的关注。

Ambari采用的不是一个新的思想和架构,也不是完成了软件的新的革命,而是充分利用了一些已有的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中做到了集群式服务管理能力、监控能力、展示能力。这些优秀开源软件有:

  • 在agent端,采用了puppet管理节点;
  • 在Web端,采用了ember.js作为前端的MVC构架和NodeJS相关工具,用handlebars.js作为页面渲染引擎,在CSS/HTML方面还用了Bootstrap 框架;
  • 在Server端,采用了Jetty, Spring,Jetty,JAX-RS等;
  • 同时利用了Ganglia,Nagios的分布式监控能力。

Ambari架构采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。ambari依赖其它已经成熟的工具,例如其ambari-server 就依赖python,而ambari-agent还同时依赖ruby, puppet,facter等工具,还有它也依赖一些监控工具nagios和ganglia用于监控集群状况。其中:

  1. puppet是分布式集群配置管理工具,也是典型的Server/Client模式,能够集中式管理分布式集群的安装配置部署,主要语言是ruby。
  2. facter是用python写的一个节点资源采集库,用于采集节点的系统信息,例如OS信息,主机信息等。由于ambari-agent主要是用python写的,因此用facter可以很好地采集到节点信息。

一、Ambari系统架构

除了ambari-server和ambari-agent,ambari还提供一个界面清亮的管理监控页面ambari-web,这些页面由ambari-server提供。ambari-server开放了REST API,这些API也主要分两大类,其中一类为ambari-web提供管理监控服务,另一类用于与ambari-agent交互,接受ambari-agent向ambari-server发送的心跳请求。下图是Ambari的系统架构。其中master模块接受API和Agent Interface的请求,完成ambari-server的集中式管理监控逻辑,而每个agent节点只负责所在节点的状态采集及维护。

二、Ambari-Agent内部架构

ambari-agent是一个无状态的。其功能主要分两部分:

  1. 采集所在节点的信息并且汇总发心跳汇报给ambari-server;
  2. 处理ambari-server的执行请求。

因此它有两种队列:

  1. 消息队列MessageQueue,或为ResultQueue。包括节点状态信息(包括注册信息)和执行结果信息,并且汇总后通过心跳发送给ambari-server;
  2. 操作队列ActionQueue。用于接收ambari-server返回过来的状态操作,然后能过执行器按序调用puppet或python脚本等模块完成任务。

三、Ambari-Server内部架构

ambari-server是一个有状态的,它维护着自己的一个有限状态机FSM。同时这些状态机存储在数据库中,前期数据库主要采用postgres。如下图所示,server端主要维护三类状态:

  1. Live Cluster State:集群现有状态,各个节点汇报上来的状态信息会更改该状态;
  2. Desired State:用户希望该节点所处状态,是用户在页面进行了一系列的操作,需要更改某些服务的状态,这些状态还没有在节点上产生作用;
  3. Action State:操作状态,是状态改变时的请求状态,也可以看作是一种中间状态,这种状态可以辅助Live Cluster State向Desired State状态转变。

Ambari-server的Heartbeat Handler模块用于接收各个agent的心跳请求(心跳请求里面主要包含两类信息:节点状态信息和返回的操作结果),把节点状态信息传递给FSM状态机去维护着该节点的状态,并且把返回的操作结果信息返回给Action Manager去做进一步的处理。

Coordinator模块又可以称为API handler,主要在接收WEB端操作请求后,会检查它是否符合要求,stage planner分解成一组操作,最后提供给Action Manager去完成执行操作。

因此,从上图就可以看出,Ambari-Server的所有状态信息的维护和变更都会记录在数据库中,用户做一些更改服务的操作都会在数据库上做一些相应的记录,同时,agent通过心跳来获得数据库的变更历史。

Ambari——大数据平台的搭建利器(一)相关推荐

  1. Ambari——大数据平台的搭建利器之进阶篇

    Ambari--大数据平台的搭建利器之进阶篇 [日期:2015-07-14] 来源:IBM  作者: [字体:大 中 小] Ambari 的现状 目前 Apache Ambari 的最高版本是 2.0 ...

  2. 大数据平台的搭建思路是怎样的

    大数据平台的搭建就是企业面临的问题,搭建大数据平台有哪些思路?怎么样的搭建路径可以让企业少走弯路?什么样的架构是业内标准?通过什么手段来分析和展示已有的数据? 或许这些问题会萦绕在您的心头,那么今天就 ...

  3. 【Hadoop大数据平台组件搭建系列(一)】——Zookeeper组件配置

    简介 本篇介绍Hadoop大数据平台组件中的Zookeeper组件的搭建 使用软件版本信息 zookeeper-3.4.14.tar.gz Zookeeper安装 解压Zookeeper安装包至目标目 ...

  4. 教育行业需要了解的大数据,武汉数道云科技浅析:Hadoop大数据平台如何搭建?...

    从教育行业的需求出发,去分析互联网时代教育行业需要了解的大数据,以及大数据平台的搭建应该注意什么? 中国-教育规模较大的国家之一,随着互联网的发展,海量的教育大数据将不断产生,如何有效科学的利用数据资 ...

  5. 【数道云】教育行业需要了解的大数据,武汉Hadoop大数据平台如何搭建?...

    从教育行业的需求出发,去分析互联网时代教育行业需要了解的大数据,以及大数据平台的搭建应该注意什么? 中国-教育规模较大的国家之一,随着互联网的发展,海量的教育大数据将不断产生,如何有效科学的利用数据资 ...

  6. 【数道云】教育行业需要了解的大数据,武汉Hadoop大数据平台如何搭建?

    从教育行业的需求出发,去分析互联网时代教育行业需要了解的大数据,以及大数据平台的搭建应该注意什么? 中国-教育规模较大的国家之一,随着互联网的发展,海量的教育大数据将不断产生,如何有效科学的利用数据资 ...

  7. Hadoop大数据平台环境搭建注意事项,分布式数据采集,武汉数道云科技

    Hadoop大数据作为时代发展的产物,影响着互联网企业发展.以及企业关于品牌形象推广.政府有关民意采集.以及有关数据信息收集分类------ Hadoop技术的发展,带来了海量数据高效处理的能力,也给 ...

  8. 大数据平台的搭建和数据分析

    行内人士皆知,大数据分析平台的搭建有利于帮助企业构建统一的数据存储和数据处理资源,围绕企业业务开展大数据应用建设,最终形成面向服务化的数据资产.今天我们就以大数据平台为例,透过平台所包含的系统模块来看 ...

  9. 企业大数据平台如何搭建?

    在大数据这个词出现之前,我们对日常数据的这种处理和分析,常常使用的一些类似SQL server.MySQL.Oracle等等这些关系数据库,传统的这些数据库处理T级别数据量已经是这些数据库的极限,面对 ...

最新文章

  1. GNU make manual 翻译( 一百一十)
  2. disruptor框架为什么不流行_Java并发编程框架Disruptor
  3. dojo中的dojoConfig配置
  4. 您请求的报表需要更多信息...
  5. android摄像头矩形框提取_视频图像摄像头跟踪的上位机系统设计
  6. 基于OPENldap搭建postfix 虚拟用户
  7. 创建MyFilter1类过滤器,对于未登陆用户(如果session对象中包含用户名就认为已登录)进行过滤跳转到登录页面
  8. Requirement-Driven Linux Shell Programming
  9. window 清理maven本地仓库
  10. C语言 运算符与表达式
  11. 欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机
  12. 解决文件不显示后缀名的问题
  13. 【渝粤题库】国家开放大学2021春2107刑法学(1)题目
  14. [转载] 无法解密!首个利用WinRAR漏洞传播的未知勒索软件(JNEC)分析
  15. 石榴——转自田维《花田半亩》
  16. 手机卫星定位系统_为什么手机支持北斗导航,却不知道如何开启?
  17. iphone和mac互传文件_苹果手机与电脑怎么互传文件 iphone手机数据同步方法
  18. 一次解决IDEA所有乱码情况
  19. Vue 前后端交互基础
  20. 【无标题】旧金山大学算法可视化网站

热门文章

  1. linux环境开启kettle Carte
  2. Comparable
  3. 我写的阿拉伯数字转中文大写的一个方法
  4. html中的div是什么意思?
  5. Windows常用快捷键及结束explorer.exe出现蓝屏的办法
  6. GC8870国产低成本替代TI的DRV8870 3.6A 刷式直流电机驱动器(PWM 控制)
  7. g 最新编译器linux,Linux下安装gcc 、g++ 、gfortran编译器
  8. Windows下使用gFortran,VScode+MinGW
  9. 花呗上征信,一文看懂征信所有问题
  10. 适合微信小程序作品的极简番茄时钟