2013-12-10 20 views
7

我想运行一个简单的地图缩小字数的例子。但我有这个问题,不知道如何解决它。地图缩小字数示例

Exception in thread "main" java.lang.VerifyError: Bad type on operand stack 
Exception Details: 
    Location: 
    org/apache/hadoop/mapred/JobTrackerInstrumentation.create(Lorg/apache/hadoop/mapred/JobTracker;Lorg/apache/hadoop/mapred/JobConf;)Lorg/apache/hadoop/mapred/JobTrackerInstrumentation; @5: invokestatic 
    Reason: 
    Type 'org/apache/hadoop/metrics2/lib/DefaultMetricsSystem' (current frame, stack[2]) is not assignable to 'org/apache/hadoop/metrics2/MetricsSystem' 
    Current Frame: 
    bci: @5 
    flags: { } 
    locals: { 'org/apache/hadoop/mapred/JobTracker', 'org/apache/hadoop/mapred/JobConf' } 
    stack: { 'org/apache/hadoop/mapred/JobTracker', 'org/apache/hadoop/mapred/JobConf', 'org/apache/hadoop/metrics2/lib/DefaultMetricsSystem' } 
    Bytecode: 
    0000000: 2a2b b200 03b8 0004 b0 
+0

我有一个类似的问题 - 你看着办吧? – mikeyreilly

回答

7

我有同样的问题,它得到了通过消除Maven的一些不必要的参考解决(Hadoop的共同和Hadoop的HDFS)。 我从Windows使用hadoop 2.2.0,连接到Linux hadoop单节点群集。

+1

或者只是重新排序Maven依赖关系。 或者如果你不使用Maven,那么尝试删除/重新排序你的.classpath库 –

+0

我应该如何重新排序才能解决这个错误? –

+3

我建议你先删除不需要的参考,然后重新排序。另请注意,hadoop-core不应该用于新版本。我的朋友说(按这个顺序):hadoop-common,hadoop-mapreduce-client-core,hadoop-hdfs(取决于你需要什么) –

2

下面的依赖关系顺序为我解决了这个问题。

hadoop-core 1.2.1 
hadoop-common 2.6.0 
0

下面的依赖关系为我工作

<dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>1.2.1</version> 
     </dependency>  

     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-common</artifactId> 
      <version>2.6.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.6.0</version> 
     </dependency>  

    </dependencies>