作者:mobiledu2502930533 | 来源:互联网 | 2023-01-22 11:36
ambari的介绍ambari是基于hadoop的分布式集群配置管理工具,是由hortonworks主导的开源项目。它已经成为apache基金会的孵化器项目,已经成为hadoop运
ambari的介绍
ambari是基于hadoop的分布式集群配置管理工具,是由hortonworks主导的开源项目。它已经成为apache基金会的孵化器项目,已经成为hadoop运维系统中的得力助手,引起了业界和学术界的关注。
ambari的基本概念
- Resource:Ambari把可以被管理的资源的抽象为一个Resource实例,资源可以包括服务、组件、主机节点等,一个resource实例中包含了一系列该资源的属性;
- Property:服务组件的指标名称;
- ResourceProvider和PropertyProvider分别对应Resource和Property的提供方,获取指标需要先获取Resource,然后获取Property对应的metric;
- Query:Query是Resource的内部对象,代表了对该资源的操作;
- Request:一个Request代表了对Resource的操作请求,包含http信息及要操作的Resource的实例,Request按照http的请求方式分为四种:GET、PUT、DELETE、POST;
- Predicate:一个Predicate代表了一系列表达式,如and、or等;
ambari的基本组件
Ambari 可以分为 5个大的组件,分别是是 Ambari-server 、 Ambari-web 、 Ambari-agent 、 Ambari-metrics-collector 和 Ambari-metrics-monitor 。
- 在集群的每一台机器上都会部署 Ambari-agent 程序。 Agent 主要负责接收来着 Server 端的命令, 这些命令可以是安装、启动、停止 Hadoop 集群上的某一服务。同时, agent 端需要向 Ambari-server 端上
报命令执行的结果,是执行成功还是失败。
- Ambari-Server 提供 REST 接口给Agent 和 Web 访问。用户甚至可以不用界面,而是通过 curl 命令来操控集群。
- Ambari-metric-collector和 Ambari-metrics-monitor 是收集群中组件 metrics 的模块。 关于Ambari Metrics
ambari的项目目录
ambari-server目录
主要的问题出在agent下面的事情
ambari-server
ambari-server结构
ambari-server是一个有状态的,它维护着自己的一个有限状态机FSM。同时这些状态机存储在数据库中,前期数据库主要采用postgres。
- 对外,Ambarii-Server提供ambari web,rest api,ambari shell三大方式操作机群;
- ambari将集群的配置、各个服务的配置等信息存在ambari server端的DB中(比如可以是postgresql);
- ambari server与ambari agent的交流走RPC,即agent向server报告心跳,server将command通过respons发回给agent,agent本地执行命令,比如:agent端执行相应的python脚本;
- ambari有自己的一套监控、告警、镜像服务,以可插拔的形式供上层服务调用;
server端主要维护三类状态
- Live Cluster State:集群现有状态,各个节点汇报上来的状态信息会更改该状态;
- Desired State:用户希望该节点所处状态,是用户在页面进行了一系列的操作,需要更改某些服务的状态,这些状态还没有在节点上产生作用;
- 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进程