当前位置: 首页 > 知识库问答 >
问题:

Hadoop外部JAR

慕弘义
2023-03-14

我正在尝试在服务器上运行hadoop作业。版本为0.20.2

我有一大堆罐子,我在运行:

hadoop jar GenData.jar -libjars /path/jar1,path/jar2,...

即使对应的类在JAR中,我也会得到下面的错误:

线程“main”java.lang.noClassDeffounder中出现异常错误:org/apache/avro/mapreduce/avrokeyInputFormat在generateTrainningData.main(generateTrainningData.java:256)在sun.reflect.nativeMethodAccessorInvoke0(原生方法)在sun.reflect.nativeMethodAccessorInvoke.java:57)在sun.reflect.delegatingmethodAccessorInvoke(nativeMethodAccessorInvoke:43)

共有1个答案

后烨煜
2023-03-14

看起来您从Hadoop客户端得到了这个异常,Mapreduce驱动程序代码执行发生在客户端JVM中。在hadoop-libjars中,它是一个通用选项,用于向映射器/还原器添加依赖的JAR。在将JAR添加到客户端集的情况下,可以在执行hadoop命令之前设置以下环境变量

export HADOOP_CLASSPATH=<PATH_to_jar>/Jar1:<PATH_to_jar>/Jar2;    

(冒号“:”可用于指定1个以上的Jar,在您的情况下,您可以添加包含类org.apache.avro.mapreduce.avrokeyInputFormat)的Jar。

新编辑

首先,您需要找到包含类org.apache.avro.mapreduce.avrokeyInputFormat的jar。您可以在jaravro-mapred*.jar(从internet获取avro-mapred-version.jar的兼容版本)中找到类,使用上述命令将其包含在类路径中。

 类似资料:
  • 我试图将外部jar设置为hadoop类路径,但目前还没有成功。 我可以看到上面的HADOOP_CLASSPATH已经被hadoop接收 $hadoop类路径 /etc/hadoop/conf:/usr/lib/hadoop/lib/://usr/lib/hadoop/.//:/home/tom/workspace/libs/opencsv-2.3.jar://usr/lib/hadoop-hdfs

  • 我有一个Hadoop作业,其中映射器必须使用外部jar。 我试图将这个jar传递给映射器的JVM 通过hadoop命令上的-libjars参数 via作业。addFileToClassPath HADOOP_CLASSPATH。 这些方法都不起作用。这是我得到的堆栈跟踪。它抱怨的缺失类是SparseDoubleMatrix1D在colt.jar. 如果我需要提供任何其他调试信息,请告诉我。谢谢

  • 尝试使用Streaming在Hadoop上运行mapduce作业。我有两个ruby脚本wcmapper.rb和wcreducer.rb.我正尝试运行该作业,如下所示: 这将导致控制台出现以下错误消息: 查看任何任务的失败尝试可以看出: 我知道hadoop需要复制map和减少器脚本以供所有节点使用,并相信这是-file参数的目的。然而,脚本似乎没有被复制到hadoop期望找到它们的位置。控制台指示它

  • Git 有一些可以与其他的版本控制系统集成的命令。 git svn git svn 可以使 Git 作为一个客户端来与 Subversion 版本控制系统通信。 这意味着你可以使用 Git 来检出内容,或者提交到 Subversion 服务器。 Git 与 Subversion 一章深入讲解了此命令。 git fast-import 对于其他版本控制系统或者从其他任何的格式导入,你可以使用 git

  • Generators 相关文章 The Basics Of ES6 Generators By Kyle Simpson ES6 generators in depth By Axel Rauschmayer redux-saga 相关文章 Redux nowadays : From actions creators to sagas By Riad Benguella Managing Side

  • EC = 外部 containerizer 。 mesos slave 的一部分其提供 API ,通过可执行的外部插件来支持 containerizing ( 集装箱化 )。 ECP = 外部 containerizer 程序。 一个通过 containering system 接口实现了真正的集装箱化的可执行外部插件 。 ( 例如 Docker ) 总体概述 EC 调用 ECP 作为一个 she