利用Hadoop提供的RPC API实现简单的RPC程序
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,[toc]利用Hadoop提供的RPC API实现简单的RPC程序在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例。项目结
千家信息网最后更新 2025年01月23日利用Hadoop提供的RPC API实现简单的RPC程序
[toc]
利用Hadoop提供的RPC API实现简单的RPC程序
在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例。
项目结构
为了方便操作,所有的代码都放在本地一个项目中,实际上,完全可以将代码放在不同的服务器上,这是RPC的概念,这里就不做过多的介绍。
项目结构如下:
rpc/├── HelloServiceImpl.java├── IHelloService.java├── RPCClientDriver.java└── RPCServerDriver.java
程序代码
这里只是做一个简单的示例,并且代码中也给出了非常详细的注释,所以直接给出程序代码。
IHelloService.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.ipc.VersionedProtocol;/** * 接口 * 要想使用hadoop提供的RPC服务,必须要继承VersionedProtocol */public interface IHelloService extends VersionedProtocol { public long versionID = 1L; public String sayHi(String name); public String hearBeat(String beat);}
HelloServiceImpl.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.ipc.ProtocolSignature;import java.io.IOException;/** * HelloService服务实现类 */public class HelloServiceImpl implements IHelloService { public String sayHi(String name) { System.out.println("name..." + name); return "Hi, " + name; } public String hearBeat(String beat) { System.out.println("----heartbeat----" + beat); return System.currentTimeMillis() + "--->" + beat; } public long getProtocolVersion(String protocol, long clientVersion) throws IOException { return versionID; } public ProtocolSignature getProtocolSignature(String protocol, long clientVersion, int clientMethodsHash) throws IOException { return new ProtocolSignature(); }}
RPCServerDriver.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOException;/** * RPC服务端程序,启动并发布服务 */public class RPCServerDriver { public static void main(String[] args) throws IOException { // 创建RPC的配置 Configuration configuration = new Configuration(); // 构建RPC的builder对象 RPC.Builder builder = new RPC.Builder(configuration); // 设置RPC Server的信息,返回一个server对象 RPC.Server server = builder.setBindAddress("localhost") .setPort(4893) .setProtocol(IHelloService.class) .setInstance(new HelloServiceImpl()) .build(); // 启动RPC Server // 这是一个守护进程,所以main函数不会退出 server.start(); System.out.println("---服务启动了---"); }}
RPCClientDriver.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOException;import java.net.InetAddress;import java.net.InetSocketAddress;/** * RPC客户端程序 */public class RPCClientDriver { public static void main(String[] args) throws IOException { // 构建InetSocketAddress对象 InetSocketAddress address = new InetSocketAddress(InetAddress.getByName("localhost"), 4893); // 通过RPC.getProxy方法获得代理对象 /** * @param protocol 接口的类型对象 * @param clientVersion 版本号 * @param addr 服务端地址 * @param conf 配置信息 */ IHelloService helloServiceProxy = RPC.getProxy(IHelloService.class, IHelloService.versionID, address, new Configuration()); String result = helloServiceProxy.sayHi("小秋田"); System.out.println(result); }}
测试
启动RPCServerDriver,输出如下:
---服务启动了---
启动RPCClicentDriver,输出如下:
Hi, 小秋田
此时再查看服务端的输出:
---服务启动了---name...小秋田
这样的话,通过使用Hadoop提供的RPC API,就实现了一个简单的RPC程序。
服务
程序
代码
对象
项目
秋田
输出
信息
接口
结构
这是
配置
不同
这样的话
函数
只是
地址
实例
实际
实际上
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全保护法 等保
软件开发实习计划与实施步骤
如何把音乐存在云服务器上
腾讯会议的服务器和串流密钥
如何看待中美网络安全
网络安全倡议微视频
威动服务器影片命名规则
吉林天驱企业级服务器
uptade数据库
数据库原理与应用第四版
cmd连linux数据库
网络安全管理与维护方案
免费开源的数据库客户端
云服务器如何让jar包保持运行
网络安全赌博诈骗
福建服务器租赁虚拟主机
青岛网络安全产业基地中标
华为校招网络技术工程师工资
2u服务器安装
t3附加数据库不显示账套
泰拉瑞亚服务器ID大全
校园中的网络安全
郑州富轩远软件开发有限公司
东城dell服务器回收价格
中国开发游戏的软件开发
分销软件开发功能需求
网络安全协调联动机制文件
组态王数据库上传其他电脑
华为ensp软件开发原理
达梦数据库配置工具