Hadoop里的rpc框架可以单独拿出来使用。jar包全在hadoop-common工程里。

导入hadoop-common工程里(hadoop-2.7.3为例):

hadoop-common-2.7.3.jar

\hadoop-2.7.3\share\hadoop\common\lib下的全部jar包

实例

rpc.client   客户端

rpc.protocol  (数据传递的)协议层

rpc.service 服务端

package rpc.client;import java.net.InetSocketAddress;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;import rpc.protocol.IClientNamenodeProtocol;public class MyHdfsClient {public static void main(String[] args) throws Exception {IClientNamenodeProtocol proxy = RPC.getProxy(IClientNamenodeProtocol.class, 1L, new InetSocketAddress("localhost", 8888), new Configuration());String metaData = proxy.getMetaData("/hellohellohelloxxxxxxx.xxx");System.out.println("获取到结果:"+metaData);}}
package rpc.protocol;/*** 通信接口* * @author zengmiaogen**/
public interface IClientNamenodeProtocol {//hadoop-rpc框架要求有的变量versionID,没有报错public final long versionID=1L;public String getMetaData(String path);
}
package rpc.service;import rpc.protocol.IClientNamenodeProtocol;public class MyNameNode implements IClientNamenodeProtocol{/*** 模拟NameNode的业务方法之一,查询元数据* @param path* @return*/@Overridepublic String getMetaData(String path){//假的,模拟的System.out.println("传入的路径:"+path);return path+": 副本数量3-{BLK-1,BLK-2}-NameNode.......";}}
package rpc.service;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 rpc.protocol.IClientNamenodeProtocol;/*** 启动服务器* @author zengmiaogen**/
public class PublishServiceUtil {public static void main(String[] args) throws Exception {Builder builder = new RPC.Builder(new Configuration());builder.setBindAddress("localhost").setPort(8888).setProtocol(IClientNamenodeProtocol.class).setInstance(new MyNameNode());Server server = builder.build();server.start();}}

步骤:

1、运行PublishServiceUtil.java 启动服务端

2、运行MyHdfsClient.java 访问服务端

结果:

客户端

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
获取到结果:/hellohellohelloxxxxxxx.xxx: 副本数量3-{BLK-1,BLK-2}-NameNode.......

服务端

log4j:WARN No appenders could be found for logger (org.apache.hadoop.ipc.Server).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
传入的路径:/hellohellohelloxxxxxxx.xxx

-------------

更多的Java,Angular,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,:

http://www.cnblogs.com/zengmiaogen/p/7083694.html

Hadoop-RPC应用demo相关推荐

  1. Hadoop RPC protocol description--转

    原文地址:https://spotify.github.io/snakebite/hadoop_rpc.html Snakebite currently implements the followin ...

  2. Hadoop RPC机制的使用

    一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...

  3. Hadoop RPC实例

    本文发表于本人博客. 上次写了个hadoop伪分布环境搭建的笔记了,今天来说下hadoop分布式构建的基础RPC,这个RPC在提交Job任务的时候底层就是创建了RPC来实现远程过程调用服务端. 我们首 ...

  4. Hadoop RPC框架

    原文:http://blog.csdn.net/thomas0yang/article/details/41211259 --------------------------------------- ...

  5. hadoop rpc客户端初始化和调用过程详解

    为什么80%的码农都做不了架构师?>>>    本文主要记录hadoop rpc的客户端部分的初始化和调用的过程,下面的介绍中主要通过DFSClient来说明,为什么用DFSClie ...

  6. Hadoop RPC解析

    RPC(Remote Procedure Call)即是远程过程调用,简单的理解就是调用远程计算机上的服务,就像调用本地服务一样.而不需要了解底层网络技术的协议.RPC采用的是C/S模式:请求部分是一 ...

  7. 【HDFS】Hadoop RPC中的Responder、Listener、Reader、Handler

    闲得无聊捋了一遍这块的源码,做个粗糙的笔记(阅读不友好型). Hadoop RPC中的几个类 NameNode#main() | initial() | NameNoeRpcServer#start( ...

  8. Hadoop DFS源码研究之---Hadoop RPC机制

    先记录server端的机制 最初接触RPC,用自己的思路来猜测RPC的实现机制: Server端开启socket监听,listen()à accept()àread()àwrite()àclose() ...

  9. RPC远程调用,go语言实现RPC小Demo

    RPC(远程过程调用) :它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 采用客户机/服务器模式.请求程序是一个客户机.而服务服务提供程序就是一个服务器. **过程:** ...

  10. java 读取 hadoop 的文件 demo

    是什么? 使用java 读取 hadoop 中的一个文件. 为什么? 用于初步接触hadoop开发. 怎么做? 一.依赖jar <?xml version="1.0" enc ...

最新文章

  1. 基于WinSvr2012共享文件夹的Hyper-V实时迁移之三实时迁移的实现及验证
  2. c++ 利用boost 实现文件操作
  3. VTK:可视化之DisplayQuadricSurfaces
  4. 新无限天空服务器,天空魔域3782版最新服务端(含网站程序)
  5. js 获取url多个参数
  6. JPA-EntityManager.merge()
  7. 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
  8. 8255A的工作方式控制字
  9. laravel 打包成zip并下载
  10. 乱码问题及字符编码集(一)
  11. 搭建自己的以图搜图系统 (一):10 行代码以图搜图
  12. mysql 存储百分数_mysql中如何存储百分数
  13. php用excel打不开,应用phpexcel导出excel文件后打不开的问题解决方法
  14. 【HTML 5】HTML5 Canvas rect(), strokeRect() 和 fillRect() 的区别
  15. 自考大专计算机专业英语翻译,大专英语自考(上册)课文翻译及习题答案(138页)-原创力文档...
  16. S5PV210 | S5PV210上进行Linux开发
  17. Unable to locate appropriate constructor on class
  18. linux下/proc/sysrq-trigger详解
  19. 网络刷单背后的大圈套让很多人中招
  20. 【重磅新闻】罗永浩约战王自如:一场两败俱伤的战役!

热门文章

  1. java接口中多继承的问题
  2. php windows共享内存,给PHP开启shmop扩展实现共享内存
  3. android 绘图软件,安卓最强大的绘图软件 妙笔生花最新评测
  4. android 首页广告显示不出来的,android – Admob插页式广告(全屏)不会显示
  5. unity如何往下挖地形_Unreal Engine地形系统辨析(一)
  6. html input 上标,javascript – 文本类型的输入字段中的上标
  7. element 登录_Python selenium自动化测试框架入门实战--登录测试案例
  8. 雷神开机logo更改_国产外星人雷神再发新品 911MT逐影者RTX2060光追游戏本评测
  9. 四因素三水平正交表_做论文要用正交表?我打包送给你
  10. 苹果7手机严重卡顿_苹果手机仅配备4GB运存都不会卡顿,安卓系统为何要更多内存?...