Hadoop,hadoop是什么


一 简介
      RPC协议是连接各个组件的“大动脉”,了解不同组件之间的RPC协议有助于我们更深入地学习YARN框架。在YARN中,任何两个需相互通信的组件之间仅有一个RPC协议,而对于任何一个RPC协议,通信双方有一端是Client,另一端为Server,且Client总是主动连接Server的,因此,YARN实际上采用的是拉式(pull-based)通信模型。
二  协议类型              YARN主要由以下几个RPC协议组成,各组件的通信协议(箭头指向的组件是RPC Server,而箭头尾部的组件是RPC Client),如下图所示:       
                   
                                                             YARN 组件间主要通信协议
        JobClient(作业提交客户端)与RM之间的协议— ApplicationClientProtocol:JobClient通过该RPC协议提交应用程序、查询应用程序状态等。
        Admin(管理员)与RM之间的通信协议—ResourceManagerAdministrationProtocol:Admin通过该RPC协议更新系统配置文件,比如节点黑白名单、用户队列权限等。
AM与RM之间的协议—ApplicationMasterProtocol:AM通过该RPC协议向RM注册和撤销自己,并为各个任务申请资源。
       AM与NM之间的协议—ContainerManagementProtocol:AM通过该RPC要求NM启动或者停止Container,获取各个Container的使用状态等信息。
       NM与RM之间的协议—ResourceTracker:NM通过该RPC协议向RM注册,并定时发送心跳信息汇报当前节点的资源使用情况和Container运行情况。

四 Protocol Buffers              为了提高Hadoop的向后兼容性和不同版本之间的兼容性,YARN中的序列化框架采用了Google开源的Protocol Buffers。  除序列化/反序列化之外,Protocol Buffers也提供了RPC函数的定义方法,YARN中所有RPC函数的参数均采用Protocol Buffers定义,相比MRv1中基于Writable序列化的方法,Protocol Buffers的引入使得YARN在向后兼容性和性能方面向前迈进了一大步。                 下面是使用Protocol Buffers 定义 ContainerManager RPC协议的proto文件:                   service ContainerManagerService {                         rpc startContainer(StartContainerRequestProto) returns (StartContainerResponseProto);              rpc stopContainer(StopContainerRequestProto) returns (StopContainerResponseProto);                             rpc getContainerStatus(GetContainerStatusRequestProto) returns (GetContainerStatusResponseProto);         } 

     除此之外还有如下proto文件:
            applicationmaster_protocol.proto:定义了AM与RM之间的协议—ApplicationMasterProtocol。             applicationclient_protocol.proto:定义了JobClient(作业提交客户端)与RM之间的协议—ApplicationClientProtocol。         containermanagement_protocol.proto:定义了AM与NM之间的协议—Container-ManagementProtocol。         resourcemanager_administration_protocol.proto:定义了Admin(管理员)与RM之间的通信协议—ResourceManagerAdministrationProtocol。         yarn_protos.proto:定义了各个协议RPC的参数。         ResourceTracker.proto:定义了NM与RM之间的协议—ResourceTracker。
   除了以上几个协议,YARN还使用Protocol Buffers对MapReduce中的协议进行了重新定义:            MRClientProtocol.proto:定义了JobClient(作业提交客户端)与MRAppMaster之间的协议—MRClientProtocol。            mr_protos.proto:定义了MRClientProtocol协议的各个参数。
五 小结                   YARN各个协议间的通信方式采用了pull-based通信模型,而不是push-base模型。pull-based通信模型的优点是实现比较容易简单,缺点是通信延迟比较大,与之相反的是,push-base模型实现比较复杂,但是它可以减少组件间的通信延迟。






Hadoop是什?

Hadoop是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。Hadoop为应用程序透明的提供了一组稳定/可靠的接口和数据运动。在Hadoop中实现了Google的MapReduce算法,它能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。此外,Hadoop还提供一个分布式文件系统用来在各个计算节点上存储数据,并提供了对数据读写的高吞吐率。由于应用了map/reduce和分布式文件系统使得Hadoop框架具有高容错性,它会自动处理失败节点。已经在具有600个节点的集群测试过Hadoop框架。
 

Hadoop是什?

Hadoop是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。Hadoop为应用程序透明的提供了一组稳定/可靠的接口和数据运动。在Hadoop中实现了Google的MapReduce算法,它能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。此外,Hadoop还提供一个分布式文件系统用来在各个计算节点上存储数据,并提供了对数据读写的高吞吐率。由于应用了map/reduce和分布式文件系统使得Hadoop框架具有高容错性,它会自动处理失败节点。已经在具有600个节点的集群测试过Hadoop框架。
 

相关内容