4.4 MapReduce通信协议分析
本书重点介绍MapReduce,因此对Hadoop RPC上层系统的分析也只限于MapReduce分布式计算框架。在Hadoop MapReduce中,不同组件之间的通信协议均是基于RPC的。它们就像系统的“骨架”,支撑起整个MapReduce系统。本节我们将详细介绍Hadoop MapReduce中所有基于RPC的通信协议。
4.4.1 MapReduce通信协议概述
在Hadoop 1.0.0版本中,MapReduce框架中共有6个主要的通信协议,具体如图4-16所示。其中,直接面向Client(用户)的通信协议共有4个。
❑JobSubmissionProtocol[1]:Client(一般为普通用户)与JobTracker之间的通信协议。用户通过该协议提交作业,查看作业运行情况等。
❑RefreshUserMappingsProtocol:Client(一般为管理员)通过该协议更新用户-用户组映射关系。
❑RefreshAuthorizationPolicyProtocol:Client(一般为管理员)通过该协议更新MapReduce服务级别访问控制列表。
❑AdminOperationsProtocol:Client(一般为管理员)通过该协议更新队列(存在于JobTracker或者Scheduler中)访问控制列表和节点列表。
在Hadoop线上环境中,考虑到安全因素,通常将JobSubmissionProtocol使用权限授予普通用户,而其他三个通信协议的权限授予管理员。
图 4-16 Hadoop MapReduce通信协议概览
另外,两个通信协议位于MapReduce框架内部,如下。
❑InterTrackerProtocol:TaskTracker与JobTracker之间的通信协议。TaskTracker通过相关接口汇报本节点的资源使用情况和任务运行状态等信息,并执行JobTracker发送的命令。
❑TaskUmbilicalProtocol:Task与TaskTracker之间的通信协议。每个Task实际上是其同节点TaskTracker的子进程,它们通过该协议汇报Task运行状态、运行进度等信息。
在Hadoop中,所有使用Hadoop RPC的协议基类均为VersionedProtocol。该类主要用于描述协议版本号,以防止不同版本号的客户端与服务器端之间通信。在Hadoop MapReduce中,这六个通信协议与JobTracker, TaskTracker的类关系如图4-17所示。
图 4-17 Hadoop MapReduce通信协议类关系图
[1]Hadoop 0. 21.0以及之后的版本已将该协议名称改成ClientProtocol。