首页 > 代码库 > Hadoop学习2

Hadoop学习2

编写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的生成过程!

技术分享

加入断点后,逐步进行查看!

技术分享

Hadoop学习2