Ambari的架构与设计思想

简介:

Ambari包罗了大部分Hadoop生态系统的组件,说明它的抽象层次、设计思想值得我们去研究学习。

Ambari的架构

通过三张图来说明:

第一张架构图告诉我们:Ambari是Hortonworks贡献给社区的、完全开源的、Hadoop生态的集群管理、监控、部署的工具:

ambari_arch1.png


第二张架构图告诉我们:

  1. 对外,Ambari提供ambari web,rest api,ambari shell三大方式操作机群;

  2. ambari将集群的配置、各个服务的配置等信息存在ambari server端的DB中(比如可以是postgresql);

  3. ambari server与ambari agent的交流走RPC,即agent向server报告心跳,server将command通过response发回给agent,agent本地执行命令,比如:agent端执行相应的python脚本;

  4. ambari有自己的一套监控、告警、镜像服务,以可插拔的形式供上层服务调用;

ambari_arch2.png


第三张架构图是第二张图的简化:

ambari-arch3.png

Ambari的设计思想

Ambari最重要的一块就是将各个Hadoop生态圈的组件抽象成一个个服务,Ambari Stack可以看成一个服务集合,比如,Ambari就使用了Hortonworks的Hortonworks Data Platform(HDP)来做为提供服务的服务栈。

这里简单介绍一下HDP:

它是一款基于Apache Hadoop的是开源数据平台,提供大数据云存储,大数据处理和分析等服务。该平台是专门用来应对多来源和多格式的数据,并使其处理起来能变成简单、更有成本效益。 HDP还提供了一个开放,稳定和高度可扩展的平台,使得更容易地集成Apache Hadoop的数据流业务与现有的数据架构。该平台包括各种的Apache Hadoop项目以及Hadoop分布式文件系统(HDFS)、MapReduce、Pig、Hive、HBase、Zookeeper和其他各种组件,使Hadoop的平台更易于管理,更加具有开放性以及可扩展性。 与其对应的有Cloudera的CDH(Cloudera’s Distribution Including Apache Hadoop),都是商业公司将开源的Hadoop拿来优化、改进、二次开发后再推出去,通过咨询等方式盈利。1234512345

好,回到Ambari的话题。Ambari Stack下面就对应了一个又一个Ambari Service,比如HDFS,那HDFS包含有不同的组件(Datanode,NameNode),这时Ambari又对其进行了抽象:

一个Service由多个ServiceComponent构成,一个ServiceComponent由多个ServiceComponentHost构成:

  1. Service: HDFS, YARN, HBase, etc

  2. ServiceComponent: HDFS.NameNode, YARN.ResourceManager, HBase.RegionServer, etc

  3. ServiceComponentHost: HDFS.NameNode.HostA, YARN.ResourceManager.HostB, etc

对应上面的三种资源,有三种操作:

  1. Operation: Service层面的操作(Install/Start/Stop/Config),一个Operation可以作用于一个或多个Service。

  2. Stage: ServicesComponent层面的操作,根据不同ServicesComponent操作间的依赖关系,一个Operation的所有Task可能被划分成多个Stage,一个Stage内的多个Task相互没有依赖,可以并行执行。

  3. Task: ServiceComponentHost层面的操作,为了完成一个Operation,需要为不同的机器分配一系列的Task去执行。

需要特别说明的是操作的执行顺序:

1. 不同的Stage只能顺序执行。后面的Stage只有在前面Stage执行成功后才会下发给Agent。如果前面Stage失败,后面的Stage将取消。2. 同一个Stage内的多个Task可以并行执行,可以同时下发给Agent。如果某个Task失败,其他的已下发且正执行的Task将被取消。3. 分配给同一个机器的不同Task只会顺序执行。123123

下图描述了这三种资源与操作的对应关系:

ambari-concepts.png

上述的三个操作抽象是定义态的描述,它们分别对应一个执行态的抽象:

  1. StagePlan: 执行态的Operation,是一个Stage DAG。

  2. Action: 执行态的Stage,由多个Command构成。

  3. Command: 执行态的Task,下发给具体的机器执行。主要有以下几种:

(1)、ExecuteCommand: 对服务组件执行INSTALL/START/STOP等操作。 (2)、StatusCommand: 对服务组件执行死活检查(由Server定期下发)。 (3)、CancelCommand: 取消其他已经下发的Task(当Stage中的某个Task失败时)。 (4)、RegistrationCommand: 要求Agent向Server重新注册(当发现Server维护的心跳序号与Agent上报的不一致时)。12341234

下图通过一个具体实例(启动HDFS和YARN服务),展示了其Stage DAG的构建逻辑:

ambari-stageplan.png










本文转自 yntmdr 51CTO博客,原文链接:http://blog.51cto.com/yntmdr/1887563,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Linux API
Linux驱动的软件架构(三):主机驱动与外设驱动分离的设计思想
Linux驱动的软件架构(三):主机驱动与外设驱动分离的设计思想
121 0
|
SQL 存储 JavaScript
大数据王者之路 - Ambari 02 架构简介
对了,学委是搞大数据的,别看整体搞那么多极简单系列,NodeJS,小白趣味故事。大数据还是拿捏得住的。
268 0
大数据王者之路 - Ambari 02 架构简介
|
移动开发 缓存 ARouter
最强整理:一线互联网移动架构师设计思想解读开源框架
Android架构组件Jetpack、IOC架构设计、RXJava响应式编程框架设计、网络访问框架设计、图片加载框架、组件化框架设计、热修复设计、插件化框架解读
|
监控 大数据 Python
|
监控 大数据 Apache
|
23天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
44 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
23天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
142 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型

热门文章

最新文章