4.5 小结
Hadoop RPC是Hadoop多个子系统公用的网络通信模块。其性能和可扩展性直接影响其上层系统的性能和可扩展性,因此扮演着极其重要的角色。
Hadoop RPC分为两层:上层是直接供外面使用的公共RPC接口;下层是一个客户机/服务器模型,该模型在实现过程中用到了Java自带的多个工具包,包括java.lang.reflect(反射机制和动态代理相关类)、java.net(网络编程库)和java.nio(NIO)等。
Hadoop RPC主要由三个大类组成,分别是RPC、Client和Server,分别对应对外编程接口、客户端实现和服务器端实现。其中,Server具有高性能和良好的可扩展性等特点,在具体实现时采用了线程池、事件驱动和Reactor设计模式等机制。
Hadoop MapReduce基于RPC框架实现了6个通信协议,分别是JobSubmissionsProtocol, RefreshUserMappingsProtocol, RefreshAuthorizationPolicyProtocol, AdminOperationsProtocol, InterTrackerProtocol和TaskUmbilicalProtocol。这些协议像是系统的“骨架”,支撑起整个MapReduce系统。