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)

  在管理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.结束语

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
Winform中Textbox、NumericUpDown等修改高度,禁止输入数字或内容的实现
Winform中的Textbox、NumericUpDown控件通常在单行的情况下,无法直接通过`Height`属性修改高度,但很多时候我们需要调整其高度,使其显示的更加合理,主要介绍三种方法...
4052 0
|
JSON 自然语言处理 Serverless
基于阿里云通义千问开发智能写作助手
现代办公中,撰写邮件、会议记录、报告等任务耗费大量时间。一个智能写作助手能显著提升效率,帮助用户快速生成高质量的文本内容。阿里云通义千问作为阿里巴巴推出的强大大语言模型(LLM),具备出色的自然语言理解与生成能力,非常适合用于开发智能写作工具。本博客将介绍如何基于通义千问构建一个智能写作助手,实现高效的内容生成和编辑功能。
1424 2
|
机器学习/深度学习 人工智能 自然语言处理
从0搭建AI智能客服教程(AI智能客服系统选型和实战指南)
针对智能客服技术与业务脱节的痛点,合力亿捷通过 NLP、知识图谱及人机协同策略,助企业实现首次解决率超 70%、人力成本降 43%、年省成本超千万。其方案提升制造业问题解决率 40%,投诉转接成功率达 99%,以分场景选型助力超万家企业平衡业务与成本,成行业首选。
|
人工智能 自然语言处理 并行计算
EchoMimicV2:阿里推出的开源数字人项目,能生成完整数字人半身动画
EchoMimicV2是阿里蚂蚁集团推出的开源数字人项目,能够生成完整的数字人半身动画。该项目基于参考图片、音频剪辑和手部姿势序列,通过音频-姿势动态协调策略生成高质量动画视频,确保音频内容与半身动作的一致性。EchoMimicV2不仅支持中文和英文驱动,还简化了动画生成过程中的复杂条件,适用于虚拟主播、在线教育、娱乐和游戏等多个应用场景。
4608 5
EchoMimicV2:阿里推出的开源数字人项目,能生成完整数字人半身动画
|
机器学习/深度学习 存储 数据中心
《深度揭秘:TPU张量计算架构如何重塑深度学习运算》
TPU(张量处理单元)是谷歌为应对深度学习模型计算需求而设计的专用硬件。其核心矩阵乘法单元(MXU)采用脉动阵列架构,显著提升矩阵运算效率;内存管理单元优化数据流通,减少瓶颈;控制单元协调系统运作,确保高效稳定。TPU在训练和推理速度、能耗方面表现出色,大幅缩短BERT等模型的训练时间,降低数据中心成本。尽管通用性和易用性仍有挑战,但TPU已为深度学习带来革命性变化,未来有望进一步优化。
1184 19
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
557 35
|
存储 数据可视化 数据管理
在ArcGIS Pro中使用栅格函数
在ArcGIS Pro中使用栅格函数
869 1
|
存储 搜索推荐 Linux
2024年 15 个最佳免费开源 Linux 文件管理器
【4月更文挑战第25天】
14282 53
2024年 15 个最佳免费开源 Linux 文件管理器
|
人工智能 自然语言处理 算法
魔搭上新啦! 智源千万级指令微调数据集Infinity-Instruct,Llama3.1仅微调即可接近GPT-4
智源研究院在今年6月推出了千万级指令微调数据集Infinity Instruct。Infinity Instruct在 Huggingface等平台发布后,快速到达了Huggingface Dataset的Trending第一
魔搭上新啦! 智源千万级指令微调数据集Infinity-Instruct,Llama3.1仅微调即可接近GPT-4
|
缓存 弹性计算 运维
网络管理利器:掌握常用的CMD命令
本文介绍了常用的网络CMD命令及其用法,包括`ping`、`ipconfig`、`tracert`、`nslookup`、`netstat`、`route`、`telnet`、`ftp`、`netsh`、`arp`、`nbtstat`、`hostname`、`systeminfo`、`ipconfig /flushdns`和`tasklist`。这些命令在日常的网络管理和故障排查中非常实用,帮助你轻松进行网络诊断、配置和监控。
2213 1