Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hadoop:不受支持的主版本52.0_Java_Hadoop - Fatal编程技术网

Java Hadoop:不受支持的主版本52.0

Java Hadoop:不受支持的主版本52.0,java,hadoop,Java,Hadoop,在你阅读我的问题之前,你应该知道这不是我已经读过的Stackoverflow上所有其他类似问题的重复 我已经使用Eclipse在Windows10(开发机器)上开发(并构建和编译)了一个Hadoop程序。该程序读取WARC文件并以JSON格式重写它们。它使用: 我在我的项目中添加了hadoop-2.6.0jars文件。 这是开发机器的java版本: $java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (b

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

我已经使用Eclipse在
Windows10
(开发机器)上开发(并构建和编译)了一个Hadoop程序。该程序读取WARC文件并以JSON格式重写它们。它使用:

我在我的项目中添加了
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)
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)
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)
我在
ubuntu14
machine(测试机)上测试了我的代码,它工作得非常好。这台机器有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
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)
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)
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)
我转到CentOS oracle服务器并运行了我的程序。此服务器的java版本与我的开发机器的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)
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)
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
以下是我尝试过但没有成功的方法

$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)
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)
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)
  • 将WARC阅读器的类作为类而不是jar添加到我的项目中,以使用正确的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时发生的

    我看到了你的答案,我尝试用Java1.7而不是1.8来构建UDF的JAR文件,它成功了


    我使用的是Cloudera Quickstart虚拟机,它将JAVA_HOME设置为JAVA 1.7

    这不是什么魔术,消息来自旧的JVM。尝试
    sudo替代方法--显示java
    或普通
    find
    以搜索实际用于执行作业的
    java
    。也许可以检查一下
    ps aux | grep java
    是否包含指向java的意外路径。除了JAVA8
    $sudo备选方案之外,我没有其他版本的java—显示java
    提供
    java—状态为手动。当前链接指向/opt/jdk1.8.0_151/bin/java/opt/jdk1.8.0_151/bin/java-优先级2当前最佳版本是/opt/jdk1.8.0_151/bin/java。
    您是如何解决的?您是安装了java-7并删除了以前的版本,还是升级了Cloudera java版本?