Стартовый сервер PredictionIO выдает ошибки неподдерживаемой версии класса в centos 6

Я установил прогнозирование в RHEL 6.6. Но когда я запускаю pio с помощью pio-start-all, я получаю следующую ошибку:

$ pio-start-all 
Starting Elasticsearch...
Starting HBase...
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/util/HBaseConfTool : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: org.apache.hadoop.hbase.util.HBaseConfTool. Program will exit.
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/zookeeper/ZKServerTool : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: org.apache.hadoop.hbase.zookeeper.ZKServerTool. Program will exit.
starting master, logging to /home/itdevel/PredictionIO/vendors/hbase-1.0.0/bin/../logs/hbase-itdevel-master-Puget-129416.out
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/master/HMaster : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
starting regionserver, logging to /home/itdevel/PredictionIO/vendors/hbase-1.0.0/bin/../logs/hbase-itdevel-1-regionserver-Puget-129416.out
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/regionserver/HRegionServer : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
Waiting 10 seconds for HBase to fully initialize...
Starting PredictionIO Event Server...

pio сервер все-таки не запускается. Я создал нового пользователя и установил java для этого пользователя, так как общесистемная установка java 1.6. Я успешно установил java 1.8 для нового пользователя

$java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Я отредактировал путь в pio-start-all так, чтобы он указывал на мою установку Java, поскольку pio-start-all не может найти jdp. Я проверил свой путь Java.

 $echo $JAVA_HOME
/home/me/jdk1.8.0_45/bin

После изменения пути в pio-start-all с /home/me/jdk1.8.0_45/bin/bin на /home/me/jdk1.8.0_45/bin ошибка jdp была исправлена, но я поражен текущей ошибкой. Я установил pio на пару компьютеров и серверов с Ubuntu, настроил pio в соответствии с требованиями моего пользовательского шаблона движка, и он работает без проблем. Поддерживает ли PredictionIO Redhat? Надеюсь, это все, что вам нужно отследить ошибку. заранее спасибо :)


person cutteeth    schedule 01.07.2015    source источник


Ответы (2)


java.lang.UnsupportedClassVersionError определенно вызывается, когда pio-start-all или другие сценарии, которые он запускает, по-прежнему используют более раннюю версию Java, чем требуется predictionIO. Вы должны тщательно проверить, какая версия Java используется.

Один из способов — попробовать под root:

alternatives --config java

У вас будет что-то вроде этого

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode

Press enter to keep the current choice[*], or type selection number:

Выберите последнюю версию Java.

Вы также можете настроить JAVA_HOME. Пожалуйста, ознакомьтесь с инструкциями для RedHat.

person Antonio    schedule 01.07.2015
comment
Но это общесистемно. В моем случае есть другие, использующие тот же сервер, и они используют java 1.6. Итак, как я могу заставить прогнозирование использовать java 1.8 вместо alternatives --config java? Я думаю, что java 1.8 уже установлена ​​для нового использования, так как java -version возвращает java version "1.8.0_45". - person cutteeth; 02.07.2015

Я решил проблему. В моем случае hbase указывал на неправильную установку Java. После обновления JAVA_HOME в /home/me/PredictionIO/vendors/hbase-1.0.0/bin/hbase hbase заработала, и моя проблема была исправлена. Спасибо за поддержку :)

person cutteeth    schedule 02.07.2015