Hadoop 2.7.1-Yarn 源码分析(二) Client 连接 ResourceManager
从 YARNRunner
被调度开始:
传入了一个 ResourceMgrDelegate
,这个类负责与 ResourceManager
沟通:
首先看 createYarnClient
方法:
返回的是一个 YarnClientImpl
实例
接下来看 init() 方法:
我们可以看到 ResourceMgrDelegate
是 AbstractService
的实现类:
这个 serviceInit(config)
最终在 ResourceMgrDelegate
中:
这里的 client.init(conf)
相当于 YarnClientImpl.init(conf)
, 至于为什么执行的是 YarnClientImpl.serviceInit(conf)
,这个你自己捋一捋,如下代码,主要是一些代码的初始化:
最后执行父类的 serviceInit
,这里的父类就是 AbstractService
:
接下来是 ResourceMgrDelegate#start()
:
这里的 client.start()
相当于 YarnClientImpl.start()
:
其中,ApplicationClientProtocol
:
- 客户端通过该协议向
ResourceManager
提交应用程序、控制应用程序(如杀死job
)以及查询应用程序的运行状态等。在该RPC
协议中应用程序客户端充当RPC client
角色,ResourceManager
充当RPC server
角色。