大数据学习笔记:Hadoop中的IPC与RPC

来源:互联网 发布:百度云传智播客java 编辑:程序博客网 时间:2024/05/18 15:51

还记得入口程序中等待job完成的那一行代码吗:

job.waitForCompletion(true);  
在Job类中找到其源码,发现它调用了submit()方法:

if (state == JobState.DEFINE) {      submit();}
再往上追溯,submit()返回了一个调用submitJobInternal()方法的JobSubmitter类型变量:

return submitter.submitJobInternal(Job.this, cluster);
进入JobSubmitter类,找到submitJobInternal()方法,正真提交作业在代码片的末尾:

// Now, actually submit the job (using the submit name)printTokens(jobId, job.getCredentials());status = submitClient.submitJob(jobId, submitJobDir.toString(), job.getCredentials());
而submitJob()方法属于ClientProtocol接口:


其具体实现类为:



实际上Hadoop的通信模型大致如下:最底层为socket套接字 ,由JDK的NIO功能将其转为异步方式的通信,客户端与服务器以字节流的形式传输数据协议采用的是谷歌的ProtobufRpcEngine。

IPC建立在RPC之上,RPC会将IPC协议的header与massage进行打包封装,然后发送给远程节点。



原创粉丝点击