作者:萌星 | 来源:互联网 | 2023-09-25 14:23
本篇文章给大家分享的是有关怎么进行原hadoop中RPC通信文件上传原理的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
01 //APP2中调用的代码
02 public static final String HDFS_PATH = "hdfs://hadoop:9000/hello";
03 public static final String DIR_PATH = "/d1000";
04 public static final String FILE_PATH = "/d1000/f10000";
05
06 public static void main(String[] args) throws Exception {
07 FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH),
08 new Configuration());
09 // //创建文件
10 // fileSystem.mkdirs(new Path(DIR_PATH));
11 // //上传文件
12 // FSDataOutputStream out = fileSystem.create(new Path(FILE_PATH));
13 // FileInputStream in = new FileInputStream("c:/hello.txt");
14 // IOUtils.copyBytes(in, out, 1024,true);
15 // //下载数据
16 // FSDataInputStream in1 = fileSystem.open(new Path(FILE_PATH));
17 // IOUtils.copyBytes(in1, System.out, 1024,true);
18
19 // 删除文件夹
20 deleteFile(fileSystem);
21 }
22
23 private static void deleteFile(FileSystem fileSystem) throws IOException {
24 fileSystem.delete(new Path(FILE_PATH), true);
25
26 }
注:RPC(remote procedure call)
不同java进程间的对象方法的调用。一方称作服务端(server),一方称作客户端(client)。
server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端。
RPC是hadoop框架运行的基础。
rpc通信
上图为RPC通信调用的一系列方法最终达到把文件写入到linux文件系统中的过程,但是由于hadoop中hdfs分布式文件系统的API封装的特别 好,让调用者感觉不到这个复杂的过程,对用户或者程序而言实际是通过网络来访问文件的动作,但对用户看来就像访问本地磁盘一样,充分体现了通透性....
综上:对于HDFS的操作在应用中只需掌握FileSystem,而不需要关注数据是存放在DataNode的哪个块中(因为这个工作时交给NameNode的)....
注意:虽然客户端上传数据的时候是通过DataStreamer向NameNode申请block块和blockid,但是数据的传输行为并不是通过NameNode转的,而是与DataNode直接连接!!
以上就是怎么进行原hadoop中RPC通信文件上传原理的分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程笔记行业资讯频道。