日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop-rpc调用案例,服务端,客户端代码案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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);

?? }

}

?

輸出的結果:

?

總結

以上是生活随笔為你收集整理的Hadoop-rpc调用案例,服务端,客户端代码案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。