2016-07-18 4 views
1

Ich habe Hadoop, Spark, R, Rstudio-Server und SparkR installiert, und ich versuche jetzt, Hive zu installieren.Installieren von Hive auf Ubuntu (Ärger mit Derby?)

Nach Tutorials im Internet, hier ist was ich getan habe:

$ cd /home/francois-ubuntu/media/ 
$ mkdir install-hive 
$ cd install-hive 
$ wget http://mirrors.ircam.fr/pub/apache/hive/hive-2.1.0/apache-hive-2.1.0-bin.tar.gz 
$ tar -xzvf apache-hive-2.1.0-bin.tar.gz 
$ mkdir /usr/lib/hive 
$ mv apache-hive-2.1.0-bin /usr/lib/hive 
$ cd 
$ rm -rf /home/francois-ubuntu/media/install-hive 
$ sudo vim ~/.bashrc 

In .bashrc, ich folgenden (ich bin auch mit den Linien in Bezug auf Java, Hadoop und Spark, vielleicht schrieb kann es hilfreich sein,):

# Set JAVA_HOME 
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 

# Set HADOOP_HOME 
alias hadoop=/usr/local/hadoop/bin/hadoop 
export HADOOP_HOME=/usr/local/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin 

# Set SPARK_HOME 
export SPARK_HOME=/usr/local/spark 

# Set HIVE_HOME 
export HIVE_HOME=/usr/lib/hive/apache-hive-2.1.0-bin 
PATH=$PATH:$HIVE_HOME/bin 
export PATH 

Zurück zur CLI:

$ cd /usr/lib/hive/apache-hive-2.1.0-bin/bin 
$ sudo vim hive-config.sh 

In hive-config.sh, I hinzufügen:

export HADOOP_HOME=/usr/local/hadoop 

Dann :wq, zurück zum CLI:

$ hadoop fs -mkdir /usr/hive/warehouse 
$ hadoop fs -chmod g+w /usr/hive/warehouse 

Und dann endlich:

$ hive 

Hier ist, was ich bekommen:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/usr/lib/hive/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 

Logging initialized using configuration in jar:file:/usr/lib/hive/apache-hive-2.1.0-bin/lib/hive-common-2.1.0.jar!/hive-log4j2.properties Async: true 
Mon Jul 18 12:13:44 CEST 2016 Thread[main,5,main] java.io.FileNotFoundException: derby.log (Permission denied) 
---------------------------------------------------------------- 
Mon Jul 18 12:13:45 CEST 2016: 
Booting Derby (version The Apache Software Foundation - Apache Derby - 10.10.2.0 - (1582446)) instance a816c00e-0155-fd7f-479a-0000040c9aa0 
on database directory /usr/lib/hive/apache-hive-2.1.0-bin/bin/metastore_db in READ ONLY mode with class loader [email protected] 
Loaded from file:/usr/lib/hive/apache-hive-2.1.0-bin/lib/derby-10.10.2.0.jar. 
java.vendor=Oracle Corporation 
java.runtime.version=1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14 
user.dir=/usr/lib/hive/apache-hive-2.1.0-bin/bin 
os.name=Linux 
os.arch=amd64 
os.version=4.4.0-28-generic 
derby.system.home=null 
Database Class Loader started - derby.database.classpath='' 

Und dann ... nichts, es hört auf ehe. Laut den Tutorials sollte ich die Hive-Eingabeaufforderung (hive>) an dieser Stelle haben, aber ich habe es nicht versucht, einige Hive-Befehle, sie funktionieren nicht. Ich habe auch nicht die klassische CLI-Eingabeaufforderung, keine Eingabeaufforderung, ich kann Dinge eingeben, aber ich kann nichts ausführen. Es scheint, das einzige, was ich tun kann, ist es mit STRG + C zu stoppen.

Irgendeine Idee, was ist los?

Danke.


Edit 1:

Nach this advice von @Hawknight folgte ich die Hilfe here gegeben, und tat das folgende:

sudo addgroup hive 
sudo useradd -g hive hive 
sudo adduser hive sudo 
sudo mkdir /home/hive 
sudo chown -R hive:hive /home/hive 
sudo chown -R hive:hive /usr/lib/hive/ 
visudo 

hinzugefügt, um diese Zeile zu sudoers-Datei:

hive ALL=(ALL) NOPASSWD:ALL 

Und dann zurück zu CLI:

sudo su hive 
hive 

Ich bekomme immer noch das gleiche Problem.


Edit 2:

folgte dem Rat von here, habe ich jetzt einen anderen Fehler.Der Fehlerausgang ist sehr lang, ich mag es vielleicht das Gefühl, nicht sinnvoll sein, alles zu kopieren, da die anderen Fehler wahrscheinlich von dem ersten stammen, so ist hier der Anfang:

SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/usr/lib/hive/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 

Logging initialized using configuration in jar:file:/usr/lib/hive/apache-hive-2.1.0-bin/lib/hive-common-2.1.0.jar!/hive-log4j2.properties Async: true 
Mon Jul 18 18:03:44 CEST 2016 Thread[main,5,main] java.io.FileNotFoundException: derby.log (Permission denied) 
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:578) 
    at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518) 
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705) 
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 
    at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:226) 
    at org.apache.hadoop.hive.ql.metadata.Hive.<init>(Hive.java:366) 
    at org.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:310) 
    at org.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:290) 
    at org.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:266) 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:545) 
    ... 9 more 

Bitte sagen Sie mir, wenn Sie den Rest wollen des Fehlerprotokolls.

+0

Dies sollte nicht die Ursache des Problems sein, aber Sie müssen die Werte Ihrer Umgebungseigenschaften nicht durch Anführungszeichen in Ihrem '.bashrc'-Beispiel umgeben. –

+0

Edited (die Frage und meine '. Bashrc'), danke. –

+0

Können Sie es einfach mit Ihrem Hauptbenutzer versuchen, den Sie während der Installation verwendet haben? (wiederhole die Schritte) –

Antwort

1

Die tatsächliche verwendete SLF4J-Bindung ist Log4j2. Damit dies funktioniert, benötigen Sie die entsprechenden Abhängigkeiten log4j-api und log4j-core für den Klassenpfad. Sie benötigen außerdem eine log4j2.xml-Konfiguration im Klassenpfad, da der Standardwert nur ERROR-Meldungen an die Konsole ausgibt. Das Log4j2-Handbuch enthält viele Beispielkonfigurationen.

Sie können auch slf4j-log4j12-1.7.10.jar aus Ihrem Klassenpfad entfernen.

+0

Waow, lass mich das alles googeln und für Fragen zurückkommen. In der Zwischenzeit, danke ich denke :) –

+1

Ich bin mir nicht sicher, das ist ein Problem mit log4j, es sieht eher aus wie ein Problem mit Derby. @fmalaussena Könnten Sie das versuchen: https://ubuntuforums.org/showthread.php?t=2254028? –

+0

Sicher. Muss ich einen neuen Benutzer namens 'hive' erstellen, oder sollte ich diese Berechtigungen meinem Hauptkonto geben? –