Hadoop学习<四>HDFS的RPC通信理总结

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-09-12 01:22

这里先写下自己学习RPC的笔记总结,下面将详细介绍学习过程:

RPC(remote procedure call)

不同java进程间的对象方法的调用。
一方称作服务端(server),一方称作客户端(client)。
server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端。

RPC是hadoop框架运行的基础。
通过rpc小例子获得的认识?
1. 服务端提供的对象必须是一个接口,接口extends VersioinedProtocal

2. 客户端能够的对象中的方法必须位于对象的接口中。

查看一个基类或者接口的派生类或实现类---鼠标指向类名,Ctrl + T ;

查看函数的调用关系(找到所有调用该方法的函数)--Ctrl + Alt + H (ubuntu系统快捷键占用,可以类名右键找open call Hierarchy,结果在控制台输出) ;

快速查找类对象的相关信息 -- Ctrl + O(查找类名的所有成员变量和方法),F3查看类名的定义。

RPC 是远程过程调用(Remote Procedure Call),即远程调用其他虚拟机中运行的 java object。RPC 是一种客户端/服务器模式,那么在使用时包括服务端代码和客户端代码,还有我们调用的远程过程对象。

HDFS 的运行就是建立在此基础之上的。这里通过分析实现一个简单的 RPC 程序来分析HDFS 的运行机理。

1.首先定义远程调用类的接口,接口继承的 VersionedProtocal,是hadoop 的 RPC 的接口,所有的 RPC 通信必须实现这个一接口,用于保证客户端和服务端的端口一致。服务端被调用的类必须继承这个接口 VersionedProtocal。

package com.RPC;import org.apache.hadoop.ipc.VersionedProtocol;public interface MyBizable extends VersionedProtocol{    //定义抽象类方法hellopublic abstract String hello(String name);}
2.然后编写远程调用类,实现这个接口MyBizable,这里面有两个方法被实现,一个就是 hello方法,另一个是 getProtocalVersion 方法。

package com.RPC;import java.io.IOException;//实现接口MyBizable,重写hello和getProtocolVersion方法public class MyBiz implements MyBizable{public static long BIZ_VERSION = 123456L;@Overridepublic String hello(String name) {System.out.println("我是ByBiz,我被调用了。");return "hello" + name;}@Overridepublic long getProtocolVersion(String protocol, long clientVersion)throws IOException {//返回BIZ_VERSION,保证服务器和客户端请求版本一致return BIZ_VERSION;}}
3.有了远程调用对象,我们就可以编写服务器端代码,详细在代码中有介绍。

package com.RPC;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import org.apache.hadoop.ipc.RPC.Server;public class MyServer {//定义final类型服务器地址和端口public static final String SERVER_ADDRESS = "localhost";public static final int SERVER_PORT = 1234;/** * RPC是远程过程调用(Remote Procedure Call) */public static void main(String[] args) throws Exception {Configuration conf = new Configuration();//重点RPC.getServer方法,该方法有四个参数,第一个参数是被调用的 java对象,//第二个参数是服务器的地址,第三个参数是服务器的端口。获得服务器对象后,//启动服务器。这样,服务器就在指定端口监听客户端的请求。final Server server = RPC.getServer(new MyBiz(), SERVER_ADDRESS, SERVER_PORT, conf);server.start();}} 
  • 【电脑店资讯】端到端应用性能管理(End-to-end Application Performance Management,简称APM)指的是 一种IT服务方法,包括识别、区分优先次序以及解决影响业务应用的性能和可用性问题。

    APM 正在变得越来越重要,因为终端用户依赖日益复杂的应用来实现关键业务交易。

    应用性能低下将降低生产力,影响客户满意度,并有损IT声誉,进而导致成本攀升、收入减少、IT变得效率低下——这些问题通常比可用性问题更加严重。

    传统的监测解决方案通常无法识别和解决应用性能问题的根源。

    事实上,最近在终端用户体验监测、依赖性映射和相关性方面的最新进展,已让IT运行经理能够更有效地监测和解决不满足服务水平的问题。

    这些技术帮助提高对整个网络、服务器(分布式和大型主机)和其它应用层的可视性,借助技术分析因果关系,从业务的角度确定哪些响应该优先进行。

    实际上,即使基础架构测量指标仍然提供主要的故障和容量数据,强调重点也已从基础架构测量指标变成了业务测量指标。

    我们将撰写一系列应用性能管理最佳实施的文章,从问题和事件管理的视角剖析 APM。

    问题和事件管理是 APM 的两个核心 ITIL(信息技术基础架构库,简称 ITIL)流程。

    事件管理(Incident Management)是当IT 出现问题的时候解决它们,作为对服务质量降低的一种响应。

    事件管理的目标是恢复服务,对业务造成尽可能小的影响。

    问题管理(Problem Management)强调识别和消除问题的根源。

    它通过改变服务和 APM 解决方案,增加了服务质量改进的概念。

    本文将首先概括地讲述 APM 设计、实施和运营的基本要素,将端到端 APM作为一个流程来进行探讨。

    APM 设计

    APM 解决方案通常是作为草根、基础架构监测实践开始的,由IT 机构的某个独立业务部门实施,缺乏一致的目标。

    例如,网络团队可能要部署一个开源网络工具,以获得基础网络的可视性,而web 服务器团队则可能会从一个主流的服务器厂商那里部署一个服务器监测工具。

    然而,自上而下地设计一个 APM 方案要切合实际得多。

    使用这种方法,您先设想结果,然后将它应用于您选择的解决方案组件。

    您如何着手开始呢?在 ITIL 的世界里,最终支持服务级别协议(service level agreement,简称 SLA)的运行级别目标(operational level target,简称OLT)是一个好的起点;这些将已经解决了预期的业务产出和成本限制,并且应该实现一个高水平的设计。#p#分页标题#e#

    不与 ITIL 相关?您仍然能够采用适合您需求的部分最佳实施。

    从与业务部门讨论、理解业务目标开始,确定 APM 预算,使用对应用交付基础架构的理解和它的性能敏感性,并草拟一个方案。

    您很可能想把这个作为一个练习,测试什么可能会出错,尽可能广泛地扩展范围;成本和其它的实际考虑将很快专注于这一设计。

    您当然不会是第一个采取这种方法的人,您可充分利用与供应商的关系、用户群和咨询合作伙伴,来理解类似尝试可能会有的成功和失败。

    公司高层提供的资源支持和参与对于任何 APM 项目的成功都是至关重要的,因为这将要求来自多个 IT 部门的积极支持。

    更重要的是,这些部门对于项目的业务价值要有一致的理解,因为他们每个都可能会面对新的企业可视性(他们在高管仪表板上的测试指标),对某些东西失去控制(应对问题的新流程),或者放弃一个最受欢迎的工具。

    开始一个小型的 APM 项目,选择一个战略性的应用,为业务所有者和 IT 机构阐明价值,大多数机构将会从中受益。

    这样一个项目的成功,将能够被一个更全面、收益更明显的解决方案利用。

    然而,我们大多数人并不是从临时拼凑开始设计 APM 解决方案;我们已经拥有许多一直服务于我们的目的的基础架构工具。

    那么,是什么将一系列“结合平台的”(platform-aligned)工具转变成APM 解决方案的呢?尽管对于这个问题可能会有许多技术回答,但是,这里有两个最重要的主题:

    业务一致性(business alignment)。

    全新的主要设计目标仍然应该从注重业务产出开始。

    对业务来说,重要的将是终端用户的体验——这个可通过性能和可用性进行测量。

    相关性和故障隔离(correlation and fault isolation)。

    对根源的可视性,是将基础架构提升至 APM、真正理解基础架构测量指标如何影响业务生产力的关键。

    很容易明白诸如终端用户体验(end-user experience,简称 EUE)和基础架构测量指标等业务相关的测量指标的相关性为何如此重要。

    将终端用户体验到的性能问题与基础架构测量指标结合起来,隔离主要的根源,这能让 IT 小组快速准确地专注于问题的起源,同时避免对不相关的组件采取行动。

    通过适当的阈值调整,这为持续业务改进奠定了基础。

    同样地,通过 EUE 的相关性,以及受影响的用户数量和所在位置、每天交易的次数和业务价值,可以找到问题对业务的影响。

    #p#分页标题#e#

    通过一系列基础架构工具构建 APM 解决方案,会带来集成和相关性方面的挑战;您需要对主要的单一供应商(single-vendor)解决方案进行评估权衡,因为供应商和定制化的多供应商(multi-vendor)解决方案构建和交付了集成。

    对于更小一些的部署,定制化的解决方案可能会更省钱,但是对于较大的实施,可扩展性和维护方面的考虑将会迅速改变价格。

    在设计流程里,保持对终端用户交易响应时间的专注很重要。

    这有两个原因。

    第一,性能分析和问题解决是为更好的了解以业务为导向的环境并提出重要意见。

    尽管在传统上,基础架构测量指标是满足事件和问题管理的数据,但是,这些基础测量指标和它们的阈值驱动警报在没有业务相关性的情况下能够变得几乎毫无意义。

    例如,对于一个 2 M 广域网连接来说,75% 的利用率究竟是好还是坏呢?一个被报告的交易性能问题是由 SAN 里长度为 8 的测量磁盘阵列引起的吗?当应用的性能降级时,这些组件级的测量还将总会被突出?其次,从对业务影响的角度来说,IT 能够优先对事件作出响应是有价值的,它代表了向业务一致性迈出的重要一步。

    同样重要的是,与技术和 IT 资源的成本相关的设计限制。

    许多 APM 项目不成功,是因为缺少关注和支持,因为无法维持这一解决方案、无法适应基础架构的变化并无法定义基于真实世界反馈的流程。

    APM 实施——将解决方案转变为运行

    基线对于任何 APM 实施来说可能是最重要的技术成功因素之一。

    基线确定了服务的正常运行,为设定警报起点提供了参考,并提供了有价值的趋势和容量规划信息,因为它们是真实的数据。

    通常,APM 解决方案会动态地为一些被观察到的测量指标构建基线;经过数天或数星期,这些基线趋于一个正常的定义。

    对于其它的测量指标,您很可能想要基于一段时间内的观察手动设定基线。

    将这些基线作为参考点,然后您就能够确定性能阈值;当测量违反了特定的行为准则时,警报就会产生。

    至少在最初的时候,这些阈值很可能以一个超出基线的比例被设定。

    例如,当页面性能从基线降低 25% 的时候,就会引发一个警报。

    这些引发也很可能基于一个模板或一套规则被设定,能够包括更复杂的逻辑;再例如,当磁盘写队列在 60 秒内超出 2 至少 5 次的时候。

    重要的、需要考虑的是哪些指标被监测,使用什么阈值;大多数的 APM 工具提供多种多样的测量选项,深入的显示出能够被分散甚至误导的水平值。#p#分页标题#e#

    缺省值或特定平台的模板可能通过 APM 解决方案厂商、软件/硬件厂商、系统集成商或用户社区获得。

    然而,无论是什么资源,确定这些阈值是否适用于您的特定环境都是非常必要的。

    尽管这一决定部分地能够在实施期间作出,但是大多数阈值的改进都是在运行期间实现的。

    最后,我们应该关注最终由 EUE 测量驱动的相关性能力。

    对于有效的相关性来说,最重要的是理解依赖性或交易在系统里经过的路径。

    它也建议要注意测量时间。

    当然,不是所有的指标都能够被连续评估,因此有些是在一段时间内进行取样。

    这是一种检测普遍性问题的有效方法。

    然而,间歇的问题本质上可能会是短暂的,以至于它们在取样期间被隐藏起来。

    尽管这些通常只会带来更小的业务影响(因为它们以更小的频率影响更少的用户),但是它们本质上更难解决。

    交易“跟随”(following)——通常通过贴标签——可能对特定的环境是合适的,然而,暂时缩短的取样间隔时间为解决间歇问题提供一种更通用的方法。

    一个实现强大 APM 配置的明智方法是,在前生产测试实验室实施关键 APM 监测组件,这样您就能够观察到一系列系统负载上的正常行为,这对于设置基线是非常有用的。

    通常,您将会找到性能的瓶颈。

    知道哪些测量指标表明了该瓶颈的根源和它发生的阈值,这是一个理解依赖性并积极配置生产监测阈值的理想办法,而且其带来的影响也很小。

    APM 运行——持续的服务改进

    成功的运行需要在稳定性和持续的服务改进(CSI)之间保持平衡。

    对许多企业来说,仅仅只有在故障发生并严重威胁到业务的时候,CSI 才会成为一个项目。

    一旦该问题得到解决,这一概念又会立即被抛到脑后,直到下一个重大故障发生的时候才会被再次记起。

    一个更周全的 CSI 方法将在事件和问题管理方面带来明显的改善,帮助 IT 机构更好地解决和预防问题的发生。

    正如之前提及的,APM 成功的关键——既确保业务一致性,又能解决问题——在于相关性。

    一个强大的 CSI 流程强调去改进被监测到的并找到更合适的阈值。

    考虑一个 APM 的实施,终端用户体验和基础架构指标要能被监测。

    当事件发生的时候——无论这个事件是由 EUE 警报引起的,还是因为一个实际的终端用户——IT 人员都要将这一事件和它的根源关联起来。

    确认并修正敏感性或瓶颈——至少暂时要做到这点。#p#分页标题#e#

    如果瓶颈指标数据没有被监测到,那么,无论如何也要开始对 APM进行明显改进来监测它。

    如果瓶颈指标数据被监测到了,那也要着手改进去调整警报阈值,因此下一次警报能够在用户抱怨之前就识别到问题。

    警报可能是被动的——超过某一阈值的用户正在经历性能问题——也可能是主动的——超出阈值给出了一个尽早的警告:如果用户继续这么做的话,他将会出现性能问题。

    最终,持续的服务改进应该不止是通过改善 APM 解决方案的质量来改进业务服务的水平。

    它可能意味着,通过拨出额外的资源或者对资源的使用给予优先考虑来控制资源,以致瓶颈将不再发生。

    分配符合业务策略的网络质量,增加一个 SAN,或卸载一个专门服务器上的流程,这些都是例子。

    作为流程的 APM

    与事件和问题管理类似,APM 本身能够被作为一种流程来考虑,因此也适合持续改进。

    在 六西格玛 DMAIC (定义、测量、分析、改进和控制)模式下,既可考虑用于实施 APM 解决方案,又能够考虑作为一种解决问题的一致方法。

    定义(Define):首先而且最重要的是,您必须界定问题。

    对于 APM 解决方案的设计来说,这一定义始于业务需求,而且是经常能够被扩展。

    然而,对于响应问题来说,这一步则反其道而行之,将问题的定义严格限定于它最简单的核心因素。

    测量(Measure):这一步专注于收集相关的诊断信息,忽略不相关的或分散的数据。

    与 EUE 测量的相关性,对于实现确定的故障域隔离和最终根源分析的主要目标来说至关重要。

    可重现的问题允许更好的相关性。

    分析(Analyze):该流程的核心步骤包括解释数据。

    通常,APM 解决问题流程的目标是对一个问题进行“选疗”(triage)——识别故障域并对该结论提供支持性证据。

    这一步实现了持续的服务改进;相关的故障能够被用于改进阈值设置,并作为修正系统设计的输入数据。

    改进(Improve):领域专家——与更大的团队合作——确定改进选项来解决事件或问题。

    这一流程应该分开。

    当然,主要的业务目标是解决问题以重新恢复服务,但是从持续服务改进的角度来看,改进 APM 解决方案也很重要。

    APM 工程师应该评估正确的指标是不是正在被监测到,这些指标是不是相关、能够提供正确的故障域信息。

    #p#分页标题#e#

    控制(Control):最后一步是最容易被忽视掉的;可是没有它,您将会发现,有时候对于同一个问题,您一直在重复着前面的4个步骤。

    从业务角度来说,这是系统结构发生变化的地方——增加资源或对项目逻辑作出改变以避免对限制的敏感,这些限制导致了问题的产生——应该被考虑到。

    从 APM 的角度来说,考虑调整警报阈值和规则,从而提供一个对将来问题的提前警报,这样就能在业务受到影响之前采取相应的行动。

    总结

    随着当今的业务应用日益变得分布和独立,Gartner 已经为 APM 确定了 4个“维度”。

    我们已经在不同程度上讨论了这些维度,在此总结如下:

    体验(experience):捕捉应用或服务的终端用户体验

    依赖性(dependency):发现并模式化应用的拓扑结果

    深潜(deep dive):捕捉与依赖的组件相关的丰富统计数据

    剖析(profiling):跟踪整个基础架构内的交易流

    成功的 APM 解决方案将在应用环境中能够有效地解决这些维度的问题。

    在随后的最佳实施文章中,我们将探讨什么办法能够确保您交付的应用服务可被有效管理。

    每个主题——数据中心、网络、J2EE 和.NET——将作为一个单独的方法、综合的APM解决方案的一部分被一一谈及,并专注于特别的终端用户体验。

    作者:

    Gary Kaiser,Compuware APM 资深专家

    (责任编辑:admin)

  • 相关推荐:

  • Compuware的应用性能管理观
  • shell脚本学习指南
  • IPv4&IPv6互联网的昨
  • 网页开发工具有哪些?
  • 服务器租用找景安
  • 景安助河南企业远离网络
  • 戴尔全新解决方案将机器
  • 思科加入人工智能阵营发
  • 如何学习电脑知识?
  • 经典媒体播放器宣布回归
  • 网站内容禁止违规转载,转载授权联系中国云计算网