Ambari源代码分析之总览

一、基本概念:

  1. Resource:Ambari把能够被管理的资源的抽象为一个Resource实例,资源能够包括服务、组件、主机节点等,一个resource实例中包括了一系列该资源的属性;
  2. Property:服务组件的指标名称;
  3. ResourceProvider和PropertyProvider分别相应Resource和Property的提供方,获取指标须要先获取Resource,然后获取Property相应的metric;
  4. Query:Query是Resource的内部对象,代表了对该资源的操作;
  5. Request:一个Request代表了对Resource的操作请求,包括http信息及要操作的Resource的实例,Request依照http的请求方式分为四种:GET、PUT、DELETE、POST;
  6. Predicate:一个Predicate代表了一系列表达式,如and、or等;

二、源码结构:

  1. org.apache.ambari.server.api.services:对web接口的入口方法,处理/api/v1/*的请求;
  2. org.apache.ambari.server.controller:对Ambari中cluster的管理操作,如新增host,更新service、删除Component等;
  3. org.apache.ambari.server.controller.internal:主要存放ResourceProvider和PropertyProvider;
  4. org.apache.ambari.server.orm.*:数据库操作相关;
  5. org.apache.ambari.server.agent.rest:处理与Agent的接口的入口方法;

三、获取指标流程:

  1. jersy接口接收到请求,创建一个ResourceInstance实例;
  2. 解析http请求构造一个Request对象,然后交给reques的process()方法来处理;
  3. reques解析url或http_body得到一个Predicate对象;
  4. 依据http类型获取handler,GET请求相应ReadHandler;
  5. handler向Query对象中加入?分页、Render、Predicate等属性后,然后让query.execute();
  6. 依据Resource.Type获得相应的ResourceProvider对象,调用其getResources方法得到Set<Resource>;
  7. 调用相应的PropertyProvider填充Resource;
  8. 处理结果,放回json结果

Ambari源代码分析之总览

时间: 2024-08-01 23:39:49

Ambari源代码分析之总览的相关文章

Ambari源代码分析之Resource.Type与ResourceProvider相应关系

前面提到.每一种Resource都相应一个ResourceProvider,以下给出其相应关系: Resource.Type ResourceProvider Workflow WorkflowResourceProvider Job JobResourceProvider TaskAttempt TaskAttemptResourceProvider View ViewResourceProvider ViewInstance ViewInstanceResourceProvider Blue

Ambari源代码分析之Resource.Type与PropertyProvider相应关系

PropertyProvider是取得监控指标的组件.以下给出Resource.Type与PropertyProvider相应关系: Resource.Type PropertyProvider Cluster GangliaReportPropertyProvider Service NagiosPropertyProvider Host GangliaHostPropertyProvider;NagiosPropertyProvider Component StackDefinedPrope

Ambari源码分析之总览

一.基本概念: Resource:Ambari把可以被管理的资源的抽象为一个Resource实例,资源可以包括服务.组件.主机节点等,一个resource实例中包含了一系列该资源的属性: Property:服务组件的指标名称: ResourceProvider和PropertyProvider分别对应Resource和Property的提供方,获取指标需要先获取Resource,然后获取Property对应的metric: Query:Query是Resource的内部对象,代表了对该资源的操作

Java中arraylist和linkedlist源代码分析与性能比較

Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arraylist和linkedlist的性能. 2,arraylist源代码分析 Arraylist底层的数据结构是一个对象数组.有一个size的成员变量标记数组中元素的个数,例如以下图: * The array buffer into which the elements of the ArrayLis

转:RTMPDump源代码分析

0: 主要函数调用分析 rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.也提供 Android 版本. 最近研究了一下它内部函数调用的关系. 下面列出几个主要的函数的调用关系. RTMPDump用于下载RTMP流媒体的函数Download: 用于建立网络连接(NetConnect)的函数Connect: 用于建立网络流(NetStream)的函数 rtmpdump源代码

Kafka SocketServer源代码分析

Kafka SocketServer源代码分析 标签: kafka 本文将详细分析Kafka SocketServer的相关源码. 总体设计 Kafka SocketServer是基于Java NIO来开发的,采用了Reactor的模式,其中包含了1个Acceptor负责接受客户端请求,N个Processor负责读写数据,M个Handler来处理业务逻辑.在Acceptor和Processor,Processor和Handler之间都有队列来缓冲请求. kafka.network.Accepto

pomelo源代码分析(一)

千里之行始于足下,一直说想了解pomelo,对pomelo有兴趣,但一直迟迟没有去碰,尽管对pomelo进行源代码分析,在网络上肯定不止我一个,已经有非常优秀的前辈走在前面,如http://golanger.cn/,在阅读Pomelo代码的时候,已经连载到了11篇了,在我的源代码分析參考了该博客,当然,也会添?我对pomelo的理解,借此希望能提高一下自己对node.js的了解和学习一些优秀的设计. 开发环境:win7 调试环境:webstorm5.0 node.js版本号:v0.8.21 源代

Jafka源代码分析——随笔

Kafka是一个分布式的消息中间件,可以粗略的将其划分为三部分:Producer.Broker和Consumer.其中,Producer负责产生消息并负责将消息发送给Kafka:Broker可以简单的理解为Kafka集群中的每一台机器,其负责完成消息队列的主要功能(接收消息.消息的持久化存储.为Consumer提供消息.消息清理.....):Consumer从Broker获取消息并进行后续的操作.每个broker会有一个ID标识,该标识由人工在配置文件中配置. Kafka中的消息隶属于topic

ftp server源代码分析20140602

当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,android的sdk中为我们提供了ProGrard这个工具,可以对代码进行混淆(一般是用无意义的名字来重命名),以及去除没有使用到的代码,对程序进行优化和压缩,这样可以增加你想的难度.最近我做的项目,是我去配置的混淆配置,因此研究了一下,这里分享一下. 如何启用ProGuard ant项目和eclipse