Hadoop:不受支持的major.minor版本52.0

时间:2018-02-23 10:01:26

标签: java hadoop

在您阅读我的问题之前,您应该知道它与我已经阅读的Stackoverflow上的所有其他类似问题并不重复!

我使用Eclipse在Windows 10(开发机器)上开发(并构建和编译)了一个Hadoop程序。该程序读取WARC文件并以JSON格式重写它们。它使用these classes to override the Writable format

WarcFileInputFormat.java
WarcFileRecordReader.java
WritableWarcRecord.java 

我将hadoop- 2.6.0个jar文件添加到我的项目中。 这是开发机器的java版本:

$java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

我在Ubuntu 14机器(测试机器)上测试了我的代码,它运行得很好。这台机器有hadoop- 2.6.0

Hadoop 2.6.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using /home/username/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar

这是测试机器的java版本:

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

我搬到了CentOS oracle服务器并运行了我的程序。此服务器具有与我的开发机器相同的java版本

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

它有这个Hadoop版本:

Hadoop 2.6.0-cdh5.13.1
Subversion http://github.com/cloudera/hadoop -r 0061e3eb8ab164e415630bca11d299a7c2ec74fd
Compiled by jenkins on 2017-11-09T16:37Z
Compiled with protoc 2.5.0
From source with checksum 16d5272b34af2d8a4b4b7ee8f7c4cbe
This command was run using /opt/cloudera/parcels/CDH-5.13.1-1.cdh5.13.1.p0.2/jars/hadoop-common-2.6.0-cdh5.13.1.jar

在这台服务器上,每项工作都出现以下错误:

18/02/23 11:59:45 INFO mapreduce.Job: Task Id : attempt_1517308433710_0012_m_000003_0, Status : FAILED
Error: data/warc/WarcFileInputFormat : Unsupported major.minor version 52.0

以下是我尝试的内容,但它们无效

  1. 将WARC读者的类添加到我的项目中,而不是使用正确的java版本来构建它们的类。
  2. 将Hadoop jar文件版本从hadoop- 2.6.0更改为hadoop- 2.6.0-cdh5.13.1
  3. 使用mapred代替mapreduce作为读者类正在使用mapred
  4. 我不确定究竟是什么导致了这个问题,特别是它指向我没写过的类WarcFileInputFormat.java,但是从我上面提供的链接添加到我的项目中。让我感到惊讶的是,该程序在具有较低java版本的Ubuntu机器上运行良好,但在与CentOS开发版具有相同java版本的Windows服务器上无效机!

    任何提示?

2 个答案:

答案 0 :(得分:1)

问题是>>> eval("if (true) 4; else 5;") 4 >>> eval("if (true) 4; else 5;") 5 >>> eval("for (let i = 0; i < 10; i++) 7") 7 >>> eval("for (let i = 0; i < 10; i++) {}") undefined >>> eval("var express = 4") undefined 使用较低版本的JAVA:

Cloudera

答案 1 :(得分:0)

我遇到的错误消息与您的相同,这是我在实施Hive UDF时发生的。

我看到了您的答案,并尝试使用Java 1.7而不是1.8来构建UDF的JAR文件,并且有效。

我使用的是Cloudera Quickstart VM,它的JAVA_HOME设置为Java 1.7