Reply
Highlighted
New Contributor
Posts: 5
Registered: ‎04-05-2017
Accepted Solution

Unsupported major.minor version 51.0 in CDH 5.10

Clean install of CDH 5.10 - Running any hadoop ** command returns the "Unsupported major.minor version 51.0" error message on any node in the cluster.  Found while working through Testing the Installation....

 

Occurs with or without the "Java Home Directory" setting override in Hosts Configuration in Cloudera Manager.

 

hdfs@hadoop1:/> hadoop fs
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/fs/FsShell : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.apache.hadoop.fs.FsShell.  Program will exit.

 

login as: root
Using keyboard-interactive authentication.
Password:
Last login: Fri Apr 14 12:31:18 2017 from 10.4.4.44
hadoop1:~ # sudo su hdfs
hdfs@hadoop1:/root> hadoop version
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/util/VersionInfo : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.apache.hadoop.util.VersionInfo.  Program will exit

 

There are two versions of Java in /usr/java

   jdk1.6.0_31

   jdk1.7.0_67-cloudera

 

$PATH = /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

New Contributor
Posts: 5
Registered: ‎04-05-2017

Re: Unsupported major.minor version 51.0 in CDH 5.10

Found my $JAVA_HOME returns

/usr/java/jdk1.6.0_31

 

Unsure how to change this for all users to
/usr/java/jdk1.7.0_67-cloudera

Posts: 37
Topics: 0
Kudos: 7
Solutions: 6
Registered: ‎01-05-2015

Re: Unsupported major.minor version 51.0 in CDH 5.10

[ Edited ]

Hello Brian,

 

CDH 5.10 does not support JDK release versions below 1.7.x. Your JAVA_HOME must not point to jdk1.6.0_31. As this JDK is not supported by the platform I would recommend that you remove this JDK from all host in your environment as an inital troubleshooting step. You can also set environment variables like the Java Home in your global profiles, agent defaults, etc. However I would recommend removing the old JDK first.

 

https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#pcm_...

Customer Operations Engineer | Cloudera, Inc.
New Contributor
Posts: 5
Registered: ‎04-05-2017

Re: Unsupported major.minor version 51.0 in CDH 5.10

We uninstalled the earlier version of Java from all nodes, restarted all, and confirmed our $JAVA_HOME is now pointed to the correct version of Java. 

 

This corrected the issue and we were able to validate the environment.

New Contributor
Posts: 5
Registered: ‎04-07-2017

Re: Unsupported major.minor version 51.0 in CDH 5.10

[ Edited ]
@task
def install_jdk8_centos():
	sudo("yum install -y wget")
	sudo('cd /opt/ && tar xzf jdk-8u121-linux-x64.tar.gz && cd /opt/jdk1.8.0_121/')
	sudo("alternatives --install /usr/bin/java java /opt/jdk1.8.0_121/bin/java 2")
	sudo("alternatives --set java /opt/jdk1.8.0_121/bin/java")
	sudo("alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_121/bin/jar 2")
	sudo("alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_121/bin/javac 2")
	sudo("alternatives --set jar /opt/jdk1.8.0_121/bin/jar")
	sudo("alternatives --set javac /opt/jdk1.8.0_121/bin/javac")
	sudo("export JAVA_HOME=/opt/jdk1.8.0_121")
	sudo("export JRE_HOME=/opt/jdk1.8.0_121/jre")
	sudo("export PATH=$PATH:/opt/jdk1.8.0_121/bin:/opt/jdk1.8.0_121/jre/bin")
	sudo("echo JAVA_HOME=/opt/jdk1.8.0_121 | tee -a /etc/environment")
	sudo("echo JRE_HOME=/opt/jdk1.8.0_121/jre | tee -a /etc/environment")
	sudo("echo PATH=$PATH:/opt/jdk1.8.0_121/bin:/opt/jdk1.8.0_121/jre/bin | tee -a /etc/environment")

With that style of fabfile fabric script and setting the java home directory in CM, the infamous unsupported major.minor problem was vanquished for me.

 

Source of exquisite instructions: https://tecadmin.net/install-java-8-on-centos-rhel-and-fedora/

New Contributor
Posts: 5
Registered: ‎04-05-2017

Re: Unsupported major.minor version 51.0 in CDH 5.10

Here is the actual solution to uninstalling the lower version of JAVA located in the /usr/jdk-1.6.0_31-fcs.x86_64 directory.

 

  1. Determine if this java version was installed using RPM
    • Open the Terminal Window
    • Login as the super user
    • Try to find the package by typing: rpm -qa
      • Copy the long list of packages to a text editor so you can check for jdk-1.6.0_31-fcs.x86_64
        • Do a find for 'jdk-1.6.0_31-fcs.x86_64'
          • If found, it was installed using RPM and should be uninstalled using RPM
        • Go back to the Terminal Window
  2. RPM Uninstall
    • Verify the directory is there by going to the /usr/java directory and listing it's contents
      • cd /usr/java
      • ls -l
    • Check to see what your JAVA_HOME variable is set to
      • $JAVA_HOME
        • returns jdk-1.6.0_31-fcs.x86_64
    • Remove the lower version of Java using the RPM
      • rpm -e jdk-1.6.0_31-fcs.x86_64
    • Verify the directory has been removed 
      • ls -l
    • Exit the Terminal Window
      • Exit
  3. Open the Termina Window and login as the Super User
  4. Verify the JAVA_HOME has changed to the correct version of Java
    • $JAVA_HOME
      • Results should be the correct version of Java, not the old jdk-1.6.0_31-fcs.x86_64 or whatever version yours is that needed to be removed.
  5. Repeat 2-4 for each node in your cluster.

This is what I actually had to do to remove the offending version of Java and ensure that all nodes were running on the same version of JAVA.

Announcements