【问题标题】:ClassNotFoundException when running from local to remote从本地运行到远程时出现 ClassNotFoundException
【发布时间】:2017-12-03 12:11:42
【问题描述】:

我有一个mapreduce 代码在我的本地运行良好。然后当我在远程服务器上运行它时,我得到了这个执行

Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.avro.mapreduce.AvroKeyInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
    at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:749)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
    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:1698)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

在我的IntelliJ ide 中,我有一个外部库avro-mapred-1.7.7-hadoop2.jar,我从中构建了工件。当我解压工件的jar 时,我发现正确,并且在org.apache.avro.mapreduce 包中正确找到了AvroKeyInputFormat。那么我在这里缺少什么? 我检查了一些SO 的帖子,但没有找到相关答案

【问题讨论】:

    标签: java hadoop mapreduce avro


    【解决方案1】:
    1. 要么创建一个 far jar,然后将所有依赖的 jar 添加到 fat jar 中。

    2. 使用 cli -libjars 在分布式缓存中添加依赖 jar 或使用 Job.addLibPath() 以编程方式添加 jar。

    想法是让所有 jar 都可用于 MR 期间调用的远程 JVM。

    【讨论】:

    • 谢谢,我在远程服务器上上传了avro-mapred-1.7.7-hadoop2.jar,我用命令export HADOOP_CLASSPATH=/path/to/avro-mapred-1.7.7-hadoop2.jar 添加了它,然后再次启动作业,我得到了完全相同的错误
    • 这不是正确的方法,如果您只想让您的工作运行,请将其添加到 Java 类路径中,请将其添加到 CLASSPATH 以便它对 JVM 可见。一旦进程运行,您能否提供 ps -eaf 的输出以及您的进程 ID,以便于调试。
    • 我试图关注 https://stackoverflow.com/questions/27994644/hadoop-external-jars。你能告诉我你心中的命令是什么吗?
    • 按照java 文档,我尝试添加export CLASSPATH=/path/to/avro-mapred-1.7.7-hadoop2.jar,但我遇到了同样的问题
    • 也试过 export LIBJARS=jar1.jar,jar2.jar 和 hadoop jar myjar.jar input output -libjars ${LIBJARS} 也抛出同样的错误。
    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 2014-07-21
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多