1.Overview

  Ambari是Apache推出的一个集中管理Hadoop的集群的一个平台,可以快速帮助搭建Hadoop及相关以来组件的平台,管理集群方便。这篇博客记录Ambari的相关问题和注意事项。方便为初学者省去搭配各个社区版的烦恼。

2.How to works

  在Ambari的官方WIKI上介绍了如何去使用Ambari,[官方文档]。官方说法比较简要,下面我补充相关注意事项,并给大家罗列一个详细的步骤。

2.1 Env

  首先,节点(物理机)需要实现准备好,这里笔者准备了5台节点,大家可以按需选择。所使用的系统为CentOS6.6,JDK为1.7,MySQL为5.1;另外,需要各个节点SSH面密码登录,关闭各个节点的防火墙,selinux置为disabled。这些环境的准备较为简单,这里就不多赘述了。大家可以利用搜索引擎去完成。

2.2 Exception

  在deploy的过程当中,会出现一些忽略的环境因素,首先是时间同步问题,在HBase集群之间需要保证时间的一致性(或是时间间隔极短),否则,时间不同步,会导致HBase集群异常,因而,这里我们可以事先将时间同步,命令如下所示:

  • 时间同步
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  #设置时区为北京时间,这里为上海,因为centos里面只有上海
  • 定时同步(crontab -e)
-/ * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP

  在管理Ambari的Meta时,这里我们会使用MySQL去做存储,因而,是需要用到MySQL的Driver的,这个在我们配置或启动Ambari的Server会有提示,不用过早去准备(有2个位置需要用到,/usr/share/java和/usr/lib/ambari-server会需要用到该依赖包)。这里,我们可以提前将Ambari的数据库和表在MySQL中创建,创建的脚本在/var/lib/ambari-server/resources,使用在MySQL中使用以下命令来完成,内容如下所示:

source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

  另外,在WebUI中,分配节点之前会对各个节点进行校验,这里笔者在校验过程当中出现以下异常,解决方案如下:

页面报出以下错误:
The following hosts have Transparent HugePages (THP) enabled。THP should be disabled to avoid potential Hadoop performance issues.
解决办法,在Linux下执行:
echo never >/sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never >/sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/defrag
Install, setup and start Ambari server by default.
Reach "Choose services" phase of installer.
Actual result:
"Confirm hosts" shows warning that ntpd service isn't running on hosts, but it's running in console by command service ntpd status

  在启动系统的ntpd后,最后将其设置为开机自启。命令如下所示:

chkconfig ntpd on

  在完成上述内容后,准备工作基本算是完成了,接下来的工作就是去对各个组件的集成。

3.Plugins

  关于组件的选择,大家可以按需而择,后续若是有其他需求可以追加组件功能。节点角色的分配这里需要注意,若是要配置HA,得放在后续配置,这里得SNameNode表示Secondary NameNode,需要和NameNode配置在一起使用,否则会对集群带来异常。如下图为笔者在跳板机的部分截图:

  之后,我们需要对Hive的Meta的存储介质进行配置,这里我们指定MySQL的地址之后,点击Deploy进行部署,下图为等待部署:

  等待起完成即可。

4.Architecture

  Ambari采用的并不是新的架构,只是充分利用了一些优秀的开源软件及其思想,将其巧妙的结合,使其在分布式环境中能够做到集群式服务管理、监控、展示等。Ambari的架构采用的是C/S模型,即:Server/Client模式,能够集中式管理分布式集群的安装配置及部署。Ambari除了ambari-server和ambari-agent,另外它还提供了一个界面优美的管理监控页面ambari-web,这些页面由ambari-server提供。ambari-server对外开放了REST API,这些用途有二,其一用于为ambari-web提供管理监控服务,其二用于与ambari-agent交互,接受ambari-agent向ambari-server发送的心跳请求。官方给出的架构图如下所示:

4.1 Ambari-agent

  ambari-agent是一个无状态的,主要功能如下所示:

  • 采集所在节点的信息并且汇总发送心跳给ambari-server
  • 处理ambari-server的响应请求

  因而,它有两种队列:MessageQueue和ActionQueue。

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

  架构图如下所示:

4.2 Ambari-server

  而对于ambari-server来说,其是一个有状态的,它维护着自己的一个有限状态FSM。同时这些状态存储与数据库当中(DB目前可以支持多种,可按序自选),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的所有状态信息的维护和变化都会被记录在数据库当中,使用者做一些更改服务的操作都会在数据库商做对应的记录,同时,Agent通过心跳来获取数据库的变动历史信息。

5.总结

  在部署Ambari时,主机节点的硬件配置,内存不能过低,标准的服务器配置即可。另外,从Ambari的结构图来看,架构虽然谈不上新颖,但各个模块职责分明,能够充分利用优秀的开源中间件来进行组合,对于我们去涉及类似的系统具有借鉴意义。

6.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

Hadoop - Ambari集群管理剖析的更多相关文章

  1. Hadoop基础-Hadoop的集群管理之服役和退役

    Hadoop基础-Hadoop的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,如果是上千万规模的集群,难免一个一个月会有那么几台服务器出点故 ...

  2. Hadoop CDH5 集群管理

    Hadoop 是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera 对 Hadoop做了相应的改变.Cloudera 公司的发行版,我们将该版本称为 CDH(Cloudera Distr ...

  3. Hadoop集群管理

    1.简介 Hadoop是大数据通用处理平台,提供了分布式文件存储以及分布式离线并行计算,由于Hadoop的高拓展性,在使用Hadoop时通常以集群的方式运行,集群中的节点可达上千个,能够处理PB级的数 ...

  4. 大数据领域两大最主流集群管理工具Ambari和Cloudera Manger

    不多说,直接上干货! 目前啊,都知道,大数据集群管理方式分为手工方式(Apache hadoop)和工具方式(Ambari + hdp 和Cloudera Manger + CDH).  手工部署呢, ...

  5. 给ambari集群里的kafka安装基于web的kafka管理工具Kafka-manager(图文详解)

    不多说,直接上干货! 参考博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口 ...

  6. Apache Hadoop 2.9.2 的集群管理之服役和退役

    Apache Hadoop 2.9.2 的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 随着公司业务的发展,客户量越来越多,产生的日志自然也就越来越大来,可能 ...

  7. [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...

  8. Hadoop实战:Hadoop分布式集群部署(一)

    一.系统参数优化配置 1.1 系统内核参数优化配置 修改文件/etc/sysctl.conf,使用sysctl -p命令即时生效.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  9. 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    作者:大数据女神-诺蓝(微信公号:dashujunvshen).本文是36大数据专稿,转载必须标明来源36大数据. 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要 ...

随机推荐

  1. gromacs, quake III和vrsqrtps

    看标题大家可能觉得三个词汇风马牛不相及,第一个是解蛋白质分子动力学的软件,第二个是上三代宅男最爱雷神之锤,第三个则是一个存在于IntelSSE及AVX中的一个指令,他的作用是快速求平方根的倒数. 起因 ...

  2. Zabbix_agent的安装配置

    在Linux上安装zabbix agent 安装 [root@agtest ~]# yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_6 ...

  3. [ASE][Daily Scrum]11.13

    今天的计划如下: View Shilin Liu 修复残缺地图下的行进问题           Client Jiafan Zhu(回学校了) 和服务器端对接测试 Yiming Liao       ...

  4. 关于.net 中Clipboard.GetDataObject() 之后读出数据读出的数据都是相同的解决方法

    模拟键盘sendkey("^c") 多次复制之后 当使用Clipboard.GetDataObject() 读出数据都是一个值 经过多次尝试 提供一个解决方案 IDataObjec ...

  5. 【转载】关于Linux Shell 特殊字符

    一.通配符     1.一般通配符       ① * (星号):匹配字符的0次或多次出现       举例:f*可以匹配f.fa.fls.a     注意:“.”和“/”必须显示匹配         ...

  6. 学一点Git--20分钟git快速上手

    (图片已修复)在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲试了,只是苦于没有借口(契机). 好吧,机会就在今天. 给我20分钟,是的,只要20分钟, 让你快速用上 ...

  7. 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug

    开篇介绍 前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值.我记得以前在 2008 的版本中为了弄明白这个配 ...

  8. 一个Java应用,三种字体风格(Java, Windows, Mac),真是蛋疼

    大家看看下面这张图,红色圈起来的是Java难看至极的字体渲染,黄色圈起来的是正常的Windows渲染,绿色是Mac风格的渲染. 其实我感觉正常风格就挺好的,就是看那个Java的Swing菜单,非常不顺 ...

  9. SONATYPE NEXUS搭建MAVEN私服

    1.为什么使用Nexus如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪费 ...

  10. 标签简化Spring-MVC配置

    新填入@RequestMapping标签 和@org.springframework.stereotype.Controller标签 这样做就是通过标签来简化之前,对HandlerMapping的配置 ...