运维过hadoop集群的人都应该清楚,hadoop生态从安装、配置到后期运维是一个很是艰辛的过程,通常来讲安装hadoop可能就须要几天时间,运维一个小型集群一样须要几我的。ambari和cloudera Manager这两个系统,目的就是简化hadoop生态集群的安装、配置,同时提升hadoop运维效率,以及对hadoop集群进行监控。前端
Ambari是Hortonworks公司开源的Hadoop平台的管理软件,着重于帮助你们管理本身的HDP集群,具有Hadoop组件的安装、管理、运维等基本功能,提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。python
Cloudera Manager是cloudera公司的一个产品,着重于帮助你们管理本身的CDH集群,Cloudera Manager是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人下降到几人之内,极大的提升集群管理的效率。ios
(1) 组件选择:采用apache hadoop组件(原生hadoop组件)web
(2) 优势:redis
a) 各个组件彻底开源免费。数据库
b) 社区资源活跃。apache
c) 能够加深对各个组件的理解和掌握。安全
(3) 缺点:ruby
a) 集群部署:集群部署、安装、配置耗时比较多,一般按照集群须要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。服务器
b) 版本管理:组件的版本管理比较复杂,在Hadoop生态圈中,组件的选择、使用,好比Hive,Mahout,Sqoop,Flume,Spark,impala,Oozie等等,须要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能经过等。常常会浪费大量的时间去编译组件,解决版本冲突问题。
c) 集群运维:对集群的监控,运维,须要安装第三方的其余软件,如ganglia,nagois等,运维难度较大,同时运维成本比较高。
(1) 组件选择:Ambari + HDP 或 Cloudera Manger + CDH
(2) 优势:
a) 基于稳定版本Apache Hadoop,解决了组件不一样版本之间的冲突问题,并应用了最新Bug修复或Feature的patch,在兼容性、安全性、稳定性上有加强。
b) 默认优化了不少参数,如HDFS的snappy压缩。
c) 提供了部署、安装、配置工具,大大提升了集群部署的效率,能够在数个小时内部署好集群。
d) 第三方发行版一般都通过了大量的测试验证,有众多部署实例,大量的运行到各类生产环境。
e) 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工做简单,有效。
(3) 缺点
a) 免费社区版功能不全,非社区版服务收费。
b) 收费标准:按节点收费,Cloudera每一个节点一年4000美圆,Hortonworks 每一个节点一年1250美圆。
Ambari是Hortonworks开源的Hadoop平台的管理软件,具有Hadoop组件的安装、管理、运维等基本功能,提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
Ambari目前对接安装Hortonworks Data Platform(HDP),即Hortonworks的开源Hadoop,对Apach的Hadoop平台的生产环境部署没有找到实例;对于已经安装了Apach Hadoop或者其余Hadoop平台的,可能不能使用Ambari来管理;
(1)Host Level Action(机器级别的操做)
(2)Component Level Action(模块级别的操做)
(1)Cluster User
查看集群和Service的信息,如配置、service状态、健康状态等。Read-only
(2)Service Operator
可以操做Service的生命周期,如启动,中止,也能够进行一些如Rebalance DataNode和YARN refresh的操做
(4) Service Administrator
在Service Operator的基础上增长了配置service,移动NameNode,启用HA等操做
(5) Cluster Operator
在Service Administrator的基础上增长了对hosts和components的操做,如增长,删除等
(6) Cluster Administrator
集群的超级管理员,拥有无上的权利,能够操做任何组件。
(1)Roll Start功能。根据Service的依赖关系,按照必定的顺序启动每一个Service。好比HBase依赖HDFS和Zookeeper,Ambari会先启动HDFS和Zookeeper,以后启动HBase。
(2)关键的运维指标(metrics)–metrics 是“度量,指标”的意思
(3)在左侧的 Service 列表,中间部分是 Service 的模块(Component)信息,也就是该 Service 有哪些模块及其数目。右上角有个 Service Action 的按钮,包括service的启动、中止、删除等操做。
(4)Quick links(导向组件原生管理界面)
(1)Alert 告警级别:
OK 、Warning、Critical、Unknown、None
(2)Alert 告警类型:
WEB、Port、Metric、Aggregate 和 Script
表 1. Ambari 中的 Alert 类型对比
类型 |
用途 |
告警级别 |
阀值是否可配置 |
单位 |
PORT |
用来监测机器上的一个端口是否可用 |
OK, WARN, CRIT |
是 |
秒 |
METRIC |
用来监测 Metric 相关的配置属性 |
OK, WARN, CRIT |
是 |
变量 |
AGGREGATE |
用于收集其余某些 Alert 的状态 |
OK, WARN, CRIT |
是 |
百分比 |
WEB |
用于监测一个 WEB UI(URL)地址是否可用 |
OK, WARN, CRIT |
否 |
无 |
SCRIPT |
Alert 的监测逻辑由一个自定义的 python 脚本执行 |
OK, CRIT |
否 |
无 |
Ambari经过HDP将Hadoop的组件进行集成,经过栈的形式提供Service的组合使用,它主要解决的问题以下:
Ambari并无对Hadoop组件进行过多的功能集成,如日志分析等,只是提供了安装,配置,启停等功能,尽可能保持了跟原生Hadoop组件的隔离性,对于该组件的具体操做,经过Quick Links 直接导向原生的管理界面(如HBase Master UI),它的作法保持了对于Hadoop组件的低侵入性。
Cloudera Manager是cloudera公司的一个产品,着重于帮助你们管理本身的CDH集群,经过Cloudera Manager统一的UI界面来快速地自动配置和部署CDH和其相关组件,同时Cloudera Manager还提供了各类丰富的可自定义化的监视诊断和报告功能,集群上统一的日志管理功能,统一的集群配置管理和实时配置变动功能,多租户功能,高可用容灾部署功能和自动恢复功能等, 方便企业统一管理和维护本身的数据中心。它细分为免费的Express版本和功能彻底并提供众多增值服务的收费版本Enterprise。
管理:对大数据集群进行管理,如添加、删除节点等操做。
监控:监控集群的健康状况,对设置的各类指标和系统运行状况进行全面监控。
诊断:对集群出现的问题进行诊断,对出现的问题给出建议解决方案。
集成:对hadoop的多组件进行整合。
cloudera manager的核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和中止服务,以及管理上的服务运行群集。
Agent:安装在每台主机上。该代理负责启动和中止的过程,拆包配置,触发装置和监控主机。
Management Service:由一组执行各类监控,警报和报告功能角色的服务。
Database:存储配置和监视信息。一般状况下,多个逻辑数据库在一个或多个数据库服务器上运行。例如,Cloudera的管理服务器和监控角色使用不一样的逻辑数据库。
Cloudera Repository:软件由Cloudera 管理分布存储库。
Clients:是用于与服务器进行交互的接口:
Admin Console :基于Web的用户界面与管理员管理集群和Cloudera管理。
API :与开发人员建立自定义的Cloudera Manager应用程序的API。
Apache hadoop 原生组件的webUI界面能够查看组件的运行状态,历史日志,内存消耗,硬盘消耗状况等。
相比clouderManager和ambari:
(1)原生的webUI不能执行服务的启停操做
(2)各个组件之间的webUI界面是相互独立的
(3)大部分功能仅限于read-only的操做,没法执行其它操做
(4)很难统一监控整个集群的运行状况
组件 |
Ambari |
ClouderaManager |
开发公司 |
Hortonworks公司 |
Cloudera公司 |
部署方式 |
Ambari + HDP |
Cloudera Manger + CDH |
生产运行状况 |
比较稳定 |
很稳定 |
使用状况 |
市场占用率较高 |
市场占用率高 |
开源状况 |
产品开源,服务好像收费 |
有免费版和商业版 |
维护 |
依靠社区力量 |
cloudera作了一些定制开发,自行维护或打patch会离社区愈来愈远 |
配置版本控制和历史记录 |
支持 |
不支持 |
二次开发 |
支持 |
不支持 |
集成 |
支持 |
no (不支持redis、kylin、es) |
权限控制 |
ranger(相对简单) |
sentry(复杂) |
视图定制 |
支持建立本身的视图,添加自定义服务 |
不支持 |
当咱们决定是否采用某个软件用于开源环境时,一般须要考虑如下几个因素:
(1)是否为开源软件,便是否免费。
(2) 是否有稳定版,这个通常软件官方网站会给出说明。
(3) 是否通过实践验证,这个可经过检查是否有一些大点的公司已经在生产环境中使用知道。
(4) 是否有强大的社区支持,当后期出现一个问题时,可以经过社区、论坛等网络资源快速获取解决方法。
Ambari是hadoop分布式集群配置管理工具,是由hortonworks主导的开源项目。它已经成为apache基金会的顶级项目,已经成为hadoop运维系统中的得力助手,引发了业界和学术界的关注。
Ambari采用的不是一个新的思想和架构,也不是完成了软件的新的革命,而是充分利用了一些已有的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中作到了集群式服务管理能力、监控能力、展现能力。这些优秀开源软件有:
Ambari架构采用的是Server/Client的模式,主要由两部分组成:ambari-agent和ambari-server。ambari依赖其它已经成熟的工具,例如其ambari-server 就依赖python,而ambari-agent还同时依赖ruby, puppet,facter等工具,还有它也依赖一些监控工具nagios和ganglia用于监控集群情况。其中:
1、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节点只负责所在节点的状态采集及维护。
2、Ambari-Agent内部架构
ambari-agent是一个无状态的。其功能主要分两部分:
所以它有两种队列:
3、Ambari-Server内部架构
ambari-server是一个有状态的,它维护着本身的一个有限状态机FSM。同时这些状态机存储在数据库中,前期数据库主要采用postgres。以下图所示,server端主要维护三类状态:
Ambari-server的Heartbeat Handler模块用于接收各个agent的心跳请求(心跳请求里面主要包含两类信息:节点状态信息和返回的操做结果),把节点状态信息传递给FSM状态机去维护着该节点的状态,而且把返回的操做结果信息返回给Action Manager去作进一步的处理。
Coordinator模块又能够称为API handler,主要在接收WEB端操做请求后,会检查它是否符合要求,stage planner分解成一组操做,最后提供给Action Manager去完成执行操做。
所以,从上图就能够看出,Ambari-Server的全部状态信息的维护和变动都会记录在数据库中,用户作一些更改服务的操做都会在数据库上作一些相应的记录,同时,agent经过心跳来得到数据库的变动历史。