目录
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);
}
}