最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下:

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
    at com.sun.proxy.$Proxy4.login(Unknown Source)
    at cn.edu.nupt.Hadoop.rpc.LoginController.main(LoginController.java:13)
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException): Unknown protocol: cn.edu.nupt.Hadoop.rpc.LoginServiceInterface
    at org.apache.hadoop.ipc.WritableRpcEngine$Server$WritableRpcInvoker.call(WritableRpcEngine.java:493)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)

at org.apache.hadoop.ipc.Client.call(Client.java:1475)
    at org.apache.hadoop.ipc.Client.call(Client.java:1412)
    at org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:243)
    ... 2 more

  导致此类问题的原因主要是由于命名空间的问题(包的命名不一致)。在我的环境中我的linux中的包命名为cn.edu.nupt.hadoop.rpc,而在我的windows工程中我的包的命名格式为cn.edu.nupt.Hadoop.rpc,很清楚的看到我的命名格式不一致。改好后运行成功。因为我的windows中的项目是通过maven创建的,所以不太好修改报名,直接统一改成了cn.edu.nupt.Hadoop.rpc格式。

几点说明:

  我的namenode的ip对应的“域名”为master;

  采用的端口号监听是:10000

  抽象接口(协议):接口

  实例:具体实现类

几个重要的类如下:

1、Linux端

(1)接口:LoginServiceInterface

package cn.edu.nupt.Hadoop.rpc;public interface LoginServiceInterface {public static final long versionID=1L;public String login(String username,String passwd);
}

View Code

(2)实现类:LoginServiceImplement

package cn.edu.nupt.Hadoop.rpc;public class LoginServiceImplement implements LoginServiceInterface{@Overridepublic String login(String username, String passwd) {// TODO Auto-generated method stubSystem.out.println("haha");return username+"Login Successful!";}
}

View Code

(3)程序入口:start

package cn.edu.nupt.Hadoop.rpc;import java.io.IOException;import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;/*** * @author hadoop**/
public class start {public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {RPC.Builder builder = new RPC.Builder(new Configuration());builder.setBindAddress("master").setPort(10000).setProtocol(LoginServiceInterface.class).setInstance(new LoginServiceImplement());org.apache.hadoop.ipc.RPC.Server server = builder.build();server.start();}
}

View Code

2、windows端

(1)抽象类:loginServiceInterface

package cn.edu.nupt.Hadoop.rpc;public interface LoginServiceInterface {public static final long versionID=1l;public String login(String username,String passwd);
}

View Code

(2)测试类:LoginController

package cn.edu.nupt.Hadoop.rpc;import java.io.IOException;
import java.net.InetSocketAddress;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;public class LoginController {public static void main(String[] args) throws IOException {LoginServiceInterface proxy = RPC.getProxy(LoginServiceInterface.class, 1L, new InetSocketAddress("master", 10000), new Configuration());String result=proxy.login("Angelababy ", "123456");System.out.println(result);}
}

View Code

转载于:https://www.cnblogs.com/xiangyangzhu/p/5731286.html

Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法相关推荐

  1. springboot启动报错 java.lang.ArrayStoreException异常解决方法

    参考:https://www.cnblogs.com/jiangwz/p/9711998.html 上面链接说的很清楚了,区别就是最后异缺少的类不一致,我的是Type org.springframew ...

  2. jdk1.8正常运行,而高版本jdk17运行报错 java.lang.reflect.InaccessibleObjectException

    jdk1.8正常运行,而高版本jdk运行报错 java.lang.reflect.InaccessibleObjectException: Unable to make field transient ...

  3. linux监听报错sp2-0734,Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    前言 最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. 错误描述 [ora ...

  4. oracle监听启动无权限,Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    前言 最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了解决方案,现在共享出来给有需要的朋友. 错误描述 [ora ...

  5. vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)...

    vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文) 转载于:https://www.cnblogs.com/ ...

  6. 客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心

    客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心(谷粒) 报错内容 ...

  7. word报错打不开的解决方法

    对于办公人员来说,word是日常办公中最常用的软件,根本就是离不开的.但有时需要Word删除表格的保留内容,有时反过来又需要删除Word的保留形式.一旦操作了出现word出现打不开或者出现一些异常现象 ...

  8. maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的中添加 org.apache.maven.plugins maven-compiler-plugin 2 ...

  9. Hive报错java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory

    一 问题 Hive报错java.lang.NoClassDefFoundError:org/codehaus/jackson/JsonFactory 二 原因 Hadoop版本是0.20.2.$HAD ...

最新文章

  1. 【C#】枚举_结构体_数组
  2. 理解CNN卷积层与池化层计算
  3. 有些原理,讲着讲着自己也就相信了
  4. 使用PLP特征训练crnn语音分类
  5. oracle表空间处理操作
  6. nacos 配置_SpringCloud Alibaba之Nacos配置中心
  7. Python 数据库备份脚本(邮件通知+日志记录)
  8. 理解一下select 1 和 exists
  9. [C#]C#补习——类型和操作符—PART1
  10. 使用Python构建的七大应用程序
  11. r语言plotmds_利用R语言进行数据分析
  12. 方案:软件集成测试工作流程指南
  13. 计算机职业素养论文1500字,计算机职业论文
  14. win10设置共享 Mac访问
  15. GRACE专题--提供一个转换ICGEM网站的gfc文件为mat的代码
  16. “衣带渐宽终不悔,为伊消得人憔悴”的赏析
  17. 扫描线zbuffer消隐算法
  18. jsp:通过Session控制登陆时间和内部页面的访问
  19. 减少不必要的App运营成本,是2022年中小开发者要留心的
  20. Oracle EBS专业术语与名词解释

热门文章

  1. 企业运维之域控篇(十)--SERVER 2003 迁移到 SERVER 2008 (异机)
  2. KlayGE SVN原生支持立体显示
  3. 2018.09.14 codechef Milestone(随机化算法)
  4. Python 基于Python从mysql表读取千万数据实践
  5. Unity面试题汇总(第一部分)
  6. HNOI2015题解
  7. java基础 知识点
  8. 第六十一天 how can I 坚持
  9. 手机开发必备技巧:javascript及CSS功能代码分享
  10. C#开发中关于加密解密字符串的使用方法