Hadoop的RPC分析

简介: 一、基础知识   原理 http://www.cnblogs.com/edisonchou/p/4285817.html,这个谢了一些rpc与hadoop的例子。   用到了java的动态代理,服务端实现一个接口,客户端得到这个接口的实现类,客户端通过自定义的versionID来标志一对服务端和客户端。

一、基础知识

  原理 http://www.cnblogs.com/edisonchou/p/4285817.html,这个谢了一些rpc与hadoop的例子。

  用到了java的动态代理,服务端实现一个接口,客户端得到这个接口的实现类,客户端通过自定义的versionID来标志一对服务端和客户端。

二、代码

  2.1 接口

package rpc;

import org.apache.hadoop.ipc.VersionedProtocol;
//默认情况下,不同版本号的RPC Client和Server之间不能相互通信,因此客户端和服务端通过版本号标识。

public interface RPCable extends VersionedProtocol {
	public static final long versionID = 10010;
	public String sayHi(String name) ;
	
}

  我原来没继承VersionedProtocol接口,也成功了。接口不能在实现接口

  2.2 服务端

package rpc;

import java.io.IOException;

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


//动态代理:客户端和服务端同时实现一个接口
//可以在linux和win下   
//不同main进程下相互调用

//是不同进程见的方法调用
//底层走的是jav的rmi

public class RPCServer implements RPCable{
	
	public String sayHi(String name) {
		return "HI!"+name;
	}

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Configuration conf = new Configuration();
		//方法的调用连   因为每次调用返回的是this
		Server server = new RPC.Builder(conf).setProtocol(RPCable.class).
		setInstance(new RPCServer()).setBindAddress("localhost").
		setPort(9527).build();
		server.start();
		  
	}

	@Override
	public ProtocolSignature getProtocolSignature(String arg0, long arg1,
			int arg2) throws IOException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getProtocolVersion(String arg0, long arg1) throws IOException {
		// TODO Auto-generated method stub
		return 0;
	};

}

  我原来没继承VersionedProtocol类,那么服务端不需要下面的两个方法,继承了以后必须写。

  2.3 客户端

package rpc;

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

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

//打印在客户端  拼接字符串确实在服务端

public class RPCClient {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		//协议一般是.class
		RPCable proxy = RPC.getProxy(RPCable.class, 10010,
				new InetSocketAddress("localhost",9527), new Configuration());
		String res = proxy.sayHi("!!!!!!!!!!!!");
		System.out.println(res);
		RPC.stopProxy(proxy);
	}

}

三、结束

  rpc不受系统、地理位置的限制。

  不相信的话可以在和护短打断点,一步一步发现进入了;额服务器端。

  做的时候如果不知道使用那个类哭下的东西,可以打开对应类的class文件,可能是黑色,不是源码,那么点击attach source找到hadoop的源码包就可以了,导进去就看到的是普通的和咱的java类似的文件,可以看看里面的蚕食来自那个包。

 

目录
相关文章
|
4月前
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
67 1
|
4月前
|
SQL 分布式计算 Hadoop
hadoop数据查询和分析
【5月更文挑战第9天】
60 1
|
25天前
|
存储 SQL 分布式计算
Hadoop生态系统概述:构建大数据处理与分析的基石
【8月更文挑战第25天】Hadoop生态系统为大数据处理和分析提供了强大的基础设施和工具集。通过不断扩展和优化其组件和功能,Hadoop将继续在大数据时代发挥重要作用。
|
2月前
|
存储 分布式计算 并行计算
使用Hadoop构建Java大数据分析平台
使用Hadoop构建Java大数据分析平台
|
3月前
|
分布式计算 Hadoop Java
使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱
使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱
|
4月前
|
分布式计算 Hadoop 关系型数据库
Hadoop任务scan Hbase 导出数据量变小分析
Hadoop任务scan Hbase 导出数据量变小分析
83 0
|
4月前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
4月前
|
资源调度 分布式计算 Hadoop
【Hadoop Yarn】Yarn 调度器分析
【4月更文挑战第7天】【Hadoop Yarn】Yarn 调度器分析
|
4月前
|
资源调度 分布式计算 Hadoop
【Hadoop Yarn】YARN 基础架构分析
【4月更文挑战第7天】【Hadoop Yarn】YARN 基础架构分析
|
4月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
139 0

相关实验场景

更多