Ambari系统架构

一、Ambari系统架构

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

  • ambari-server主要管理部署在每个节点上的管理监控程序。
  • Ambari-agent 部署在监控节点上运行的管理监控程序。
  • ambari-web 作为用户与 Ambari server 交互的。

在这里插入图片描述

二、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状态转变。

在这里插入图片描述

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

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

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

四、Ambari-web内部架构

Ambari-web使用了一个流行的前端Embar.js MVC框架实现,Embar.js是一个TodoMVC框架,它涵盖了现今典型的单页面应用(single page application)几乎所有的行为。

使用了nodejs

使用brunch 作为项目的构建管理工具

Brunch ,是一个超快的HTML5构建工具。它有如下功能:

(1)、编译你的脚本、模板、样式、链接它们。

(2)、将脚本和模板封装进common.js/AMD模块里,链接脚本和样式。

(3)、为链接文件生成源地图,复制资源和静态文件。

(4)、通过缩减代码和优化图片来收缩输出,看管你的文件更改。

(5)、并通过控制台和系统提示通知你错误。

Nodejs 是一个基于Chrome JavaScript运行时建立的一个平台,用来方便的搭建快速的易于扩展的网络应用,NodeJS借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合运行在分布式设备的数据密集型的实时应用。

Ambari-web 目录结构

目录或文件描述
app/主要应用程序代码。包括Ember中的view、templates、controllers、models、routes
config.coffeeBrunch应用程序生成器的配置文件
package.jsonNpm包管理配置文件
test/测试文件
vendor/Javascript库和样式表适用第三方库。

Ambari-web/app/

目录或文件描述
assets/静态文件
controllers/控制器
data/数据
mappers/JSON数据到Client的Ember实体的映射
modelsMVC中的Model
routes/路由器
styles样式文件
views试图文件
templates/页面模板
app.jsEmber主程序文件
config.js配置文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统的基本安装

一、制作Linux安装启动盘 1.准备一个干净的U盘,格式化。 2.下载64位系统镜像:rhel-server-6.8-x86_64-dvd.iso。64位系统直接安装就好, 3.首先制作一个启动盘,解压rhel-server-6.8-i386-dvd.iso文件 4.下载安装UltraISO&#…

linux tips 技巧笔记一

作者: Jeffrey出处: http://blog.zhangjianfeng.com/?p171 实现RedHat非正常关机的自动磁盘修复先登录到服务器,然后在/etc/sysconfig里增加一个文件autofsck,内容如下:AUTOFSCK_DEF_CHECKyesPROMPTyes 改变文件或目录之最后修改时间(变为当前时间)执…

Shell基本概念

一、什么是shell shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂…

Shell解释器

shell解释器,用户和操作系统内核之间的桥梁 一、Shell常见种类 就像不同地区有不同方言一样,不同的Linux/Unix系统使用着不同类型的shell Bsh:由贝尔实验室编写。Bsh是产生较早的UNIX Shell程序,实现了最基本的命令解释器的功能&#xff0c…

mysql安装、导入数据脚本

mysql安装: #!/bin/bash if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root to install mysql"exit 1 fi unzip Mysql.zip cd /home/install_LFS/Mysql cur_dir$(pwd) mkdir -p /usr/local/mysq…

linux tips 技巧笔记二

如何查找大小为500K到1000K之间的文件find / -type f -size 500k -and -size -1000k 仅列出当前目录下的文件名.find ./ -type f -maxdepth 1 -exec basename {} /; 让主机不响应pingecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all若想恢复就用echo 0 > /proc/sys/…

Shell脚本——入门

shell脚本编程需要注意以下几个事项: shell脚本名称命名一般为英文的大写、小写;不能使用特殊符号、空格来命名;shell脚本后缀以.sh结尾;不建议shell命名为纯数字,一般以脚本功能命名;shell脚本内容首行需以…

Linux下C开发环境的构成和安装

本文介绍了Linux的C开发环境的构成和安装,使读者对Linux的C开发环境能有初步的了解。 你了解Linux吗?相信现在越来越多的人会说“是”的。那么你了解到何种程度呢?不可否认,目前决大多 数的Linux用户对Linux的了解还处于比较低级的…

Shell脚本——变量

变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值…

基础环境安装脚本

#/bin/bash # Check if user is root if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root"exit 1 fiecho "安装环境包"if [ -f /etc/yum.repos.d/rhel-source.repo ];thenrm -r /etc/yum.repos.d…

Apache 虚拟主机的配置[Ubuntu]

基本配置 我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本 HowTo 想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf…

Shell脚本——数字计算

Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令 要想让数学计算发挥作用,必须使用数学计算命令,Shell 中常用的数学计算命令如下表所示。 运算操作符/运算命令说明(( ))用于整数运算,效率…

windows下最好的C++ IDE

1. 你是不是用惯了VC6.0?假如是,我现在推荐的IDE仍然是VC6.0的IDE。 2. 你是不是觉得VC6.0过时了,很多C语法它都不支持?我现在推荐的编译器她在一直发展着,支持最新的C语法。 3. VC.net的界面弱智,而且包含…

Shell脚本——内置命令

一、内置命令 所谓 Shell 内置命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。 例如,用于进入或者切换目录的 cd 命令,虽然我们一直在使用它,但如果不加以注意很难意识到它与普通命令的性质是不…

Shell脚本——基础语法

一、条件判断 1.1、基本语法 [ condition ](注意condition前后要有空格) 注意:条件非空即为true,[ abcdef ]返回true,[] 返回false。 1.2、常用判断条件 两个整数之间比较 字符串比较 -lt 小于(less …

#2002 - 服务器没有响应 (or the local MySQL server's socket is not ...

经常见有兄弟遇到这样的问题: mysql -u root -p一切正常,但是用phpmyadmin却死活不对,提示如下错误: #2002 - 服务器没有响应 (or the local MySQL servers socket is not correctly configured) 我 google 了一下,发现…

第一个Scala程序——Hello World!

一、交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231). Type in expressions for evaluation. Or try :help.scala> println("Hello Wo…

CENTOS5下VSFTPD的设置

需求:(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户) 一、安装 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系统帐户 1、vsftpd服务的宿主用户 useradd vsftpd -s /sbin/nologin 2、…

Scala基础语法

如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 一、基本语法 Scala 基本语法需要注意以下几点: 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不…

DNS详解

一、DNS 概念 人和人要互相识别和记忆,需要名字作为辅助,而对于网络世界,在因特网内也需要一种命名系统来做类似的事情,该系统使用了域来划分,任何一个网络里的主机(或者路由器)都有独一无二的域名(类似国家代码),域又能继续划分为子域(类似每个国家有不同的省份代…