Warm tip: This article is reproduced from serverfault.com, please click

java-Hadoop:不支持的major.minor 52.0版

(java - Hadoop: unsupported major.minor version 52.0)

发布于 2018-02-23 10:01:25

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

我已经Windows 10使用Eclipse(开发机器)上开发(以及构建和编译)了Hadoop程序该程序读取WARC文件并以JSON格式重写它们。它使用这些类重写Writable格式

WarcFileInputFormat.java
WarcFileRecordReader.java
WritableWarcRecord.java 

我将hadoop- 2.6.0jar文件添加到我的项目中。这是开发机的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阅读器的类添加为我的项目,而不是将其添加为jar,以便使用正确的Java版本构建它们。
  2. 将Hadoop jar文件版本从更改hadoop- 2.6.0hadoop- 2.6.0-cdh5.13.1
  3. 使用mapred而不是mapreduce阅读器类正在使用mapred

我不确定是什么导致了这个问题,尤其是它指向类WarcFileInputFormat.java,该类我没有编写,但是通过上面提供的链接添加到了我的项目中。令我惊讶的是,该程序在Ubuntu具有较低Java版本的机器上可以完美运行,但是CentOS在与Windows开发机器具有相同Java版本服务器上却无法运行

有什么提示吗?

Questioner
sareem
Viewed
0
sareem 2018-02-24 17:01:42

问题是Cloudera使用了较低版本的JAVA:

/usr/java/jdk1.7.0_67-cloudera/bin/java