Jul 1

hadoop.ipc.RemoteException Unknown protocol的一个处理demo 不指定

admin , 19:42 , Hadoop , 评论(0) , 引用(0) , 阅读(382) , Via 本站原创 | |
搜索
我已经获得阿里云幸运券,准备分享给您。请点击获取  

---itlife365.com
hadoop.ipc.RemoteException Unknown protocol的一个处理demo begin
最近在学习Hadoop,在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下:
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException): Unknown protocol: com.itlife365.bigdata.hadoop.rpc.client.LoginServiceInterface at

关键代码:
****
//proctol 协议:接口
  //com.itlife365.bigdata.hadoop.rpc.server.LoginServiceInterface loginServiceImpl = RPC.getProxy(com.itlife365.bigdata.hadoop.rpc.server.LoginServiceInterface.class, 1L, new InetSocketAddress("itlife365",10000), conf); 
  LoginServiceInterface loginServiceImpl = RPC.getProxy(LoginServiceInterface.class, 1L, new InetSocketAddress("itlife365",1000), conf);
  String res = loginServiceImpl.login("zhangshan", "password");
  System.out.println(res);

****
导致此类问题的原因主要是由于接口文件LoginServiceInterface 命名空间的问题(包的命名不一致)。
在我的环境中我的linux中的包命名为com.itlife365.bigdata.hadoop.rpc.server,而在我的windows工程中我的包的命名格式为com.itlife365.bigdata.hadoop.rpc.client,很清楚的看到我的命名格式不一致,改好后运行成功。
或者像我新建一个server的包,代码中硬编码也可以的。

如:com.itlife365.bigdata.hadoop.rpc.server.LoginServiceInterface.class
截图如下:

hadoop-ipc-RemoteException-Unknown-protocol
hadoop.ipc.RemoteException Unknown protocol的一个处理demo end