Ambari——大数据平台的搭建利器(一)

2023-11-07

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节点只负责所在节点的状态采集及维护。

52fa1fbc-e2ad-369b-9028-ecc6ce25502c

二、Ambari-Agent内部架构

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

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

因此它有两种队列:

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

09b223bb-e18c-3280-8f77-bd604518a2b5

三、Ambari-Server内部架构

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

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

a1ceaae2-189e-3cce-bcf3-3be37139a3ca

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

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

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • echarts中的legend属性

    legend orient vertical right 0 top 15 icon circle 小圆点 itemWidth 8 itemHeight 8 itemGap 15 间隔 formatter function params l
  • 潜在结果框架(Potential outcomes)与工具变量(Instrumental variable)介绍

    Potential outcomes framework 什么是potential outcome呢 考虑在医学中 X 0表示不吃药 X 1表示吃药 那么很显然 一个人是没有办法同时吃药与不吃药的 所以我们只能够观测到其中的一个结果 即 Y
  • Javaweb学生信息管理系统(Mysql+JSP+MVC+CSS)

    目录 一 项目介绍 二 运行效果 1 登录界面 2 主界面 点击学号修改学生信息 3 增加学生界面 编辑 三 项目目录结构 四 代码展示 1 jsp及css代码 登录界面代码 login jsp 登录界面css login css 注册用户
  • js深拷贝

    js深拷贝的几种方式 概念介绍 深拷贝 在堆内存中重新开辟一个存储空间 完全克隆一个一模一样的对象 浅拷贝 不在堆内存中重新开辟空间 只复制栈内存中的引用地址 本质上两个对象 数组 依然指向同一块存储空间 一 递归方式 推荐 项目中最安全最
  • 4款超实用绘图软件

    对于新手来说 很多人认为绘图软件需要一定基础的设计功底 但其实也不完全是 在网上有很多非常实用的绘图软件可以迅速的帮助我们解决工作中的绘图问题 以下4款是这两年我的小伙伴们用的最多的 推荐给大家 亿图图示 亿图图示是我用的比较多的一个绘图软
  • windows的磁盘操作之九——区分本地磁盘与移动硬盘

    转载自 windows的磁盘操作之九 区分本地磁盘与移动硬盘 bunny技术坊的技术博客 51CTO博客 原文如下 最近碰到了个新问题 记录下来作为windows的磁盘操作那个系列的续篇吧 一些时候我们的程序需要区分本地存储设备和USB存储
  • JAVA毕设可能遇到的问题,老程序员来告诉你

    在进行JAVA毕设时 有一些常见问题需要考虑和解决 以下是几个可能遇到的问题和建议的解决方案 缺乏清晰的项目目标 在开始JAVA毕设之前 需要明确项目的目标和范围 如果没有清晰的目标 可能会导致项目无法顺利进行 或者最终无法达到预期的结果
  • 正大期货交易时间

    交易所及时间 上海期货交易所 上午是9点到10点15 以及10点半到11点半 下午是13点半到14点10 以及14点20到15点 夜盘是21点到次日凌晨的2点半 大连 郑州商品交易所 上午是9点到10点15 以及10点半到11点半 下午是1
  • C++ set容器使用方法

    set是STL中一种标准关联容器 它底层使用平衡的搜索树 红黑树实现 插入删除操作时仅仅需要指针操作节点即可完成 不涉及到内存移动和拷贝 所以效率比较高 在set中 每个元素都是唯一的 如果想要允许重复元素 可以使用multiset 1 s
  • 第一次使用Android Studio时你应该知道的一切配置

    文章来源 http www cnblogs com smyhvae p 4390905 html 系列 第一次使用Android Studio时你应该知道的一切配置 第一次使用Android Studio时你应该知道的一切配置 二 新建一个
  • Adapter的getView方法详解

    BaseAdapter就Android应用程序中经常用到的基础数据适配器 它的主要用途是将一组数据传到像ListView Spinner Gallery及GridView等UI显示组件 它是继承自接口类Adapter 我们经常使用的List
  • Intel威武全球第一座450毫米晶圆厂动工

    Intel今天确认 位于美国俄勒冈州的Fab 1DX二期工程已经破土动工 这也是全球第一座将会用来生产450毫米大尺寸晶圆的工厂 目前主流300毫米 Intel发言人Chuck Mulloy对媒体透露说 D1X二期工程的建设已经开始 Int
  • Java后台面试

    一 Nginx负载均衡 轮询 轮询是默认的 每一个请求按顺序逐一分配到不同的后端服务器 如果后端服务器down掉了 则能自动剔除 ip hash 请求按访问IP的hash结果分配 这样来自同一个IP的访客固定访问一个后端服务器 有效解决了动
  • 嵌入式c:进制、位、结构体、变量

    掌握 1 2进制 8进制 16进制的相互转换 2 位运算 或 与运算 异或 取反 左移 右移 3 结构体的使用及参数传递 了解 静态变量 static extern变量 关键字const 进制转换 二进制0B 十六进制0X 例如 十进制15
  • scikit-learn代码实现SVM分类与SVR回归以及调参

    分类 二分类 from sklearn model selection import train test split from sklearn svm import SVC import mglearn datasets import m
  • 【DETR】2、Deformable DETR

    文章目录 一 背景和动机 二 方法 三 效果 四 可视化 论文链接 Deformable DETR Deformable Transformers for End to End Object Detection 代码链接 https git
  • RKNN模型评估-性能评估和内存评估

    基于Python的模型评估 perf debug 进行性能评估时是否开启debug 模式 在 debug 模式下 可以获取到每一层的运行时间 否则只能获取模型运行的总时间 默认值为 False eval mem 是否进入内存评估模式 进入内
  • 使用librdkafka 封装的 C++类

    kafka就不介绍了 可以参考kafka的c c 高性能客户端librdkafka简介 下面说下librdkafka的编译 下载地址 https github com edenhill librdkafka 下载zip包解压 解压后找到目录
  • 利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)

    实际的开发可能会遇到数据大批量插入数据的问题 若是一条条的循环倒数效率非常低下 这个较好的解决方案 protected void Button1 Click object sender EventArgs e DateTime beginT

随机推荐

  • vue项目npm run build打包dist文件及打包后空白的解决方法

    目录 步骤 一 配置 情况一 在vue config js Vue2是config index js 中添加 情况二 Vite打包 二 打包 检验是否成功 要想将vue的移动端项目打包成手机的app软件apk格式 首先要将项目打包出dist
  • 矩阵图有何用处?XMind完美展示多对多对象间的关系!

    矩阵图是思维导图中运用非常广泛的图形 通俗来说 它其实就是一个表格 但却能非常紧凑的展现出对象之间的多对多关系 它提供的维度至少比其他树形图多一个维度 矩阵图 下图称为MD 表示多对多关系 但是 如何使MD与XMind中的其他图表区别开来
  • C++为什么父类析构函数要定义为虚析构函数

    C 为什么父类析构函数要定义为虚析构函数 这个问题主要是由于子类继承父类时 构造函数和析构函数的调用问题产生的结果 第一点我们需要知道 子类在继承时构造函数是不能被继承的 但是 为了初始化从父类继承来的数据成员 系统需要调用其父类的构造方法
  • 通过Java Chaincode实例学习交易系统中基于Hyperledger Fabric帐户的钱包模型

    通过Java Chaincode实例学习交易系统中基于Hyperledger Fabric帐户的钱包模型 这是Hyperledger Fabric Java Chaincode的教程 还有Go和NodeJS Chaincodes 我们将来可
  • 一文打尽UCI统一配置接口、UCI配置文件、UCI工具用法、UCI配置脚本、UCI API编程接口(Libubox库、UCI库)

    接下来几篇文章首先讲述 UCI 配置及配置接口 接着讲述系统内核设置 最后还会讲述一些非 UCI 系统配置 这些配置通常不提供用户修改接口 但在系统运行时也是非常重要的 一 UCI简介 MVC Model View Control 模式是经
  • mysql function cursor,mysql function with cursor

    Routine DDL Note comments before and after the routine body will not be stored by the server DELIMITER CREATE DEFINER ro
  • JS模块化教程

    尚硅谷JS模块化教程 当项目功能越来越多 代码量便也会越来越多 后期的维护难度会增大 此时在JS方面就会考虑使用模块化规范去管理 本视频内容涵盖 理解模块化 为什么要模块化 模块化的优缺点以及模块化规范 并且将带领大家学习开发中最流行的co
  • Typora中写论文怎么添加reference(参考文献)

    习惯写代码记录笔记用typora 写论文发现也是利器 简直无所不能 根本不需要专门的LaTeX来 无论是数学公式 还是代码格式 markdown语法可以解决所有的问题 如果普通的markdown语法解决不了 那就用HTML语法 总能解决你的
  • 14、OpenCV形态学操作——开运算、闭运算、形态学梯度、顶帽、黑帽

    OpenCV形态学操作 开运算 闭运算 形态学梯度 顶帽 黑帽 一 学习目标 二 各种操作简介 三 综合实例 一 学习目标 理解什么是开运算 闭运算 形态学梯度 顶帽和黑帽 学会使用OpenCV实现上述的图像形态学操作 使用综合性的例子进行
  • jaffe人脸数据集matlab,Database: Faces & Sketchs 人脸识别数据集

    UMIST Face Database The UMIST Face Database consists of 564 images of 20 people Each covers a range of poses from profil
  • 阿里云部署k8s及常见的错误解决方法

    目录 一 背景介绍 二 环境准备 2 1 ECS云服务资源清单 2 2 K8s软件列表 三 阿里云ECS服务器网络问题 3 1 问题阐述 3 2 解决方案 四 服务节点调整 master node1 node2 4 1 关闭firewall
  • UI自动化截图之chrome&Firefox篇

    在web的UI自动化中 小伙伴们经常遇到的一个问题是 IE的截屏非常好实现 一个save screenshot即可满足 而chrome和Firefox的全屏截图就让人很是头疼了 今天作者来给大家分享下自己实例中使用的chrome和Firef
  • Python/练习题

    1 执行 Python 脚本的两种方式 交互方式 命令行 Windows操作系统下 快捷键cmd 输入 python 启动交互式python解释器 文件方式 python文件 2 简述位 字节的关系 一个二进制位是计算机里最小表示单元 一个
  • 《第1阶段》——边界值分析法

    Video Number 091820 学习时间 4月23日 091820 边界值分析法 对输入或输出的边界值进行测试的一种黑盒测试设计方法 通常是作为等价类划分法的补充 这种情况下 其测试用例来自等价类的边界 不是从某等价类中随便挑一个作
  • quasar在axios.js中使用响应拦截器不能正常跳转解决

    问题描述 提示 这里描述具体问题 在quasar框架中的 src boot axios js中使用router push 无效 router index js import route from quasar wrappers import
  • 最近用matplotlib绘制了一张天气折线图,分享给大家

    usr bin env python coding utf 8 作者 志在星空 时间 2022 04 04 19 38 文件名 绘制折线图 py 软件 PyCharm import matplotlib pylab as pyl impor
  • 机器学习中的范数规则化之(一)L0、L1与L2范数

    机器学习中的范数规则化之 一 L0 L1与L2范数 zouxy09 qq com http blog csdn net zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题 过拟合与规则化 我们先简单的来理解下常用的L0 L1 L2和
  • 某验滑块js逆向 - 底图还原

    注 本篇博客仅供学习使用 请勿用做其他商业用途 如有侵权 请联系本菜鸟 前段时间本小菜鸟研究了某验的点选类型验证码 今天开始研究他们的另一类验证码 滑块 先直接上流程 和点选的步骤基本相同 1 请求gt register slide off
  • 【Linux】shell的简单模拟实现

    目录 一 大概思路 二 命令行显示及获取用户输入命令 三 分析命令 四 创建子进程执行命令 五 导入环境变量 六 源码 总结 前言 我们已经接触了很长时间的Linux 我们对shell特别的好奇 正好前面我们学习了shell的运行原理 以及
  • Ambari——大数据平台的搭建利器(一)

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