Hadoop-rpc调用案例,服务端,客户端代码案例

简介: 1. Hadoop-rpc框架在hadoop中提供了一个rpc框架,通过这个rpc框架可以编写一个rpc服务端程序,然后发布出去供客户端调用。1.1.服务端代码其中服务端(example-hadoop-rpc-server),其中代码结果如下:代码说明:ClientNamenodeProtocal 接口定义 NameNode 接口的实现 ServerPublishe

1. Hadoop-rpc框架

在hadoop中提供了一个rpc框架,通过这个rpc框架可以编写一个rpc服务端程序,然后发布出去供客户端调用。

1.1.服务端代码

其中服务端(example-hadoop-rpc-server),其中代码结果如下:

代码说明:

ClientNamenodeProtocal

接口定义

NameNode

接口的实现

ServerPublisher

用于发布服务的类

 

    若写服务端代码,需要一个服务端的接口,其中接口如下:

package cn.toto.rpc.protocal;

 

public interface ClientNamenodeProtocal {

 

   //为了保证客户端和服务端的版本是一致的,如果没有定义将报错

   public static final long versionID = 1L;

     

   public String getMetaData(String path);

  

}

接口的实现类是:

package cn.toto.rpc.server;

 

import cn.toto.rpc.protocal.ClientNamenodeProtocal;

 

public class NameNode implements ClientNamenodeProtocal {

 

   @Override

   public String getMetaData(String path) {

      return path + " 2 {BLK1,BLK2} {BLK1:min1,mini2} {BLK2:mini4,mini5}";

   }

 

}

    用于发布的接口类:

package cn.toto.rpc.server;

 

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.toto.rpc.protocal.ClientNamenodeProtocal;

 

public class ServerPublisher {

 

   public static void main(String[] args) throws Exception, IOException {

     

      Builder builder = new RPC.Builder(new Configuration());

     

      //暴露的仅仅是ClientNamenodeProtocal.class中的new NameNode()实现的方法

      builder.setBindAddress("localhost").setPort(8787)

             .setProtocol(ClientNamenodeProtocal.class)

             .setInstance(new NameNode());

     

      //构建一个Server,并且启动一下

      Server server = builder.build();

      server.start();

   }

}

 

1.2.客户端

写完客户端后,可以开始写客户端调用进行测试了。

    客户端的代码如下:

   代码说明:

ClientNamenodeProtocal

和服务端一样的接口

HdfsClient

用于调用的客户端代码

 

   接口代码如下:

package cn.toto.rpc.protocal;

 

public interface ClientNamenodeProtocal {

 

   //为了保证客户端和服务端的版本是一致的,如果没有定义将报错

   public static final long versionID = 1L;

     

   public String getMetaData(String path);

  

}

 

   客户端代码:

package cn.toto.rpc.client;

 

import java.io.IOException;

import java.net.InetSocketAddress;

 

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.ipc.RPC;

 

import cn.toto.rpc.protocal.ClientNamenodeProtocal;

 

public class HdfsClient {

   

   /**

    * 在使用这个之前,需要先启动服务端

    */

   public static void main(String[] args) throws IOException {

      //通过这种方式获取到一个远程调用对象

      ClientNamenodeProtocal nameNode = RPC.getProxy(ClientNamenodeProtocal.class,

                 1L,

                 new InetSocketAddress("localhost",8787),

                 new Configuration());

     

      //调用服务端的接口,看看返回的结果

      String metaData = nameNode.getMetaData("/a.doc");

      System.out.println(metaData);

   }

}

 

输出的结果:

 

目录
相关文章
|
1月前
|
Java Apache C++
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
Thrift 是一个轻量级、跨语言的远程服务调用框架,由 Facebook 开发并贡献给 Apache。它通过 IDL 生成多种语言的 RPC 服务端和客户端代码,支持 C++、Java、Python 等。Thrift 的主要特点包括开发速度快、接口维护简单、学习成本低和多语言支持。广泛应用于 Cassandra、Hadoop 等开源项目及 Facebook、百度等公司。
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
|
2月前
|
SQL 存储 分布式计算
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
49 3
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
100 3
|
2月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
44 3
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
46 2
|
2月前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
41 2
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
67 1
|
7月前
|
XML API PHP
Android使用XML-RPC实现blog客户端
Android使用XML-RPC实现blog客户端
60 2
|
3月前
|
分布式计算 Hadoop Devops
Hadoop集群配置https实战案例
本文提供了一个实战案例,详细介绍了如何在Hadoop集群中配置HTTPS,包括生成私钥和证书文件、配置keystore和truststore、修改hdfs-site.xml和ssl-client.xml文件,以及重启Hadoop集群的步骤,并提供了一些常见问题的故障排除方法。
85 3
Hadoop集群配置https实战案例
|
4月前
|
机器学习/深度学习 存储 分布式计算
Hadoop与机器学习的融合:案例研究
【8月更文第28天】随着大数据技术的发展,Hadoop已经成为处理大规模数据集的重要工具。同时,机器学习作为一种数据分析方法,在各个领域都有着广泛的应用。本文将介绍如何利用Hadoop处理大规模数据集,并结合机器学习算法来挖掘有价值的信息。我们将通过一个具体的案例研究——基于用户行为数据预测用户留存率——来展开讨论。
325 0