本文用来记录Ambari的学习
Ambari的简单介绍
从Ambari的作用来说,它是用来创建、管理、监控Hadoop生态(例如hadoop、hive、hbase、Sqoop以及Zookeeper)集群的工具。Ambari就是为了让Hadoop已经相关的大数据软件更容易使用的一个工具。Ambari支持的平台组建也越来越多,如流行的Spark、Storm等计算框架,已经资源调度平台YARN等,都可以通过Ambari来轻松部署。
Ambari自称也是一个分布式架构的软件,主要由两部分组成:Ambari Server和Ambari Agent。用户通过Ambari Server来通知Ambari Agent来安装对应的软件;Agent会定时的发送各个机器每个软件模块的状态给Ambari Server,最终这些信息会呈现在Ambari的GUI中,方便用户了解集群中各个模块的状态,并进行维护。
Ambari的架构和工作原理
Ambari Server会读取Stack和Service的配置文件。当用Ambari创建集群的时候,Ambari Server传送Stack和Service的配置文件配以及Service生命周期的控制脚本到Ambari Agent。Agent拿到配置文件后,会下载安装公共资源里的软件包。安装完成后,Ambari Server会通知Agent去启动Service。之后,Ambari Server会定时发送命令道Agent检查Service的状态,Agent上报给Server并显示在Ambari的UI上。
Ambari Server支持其他API,这样能够很容易的扩展或定制Ambari。
如果有安全方面的要求,Ambari支持Kerberos认证的hadoop集群。
Ambari web:用户交互界面,通过HTTP发送使用Rest API与Ambari Server进行交互。
Ambari Server:Ambari服务器,用于和Web、Agent进行交互,并且包含了Agent的所有控制逻辑,Server产生的数据存储在DB中。
Ambari Agent:守护进程,主要包含节点状态与执行结果信息汇报给Server,以及接受Server操作命令的两个消息队列。
Host:安装实际大数据服务组件的物理机器,每台机器都有Ambari Agent和Metrcis Monitor守护进程服务。
Metrics Collector:主要包括将Metrics monitor汇报的监控信息存储到Hbase,以及提供给Ambari Server的查询接口。
Ambari的自定义命令
在Ambari的Stack中,每个Service都有start、stop、status和configure这样的命令,我们称为生命周期的控制命令。Service的每个模块必须实现这几个命令。为了让用户可以更好的控制每个service以及模块,Ambari支持了自定义命令。
具体的自定义命令配置在每个Service的metainfo.xml中。不过不同的模块类型,呈现在GUI的方式是不一样的。当一个service的Master模块增加一个自定义命令时,该命令会显示在该Service的Service Action List中。如果点击这个命令,Ambari Server就会通知Master所在机器的Agent,Agent就会执行该自定义命令的逻辑。当增加一个自定义命令给Slave或Client类型的Component,该命令会呈现在机器的Component页面。在哪个机器的Component页面点击该命令,Ambari Server就会通知对应机器的Agent调用这个自定义的命令接口。