【问题标题】:Problem while executing hadoop code执行hadoop代码时出现问题
【发布时间】:2010-09-28 19:56:05
【问题描述】:

我刚开始使用 Hadoop。我按照书中的内容编写了一个示例 hadoop 代码。但是,在执行期间仍然会出现异常。我得到的sn-p:

[harsh@geek hadoop-0.20.2]$ hadoop MaxTemperature 输入/ncdc/sample.txt 输出 线程“主”java.lang.NoClassDefFoundError 中的异常:MaxTemperature 引起:java.lang.ClassNotFoundException:MaxTemperature 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248) 找不到主类:MaxTemperature。程序将退出。

我该怎么办?

【问题讨论】:

  • 您是否使用编译器 (javac) 编译了代码?

标签: java hadoop


【解决方案1】:

当你运行一个 hadoop jar 时,这是你应该在你放置 jar 的目录中运行的命令(例如 /usr/lib/hadoop-0.20/bin )

  • hadoop jar NAMEOFJAR.jar arg1 arg2 argN

根据您的问题,这可能是如何运行它(将 cd 设置为 hadoop 目录以获取您正在运行的 hadoop 版本)

  • cp MaxTemperature.jar /usr/lib/hadoop-0.20/bin
  • su hadoop
  • cd /usr/lib/hadoop-0.20/bin
  • hadoop jar MaxTemperature.jar 输入/ncdc/sample.txt 输出

【讨论】:

  • 这是否意味着我必须为我的代码创建一个 jar 文件?这本书也说过这一点,但它的写作方式似乎只是一种选择。如果必须,我该怎么做?
  • 你必须制作一个 jar 文件。如果您使用的是 Eclipse,则可以选择它。教程应该不难找到。
【解决方案2】:

将 MaxTemperature 类添加到您的类路径中。

【讨论】:

  • 我试过了。它仍然没有工作。 "设置 CLASSPATH=/home/harsh/hadoop/hadoop-0.20.2/MaxTemp.java "
  • 或者你可能让我做其他事情?因为正如我在帖子中提到的那样,我对 Hadoop 完全陌生。
  • 我的印象是,根据您的标签,它与类似此问题的 java 类路径问题的工作方式大致相同。
  • 我的错!这本书还谈到了设置类路径。 "export HADOOP_CLASSPATH=build/classes" 我什至这样做了,但我仍然得到同样的错误。
  • 我正在通过命令行执行此操作,我已经被这个卡住了将近一天。
【解决方案3】:

它总是寻找作为主类的入口点,即设置映射器和化简器类的代码。如果找不到,则抛出 classnotfound 异常。

【讨论】:

    【解决方案4】:

    我也经历过同样的事情。我在http://digitallibraryworld.com/?p=256 上记录了逐步解决方案。希望它可以帮助某人

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案5】:

    您是否将 MaxTemperature 放入一个包中?

    如果是这样,请说您的 MaxTemperature.class 文件位于 yourdir/bin/yourpackage/ 中。你需要做的:

    export HADOOP_CLASSPATH=yourdir/bin
    hadoop yourpackage.MaxTemperature
    

    【讨论】:

      【解决方案6】:

      对于 Map Reduce 执行,首先需要创建带有类的 Jar 文件,即 Mapper、Reducer、Driver 类。 移动到jar文件所在的文件夹并执行

      bin/hadoop Sample.jar SampleDriver InputFileName OutPutFileName
      

      试试看。应该使用这些流程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-01
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-21
        • 1970-01-01
        相关资源
        最近更新 更多