标签:
编写Java程序实现以下函数:
1.向HDFS中上传文件
2.从HDFS下载文件到本地
3.显示HDFS文件目录
4.移动文件
5.新建文件夹
6.移除文件夹
编写Java程序实现客户端和服务器端的socket信息交互以及函数调用
实现机制RPC
主要步骤如下:
1.将本地socket以及接口类封装为一个proxy,生成动态本地代理实例。
2.该实例调用相对应的函数并且传入相应的参数。
3.本地socket得到动态代理调用的函数以及传入的参数。
4.使用文件传输协议实现本地socket与远程服务器的socket进行连接
5.服务器端socket得到调用的函数以及传入的参数,动态生成服务器端的代理实例。
6.该服务器端实例调用服务器端的函数,并且传入得到的参数。
7.函数调用结果返回给服务器端socket。
8.服务器端socket将返回结果传递给本地socket。
9.本地socket将返回结果传递给本地动态代理proxy。
实现了controller和implement的分离
利用RPC机制可以实现信息的有效传递。
DataNode需要定时向NameNode传递自身保存的blocks信息,以便NameNode进行blocks的维护,保证数据的可靠性。
因此Hadoop实现了自身的消息传递机制也就是上面的RPC。
需要注意的地方:
jar包的导入以及版本的控制。
本地以及服务器端的函数都要实现一样的接口类,但是为了防止调用时版本的不对应,所以在Build实例的时候需要将版本号也就是versionID声明清楚,这样调用的时候可以通过版本号的不同将函数进行区别开。
远程调用的底层实现机制:
实现机制RPC实现机制RPC:
查看FileSystem fs = FileSystem.get(new Configuration());
一步一步查看fs的生成过程!
加入断点后,逐步进行查看!
标签:
原文地址:http://www.cnblogs.com/zpfbuaa/p/5931849.html