hadoop中RPC通信文件上传原理

本文深入解析了在Java应用中如何利用Hadoop的HDFS API进行文件操作,包括创建目录、上传文件、下载数据和删除文件夹等基本功能。同时介绍了RPC(远程过程调用)的概念及其在Hadoop框架中的应用,解释了通过网络访问文件系统的行为,以及数据是如何在客户端与DataNode之间直接连接传输的,而不是通过NameNode转接。文章强调了HDFS API的便捷性,使得用户无需关注底层数据分布细节,即可实现高效的数据管理和访问。
//APP2中调用的代码
public static final String HDFS_PATH = "hdfs://hadoop:9000/hello";
	public static final String DIR_PATH = "/d1000";
	public static final String FILE_PATH = "/d1000/f10000";

	public static void main(String[] args) throws Exception {
		FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH),
				new Configuration());
		// //创建文件
		// fileSystem.mkdirs(new Path(DIR_PATH));
		// //上传文件
		// FSDataOutputStream out = fileSystem.create(new Path(FILE_PATH));
		// FileInputStream in = new FileInputStream("c:/hello.txt");
		// IOUtils.copyBytes(in, out, 1024,true);
		// //下载数据
		// FSDataInputStream in1 = fileSystem.open(new Path(FILE_PATH));
		// IOUtils.copyBytes(in1, System.out, 1024,true);

		// 删除文件夹
		deleteFile(fileSystem);
	}

	private static void deleteFile(FileSystem fileSystem) throws IOException {
		fileSystem.delete(new Path(FILE_PATH), true);
		
	}



注: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直接连接!!




转载于:https://my.oschina.net/yangzhiyuan/blog/222243

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值