java.lang.NoClassDefFoundError:在hadoop集群

时间:2016-03-03 10:02:56

标签: java maven hadoop mahout hortonworks-data-platform

我正在关注koutans clustring的Mahout In Action教程,我使用相同的代码here: 同样的pom.xml也。 在我使用eclipse的本地机器上,每件事都运行正常,所以我构建jar文件(clustering-0.0.1-SNAPSHOT.jar)并在尝试使用以下代码运行它时将其带到集群(Hortonworks 2.3):hadoop jar clustering-0.0.1-SNAPSHOT.jar com.digimarket.clustering.App (我以不同方式命名我的项目)我收到此错误:

  

java.lang.NoClassDefFoundError:   组织/阿帕奇/象夫/普通/距离/ DistanceMeasure

我知道这是一个依赖性问题,我发现之前遇到此问题的用户提出了问题,但无法理解他们是如何解决的。 herehere

这是我的群集中mahout目录的内容:

ls /usr/hdp/2.3.4.0-3485/mahout/
bin
conf
doc
lib
mahout-examples-0.9.0.2.3.4.0-3485.jar
mahout-examples-0.9.0.2.3.4.0-3485-job.jar
mahout-integration-0.9.0.2.3.4.0-3485.jar
mahout-math-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485-job.jar

感谢。

1 个答案:

答案 0 :(得分:0)

您的群集中的代码似乎无法使用依赖项。

基于该项目的pom.xml,您应该使用:

<properties>
  <mahout.version>0.5</mahout.version>
  <mahout.groupid>org.apache.mahout</mahout.groupid>
</properties>
...
<dependencies>
  <dependency>
    <groupId>${mahout.groupid}</groupId>
    <artifactId>mahout-core</artifactId>
    <version>${mahout.version}</version>
  </dependency>
  ...
</dependencies>

类org.apache.mahout.common.distance.DistanceMeasure包含在mahout-core-0。*。jar中我有mahout-core-0.7.jar并且该类存在于那里。

enter image description here

您可以下载该jar并将其包含在-libjars标志中,也可以将其放在hadoop类路径中。