0007.HDFS上传与下载的原理


04-09-HDFS数据上传的过程

HDFS数据上传的过程.png


04-10-HDFS数据下载的过程

HDFS的联盟与HA简介.png

HDFS数据上传的过程.png


04-11-HDFS的安全模式


04-12-HDFS的快照


04-13-HDFS的配额


04-14-HDFS的回收站


04-15-什么是RPC

使用RPC完成远程调用.png


04-16-Java的动态代理对象

动态代理对象的基本原理.png

	import org.apache.hadoop.ipc.VersionedProtocol;

	public interface MyInterface extends VersionedProtocol{

		//定义一个版本号
		//使用版本号来进行签名
		public static long versionID = 1;
		
		//定义我们业务方法
		public String sayHello(String name);
	}
	import org.apache.hadoop.ipc.ProtocolSignature;

	public class MyInterfaceImpl implements MyInterface {

		@Override
		public String sayHello(String name) {
			System.out.println("*********调用到了Server 端**********");
			return "Hello "+name;
		}

		@Override
		public ProtocolSignature getProtocolSignature(String arg0, long arg1, int arg2) throws IOException {
			//通过版本号定义签名信息
			return new ProtocolSignature(MyInterface.versionID, null);
		}

		@Override
		public long getProtocolVersion(String arg0, long arg1) throws IOException {
			//返回版本号
			return MyInterface.versionID;
		}
	}

	import java.io.IOException;

	import org.apache.hadoop.HadoopIllegalArgumentException;
	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.ipc.RPC;
	import org.apache.hadoop.ipc.RPC.Server;

	public class MyRPCServer {

		public static void main(String[] args) throws Exception {
			// 利用Hadoop RPC的框架实现RPC Server
			
			//使用RPC Builder来构建 
			RPC.Builder builder = new RPC.Builder(new Configuration());
			
			//定义Server的参数
			builder.setBindAddress("localhost");
			builder.setPort(7788);
			
			//部署我们的程序
			builder.setProtocol(MyInterface.class); //部署的接口
			builder.setInstance(new MyInterfaceImpl()); //指定接口的实现类
			
			// 创建RPC Server
			Server server = builder.build();
			
			//启动Server
			server.start();
		}

	}


	import java.io.IOException;
	import java.net.InetSocketAddress;

	import org.apache.hadoop.conf.Configuration;
	import org.apache.hadoop.ipc.RPC;

	import day0905.rpc.server.MyInterface;

	public class MyRPCClient {

		public static void main(String[] args) throws Exception {
			// 使用Hadoop RPC的框架调用Server 端的程序
			/*
			RPC.getProxy(protocol,    调用的接口
						 clientVersion, 版本号
						 addr,   RPC Server的地址
						 conf)
			*/

			//得到的是Server端部署对象的代理对象
			MyInterface proxy = RPC.getProxy(MyInterface.class, 
											 MyInterface.versionID, 
											 new InetSocketAddress("localhost", 7788), 
											 new Configuration());
			
			//使用这个代理对象调用Server的程序
			String result = proxy.sayHello("Tom");
			System.out.println(result);
		}
	}

原文地址:https://www.cnblogs.com/RoyalGuardsTomCat/p/13834289.html