问题导读: 1.在YARN中,任何两个组件通信,通过什么协议? 2.JobClient(作业提交客户端)与RM之间的协议是什么? 3.Admin通过该RPC协议更新系统配置文件来完成什么内容? 4.AM通过该RPC协议来完成什么事情? 5.那个组件通过RPC协议向RM注册,并定时发送心跳信息汇报当前节点的资源使用情况和Container运行情况? RPC协议是连接各个组件的“大动脉”,了解不同组件之间的RPC协议有助于我们更深入地学习YARN框架。 在YARN中,任何两个需相互通信的组件之间仅有一个RPC协议,而对于任何一个RPC协议,通信双方有一端是Client,另一端为Server,且Client总是主动连接Server的,因此,YARN实际上采用的是拉式(pull-based)通信模型。如图2-10所示,箭头指向的组件是RPC Server,而箭头尾部的组件是RPC Client,
YARN主要由以下几个RPC协议组成:
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运行情况。
为了提高Hadoop的向后兼容性和不同版本之间的兼容性,YARN中的序列化框架采用了Google开源的Protocol Buffers。Protocol Buffers的引入使得YARN具有协议向后兼容性,相关内容将在第3章介绍。
|