Hadoop的RPC框架使用

来源:互联网 发布:成都软件制作 编辑:程序博客网 时间:2024/04/26 23:58

1.创建一个Maven工程,加入hadoop-common依赖。

2.编写Protocol接口类

public interface ClientNamenodeProtocol {    public static final long versionID=1L; //会读取这个版本号, 但可以和客户端的不一样, 没有校验    public String getMetaData(String path);}

3.编写Protocol接口实现类

public class MyNameNode implements ClientNamenodeProtocol{    //模拟namenode的业务方法之一:查询元数据    @Override    public String getMetaData(String path){        return path+": 3 - {BLK_1,BLK_2} ....";    }}

4.编写服务端代码

public class PublishServiceUtil {    public static void main(String[] args) throws Exception {        Builder builder = new RPC.Builder(new Configuration());        builder.setBindAddress("localhost")        .setPort(8888)        .setProtocol(ClientNamenodeProtocol.class)        .setInstance(new MyNameNode());        Server server = builder.build();        server.start();    }}

5.编写客户端

public class MyHdfsClient {    public static void main(String[] args) throws Exception {        ClientNamenodeProtocol namenode = RPC.getProxy(ClientNamenodeProtocol.class, 1L,                new InetSocketAddress("localhost", 8888), new Configuration());        String metaData = namenode.getMetaData("/angela.mygirl");        System.out.println(metaData);    }}
原创粉丝点击