【问题标题】:Exception in thread "main" java.lang.VerifyError: Bad type on operand stack线程“主”java.lang.VerifyError 中的异常:操作数堆栈上的类型错误
【发布时间】:2015-10-19 14:38:08
【问题描述】:

这个错误发生在 map-reduce 程序中,用于在给定的 input.txt 文件中查找 max-temperature。我写了两列,分别是年份和温度。

    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                 

    at org.apache.hadoop.mapred.LocalJobRunner.<init>(LocalJobRunner.java:422)
    at org.apache.hadoop.mapred.JobClient.init(JobClient.java:488)
    at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:473)
    at org.apache.hadoop.mapreduce.Job$1.run(Job.java:513)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
    at org.apache.hadoop.mapreduce.Job.connect(Job.java:511)
    at org.apache.hadoop.mapreduce.Job.submit(Job.java:499)
    at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
    at com.letsdobigdata.MaxTemperatureDriver.run(MaxTemperatureDriver.java:35)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at com.letsdobigdata.MaxTemperatureDriver.main(MaxTemperatureDriver.java:41)

【问题讨论】:

  • 您使用的是什么版本的 Java?
  • 目前我使用的是openjdk-7版本和eclipse kepler。
  • 这可能是 jdk 本身的错误。看看你的 jdk 的已知错误..

标签: java hadoop mapreduce


【解决方案1】:

请尝试将JDK版本降低到7。并从oracle站点下载JDK。

我可以用 JDK 7 解决这个问题。

【讨论】:

    【解决方案2】:

    这基本上是 JVM 执行堆栈上的类型不匹配

    绝对是 Hadoop 中的一个错误。

    【讨论】:

    • 感谢您的回答。但我知道我的错误是我放了足够多的 jar 文件,所以编译器可能会感到困惑。所以我只放了需要的 jar 文件,我得到了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2022-10-06
    • 1970-01-01
    • 2021-11-10
    • 2023-02-07
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多