Hadoop - Ambari集群管理剖析

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)


0-59/10 * * * * /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.结束语

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

时间: 2024-10-30 04:04:00

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

Hadoop 集群管理上的新“绝招”

Hadoop在一些企业部署时,往往会遇到多个用户各自创建的数据处理工作的情况.这些工作都运行在同一个Hadoop系统上时,他们之间可能会彼此冲突,争夺可用的处理器资源. David Clubb,在移动游戏平台和市场公司Chartboost的高级数据工程师,试图优化大数据技术,提升产品体验时,也遇到了Hadoop集群管理的问题."我们正在更新Hadoop软件,并试图将其迁移到新的集群,但并没有找到监控集群的好方法,"Clubb说道."你可以看到工作在运行,但你却不能看到其所使用

Spark集群管理器介绍

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器. Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式:如果是想让Spark部署在其他集群上,各应用共享集群的话,可以采取两种集群管理器:Hadoop Yarn 或 Apache Mesos. 一.独立集群管理器 Spark独立集群管理器提供的在集群上运行应用的简单方法.要使用集群启动脚本,按照以下步骤执行即可: 1.将编译好的Spark发送到集群的其

集群管理工具经得起考验吗?

如今集群设计遍地都是.最典型的例子包括软件定义存储.虚拟化架构.超级融合.公有云与私有云,以及众所周知的大数据.集群以横向扩展的方式来构建基础设施,使用商业产品,如服务器和JBOD.横向扩展的设计能够实现容量与性能递增,与大部分纵向扩展的基础架构相比,有着巨大的成本规模效益. 大集群因为其支持大规模融合与整合,可以协助优化整体资本支出,而不断吸引业内目光.那么为什么我们不把现在所有的IT基础设施都集群化呢?大规模集群管理和运维都相当复杂,尤其是在开始将工作负载和租户结合后.如果建造了一个大集群,

一步到位分布式开发Zookeeper实现集群管理

说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解.   Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. Zookeeper 的核心是广播,这个机制保证了各个Server之间的同步.实现这个机制的协议叫做Zab协议. Zab协议有两种模式,

一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

1)集群规划:主机名        IP      安装的软件                     运行的进程master    192.168.199.130   jdk.hadoop                     NameNode.DFSZKFailoverController(zkfc)slaver1    192.168.199.131    jdk.hadoop                       NameNode.DFSZKFailoverController(

[喵咪Liunx(5)集群管理利器pssh

[喵咪Liunx(5)集群管理利器pssh 前言 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件更改任何一个配置文件就要无比麻烦的每一台机器都去执行命令(当然用docker等的请无视),pssh可以帮我们解决这些问题,可以吧准备好的脚本批量在所有机器上进行执行,帮助你批量管理服务器集群! 附上: 喵了个咪的博客:w-blog.cn pssh官网地址:http://www.theether.org/pssh/ 1. 安装 pssh和mon

sqoop2可以安装在非hadoop的集群的机器上吗?

问题描述 sqoop2可以安装在非hadoop的集群的机器上吗? sqoop2安装分为server和client,server安装需要依赖hadoop,但是有没有什么方法,可以在非hadoop机器上安装 ?

pdsh、ClusterSSH和mussh集群管理软件

我是想把 /etc/hosts 文件 分发到 10.205.10.11至20机器上 安装命令 sudo yum -y install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh pdcp -w ssh:root@srv[11-20] /etc/hosts /etc/ pdsh软件包还包括一个pdcp命令,可以将文件拷贝到一组机器上,用法如下:pdsh -w [SSH_OR_RSH]:[USERNAME]@nodesrv[1,2-4,5] S

Java微服务开发指南 -- 集群管理、失败转移和负载均衡的实践

集群管理.失败转移和负载均衡的实践     在前一章节中,我们快速的介绍了集群管理.Linux容器,接下来让我们使用这些技术来解决微服务的伸缩性问题.作为参考,我们使用的微服务工程来自于第二.第三和第四章节(Spring Boot.Dropwizard和WildFly Swarm)中的内容,接下来的步骤都适合上述三款框架. 开始     我们需要将微服务打包成为Docker镜像,最终将其部署到Kubernetes,首先进入到项目工程hola-springboot,然后启动jboss-forge,