HadoopRPC使用方法示例
定義RPC協議
import java.io.IOException;
import org.apache.hadoop.ipc.VersionedProtocol;
/**
* DateTime: 2014年12月28日 上午9:32:12
*
*/
public interface ClientProtocol extends VersionedProtocol {
//版本號,預設情況下,不同版本號的RPC客戶端與Server之間不能相互通訊
public static final long versionID = 1L;
public String hello(String msg) throws IOException;
}
實現RPC協議
import java.io.IOException;
import org.apache.hadoop.ipc.ProtocolSignature;
/**
* DateTime: 2014年12月28日 上午9:41:38
*
*/
public class ClientProtocolImpl implements ClientProtocol {
@Override
public long getProtocolVersion(String protocol, long clientVersion)
throws IOException {
return versionID;
}
@Override
public ProtocolSignature getProtocolSignature(String protocol,
long clientVersion, int clientMethodsHash) throws IOException {
return new ProtocolSignature(versionID, null);
}
@Override
public String hello(String msg) throws IOException {
return "hello " + msg;
}
}
構建並啟動RPC Server
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;
/**
* DateTime: 2014年12月28日 上午9:47:05
*
*/
public class RPCServer {
private static final String HOST = "localhost";
private static final int PORT = 2181;
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
Server server = new RPC.Builder(conf).setProtocol(ClientProtocol.class)
.setInstance(new ClientProtocolImpl()).setBindAddress(HOST)
.setNumHandlers(2)
.setPort(PORT).build();
server.start();
}
}
構造並啟動RPC Clinet併傳送RPC請求
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
/**
* DateTime: 2014年12月28日 上午9:52:19
*
*/
public class RPCClient {
private static final String HOST = "localhost";
private static final int PORT = 2181;
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
ClientProtocol proxy = RPC.getProxy(ClientProtocol.class, ClientProtocol.versionID,
new InetSocketAddress(HOST, PORT), conf);
String result = proxy.hello("world");
System.out.println(result);
}
}
相關文章
- C++ 中檔案流(fstream)的使用方法及示例C++
- HDFS 原始碼解讀:HadoopRPC 實現細節的探究原始碼HadoopRPC
- VNC viewer使用方法,win10VNC使用方法VNCViewWin10
- webpack 使用方法。Web
- EntityManager使用方法
- Alfred使用方法Alfred
- WebView使用方法WebView
- XQuartz 使用方法quartz
- 示例
- chown 命令使用方法
- scp命令使用方法
- Java DES 使用方法Java
- API文件使用方法API
- Swiper Animate使用方法
- jQuery datatable 使用方法jQuery
- FCKeditor使用方法(轉)
- git命令使用方法Git
- Jquery datatables 使用方法jQuery
- FMDatabase 的使用方法Database
- Properties使用方法解析
- HttpClient初步使用方法HTTPclient
- ****phpredis的使用方法PHPRedis
- ieHTTPHeaders使用方法HTTPHeader
- redis nosql 使用方法RedisSQL
- ScaleType的使用方法
- Oracle JOB 使用方法Oracle
- docker的使用方法Docker
- Markdown的使用方法
- anaconda使用方法
- pod 示例
- 4.5.1.2.2 示例
- Thrift示例
- InputTextMask示例
- Guice 示例GUI
- crontab 示例
- linux awk使用方法Linux
- VNC, VNC viewer使用方法!VNCView
- React 路由的使用方法React路由