Hadoop_12_Hadoop 中的RPC框架演示
Posted QueryMarsBo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop_12_Hadoop 中的RPC框架演示相关的知识,希望对你有一定的参考价值。
Hadoop中自己提供了一个RPC的框架。集群中各节点的通讯都使用了那个框架
1.服务端
1.1.业务接口:ClientNamenodeProtocol
package cn.bigdata.hdfs.hadoopRpc.protocol; //定义业务接口方法 public interface ClientNamenodeProtocol { // 协议版本号 public static final long versionID = 1L; public String getMetaData(String path); }
1.2.业务接口实现类:MyNameNode
package cn.bigdata.hdfs.hadoopRpc.service; import cn.bigdata.hdfs.hadoopRpc.protocol.ClientNamenodeProtocol; public class MyNameNode implements ClientNamenodeProtocol{ @Override public String getMetaData(String path) { // 模拟NameNode的业务方法,获取元数据 return path+": 3 - {BLK_1,BLK_2} ..."; } }
1.3.服务端类:将业务实现类发布为一个服务
package cn.bigdata.hdfs.hadoopRpc.service; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.RPC.Builder; import org.apache.hadoop.ipc.RPC.Server; import cn.bigdata.hdfs.hadoopRpc.protocol.ClientNamenodeProtocol; //使用下面的代码可以把业务类发布为一个服务 public class PublishServiceUtil { public static void main(String[] args) throws IOException { Builder builder = new RPC.Builder(new Configuration()); builder.setBindAddress("localhost") .setPort(8888) .setProtocol(ClientNamenodeProtocol.class) .setInstance(new MyNameNode()); Server build = builder.build(); build.start(); } }
2.客户端
package cn.bigdata.hdfs.hadoopRpc.client; import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import cn.bigdata.hdfs.hadoopRpc.protocol.ClientNamenodeProtocol; public class MyHdfsClient { public static void main(String[] args) throws Exception { //获取代理对象 ClientNamenodeProtocol nameNode = RPC.getProxy(ClientNamenodeProtocol.class, 1L, // 这里指定的协议版本号要跟接口中的versionID的值保持一致 new InetSocketAddress("localhost",8888), new Configuration()); String metaData = nameNode.getMetaData("/angelababy"); System.out.println(metaData); } }
我们也可以在自己的项目中使用Hadoop的RPC框架,把Hadoop的Common包导入进来就可以了
以上是关于Hadoop_12_Hadoop 中的RPC框架演示的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop_21_编写MapReduce程序实现Join功能
大数据技术之_03_Hadoop学习_01_入门_大数据概论+从Hadoop框架讨论大数据生态+Hadoop运行环境搭建(开发重点)