在您阅读我的问题之前,您应该知道,这不是我已经阅读的stackoverflow上的所有其他类似问题的重复!
我使用Eclipse在Windows 10
(开发机(上开发了(并构建和编译(一个Hadoop程序。该程序读取WARC文件并以JSON格式重写。它使用这些类来覆盖可写的格式:
WarcFileInputFormat.java
WarcFileRecordReader.java
WritableWarcRecord.java
我在项目中添加了hadoop- 2.6.0
JARS文件。这是开发机器的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
这是我尝试过的东西,它们不起作用:
- 将WARC读者的类添加到我的项目中,作为类型的类,而不是使用正确的Java版本来构建它们。
- 将Hadoop Jar文件版本从
hadoop- 2.6.0
更改为hadoop- 2.6.0-cdh5.13.1
- 使用
mapred
代替mapreduce
,因为阅读器类使用mapred
我不确定是什么造成了这个问题,尤其是它指向我没有编写但从我上面提供的链接中添加到项目中的类warcfileinputformat.java。令我惊讶的是,该程序在具有较低Java版本的Ubuntu
机器上完美运行,但在具有与Windows
开发机器相同的Java版本的CentOS
服务器上不起作用!
有任何提示?
问题是Cloudera
使用较低版本的Java:
/usr/java/jdk1.7.0_67-cloudera/bin/java
我的错误消息与您的错误消息相同,当我实现蜂巢UDF时,我发生了。
我看到了您的答案,我尝试了Java 1.7而不是1.8来构建UDF的JAR文件,并且它起作用了。
我使用的是Cloudera Quickstart VM,它的Java_home设置为Java 1.7