20200609——ambari的源码解析

ambari的介绍

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

ambari的基本概念

  1. Resource:Ambari把可以被管理的资源的抽象为一个Resource实例,资源可以包括服务、组件、主机节点等,一个resource实例中包含了一系列该资源的属性;
  2. Property:服务组件的指标名称;
  3. ResourceProvider和PropertyProvider分别对应Resource和Property的提供方,获取指标需要先获取Resource,然后获取Property对应的metric;
  4. Query:Query是Resource的内部对象,代表了对该资源的操作;
  5. Request:一个Request代表了对Resource的操作请求,包含http信息及要操作的Resource的实例,Request按照http的请求方式分为四种:GET、PUT、DELETE、POST;
  6. Predicate:一个Predicate代表了一系列表达式,如and、or等;

ambari的基本组件

Ambari 可以分为 5个大的组件,分别是是 Ambari-server 、 Ambari-web 、 Ambari-agent 、 Ambari-metrics-collector 和 Ambari-metrics-monitor 。

  1. 在集群的每一台机器上都会部署 Ambari-agent 程序。 Agent 主要负责接收来着 Server 端的命令, 这些命令可以是安装、启动、停止 Hadoop 集群上的某一服务。同时, agent 端需要向 Ambari-server 端上
    报命令执行的结果,是执行成功还是失败。
  2. Ambari-Server 提供 REST 接口给Agent 和 Web 访问。用户甚至可以不用界面,而是通过 curl 命令来操控集群。
  3. Ambari-metric-collector和 Ambari-metrics-monitor 是收集群中组件 metrics 的模块。 关于Ambari Metrics

ambari的项目目录

在这里插入图片描述

ambari-server目录

在这里插入图片描述
主要的问题出在agent下面的事情

ambari-server

ambari-server结构

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

在这里插入图片描述

  1. 对外,Ambarii-Server提供ambari web,rest api,ambari shell三大方式操作机群;
  2. ambari将集群的配置、各个服务的配置等信息存在ambari server端的DB中(比如可以是postgresql);
  3. ambari server与ambari agent的交流走RPC,即agent向server报告心跳,server将command通过respons发回给agent,agent本地执行命令,比如:agent端执行相应的python脚本;
  4. ambari有自己的一套监控、告警、镜像服务,以可插拔的形式供上层服务调用;

在这里插入图片描述

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会读取Stack和service的配置文件,当ambari创建集群的时候,ambari server传送stack和service配置文件以及servcie的生命周期的控制脚本到ambari agent。agent拿到配置文件之后,会下载安装公共源的软件包,安装完毕之后,ambari server 会同志agent启动service,之后ambari server会定期发送命令到Agent检查Service的状态,Agent上报给Server并且呈现在Ambari的Gui上面。

ambari-agent

ambari-agent结构

ambari-agent是一个无状态的,其功能主要分为两部分:
1)采集当前的节点信息并且汇总发心跳回报给ambari-server
2)处理ambari-server的执行请求
因此他有两种消息队列
1)消息队列MessageQueue 或者说是ResultQueue,包括节点状态信息(包括注册信息)和执行结果,汇总之后通过心跳发送给server
2)操作队列ActionQueue用于接受ambari-server返回过来的状态操作,然后能通过执行器调用puppet或者python脚本完成任务

在这里插入图片描述

ambari-agent引导的流程

用ssh
1)ambari server通过调用bootstrap.py来初始化整个bootstrap进程
2)server端用过ssh keys在agent上配置ambari repo:利用ambari server上面的ambari.repo文件,并且scp到agent host上面
3)复制Ambari Agent Setup script:利用scp命令将setupAgent.py脚本复制到Agent host上
4)在各个Agent上执行Ambari Agent Setup script:SSH到各个Agent Host上然后执行setupAgent.py。
5)在Agent上安装epel-release:用apt-get/yum/zypper工具来安装epel-release包
6)在Agent上安装Ambari-agent:用apt-get/yum/zypper工具来安装Ambari-Agent包
7)配置Ambari-agent.ini:修改/etc/ambari-agent/conf/ambari-agent.ini,并设置agent host上的hostname
8)启动Ambari-agent:启动Ambari-agent进程
9)开始Ambari Agent注册:agent开始registration进程
√

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值