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

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

我不确定究竟是什么导致了这个问题,特别是它指向了我没有编写但从我上面提供的链接添加到我的项目的类 WarcFileInputFormat.java。令我惊讶的是,该程序在java版本较低的Ubuntu机器上运行良好,但在与java版本相同的CentOS服务器上无法运行Windows开发机!

有什么提示吗?

最佳答案

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

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

关于java - Hadoop:不支持的 major.minor 版本 52.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48945291/

相关文章:

java - 纯Java中两个ArrayLists的内部连接

java - 监控每个被调用的方法

hadoop - 带有Snappy压缩的ORC文件是否可在 strip 分割?

hadoop - 将文件从远程 Unix 和 Windows 服务器复制到 HDFS,无需中间暂存

hadoop - 从oozie运行时,nutch 1.7会将更改文件系统保留为本地文件

java - 如何将图标添加到JPanel

java - 任何覆盖更多汉字的 JTextField 后代或替代者?

Java:从 XML 文件重复读取的性能

java - 将自定义方法添加到 JButton 类

csv - 有什么方法可以只从 Pig 中的 CSV 中读取所需的列吗?