web-dev-qa-db-fra.com

FAILED: HiveException Java.lang.RuntimeException: impossible d'instancier org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient

J'essaie de lancer Hive 3.1 avec Hadoop 3.0. Voici la configuration de mon système:

Ubuntu 18.04.1 LTS
Hadoop  version 3.0.3
Hive 3.1.0
Derby 10.14.2

Quand j'exécute les tables d'exposition; requête je reçois l'erreur suivante.

FAILED: HiveException Java.lang.RuntimeException: Unable to instantiate org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient

Vous trouverez ci-dessous l'erreur de détail dans le fichier journal Hive.

2018-09-05T11:38:25,952  INFO [main] conf.HiveConf: Found configuration file file:/usr/local/Apache-Hive-3.1.0-bin/conf/Hive-site.xml
2018-09-05T11:38:30,549  INFO [main] SessionState: Hive Session ID = 826ec55c-7fca-4fff-baa5-b5a010e5af89
2018-09-05T11:38:35,948  INFO [main] SessionState:
Logging initialized using configuration in jar:file:/usr/local/Apache-Hive-3.1.0-bin/lib/Hive-common-3.1.0.jar!/Hive-log4j2.properties Asy$
2018-09-05T11:38:47,015  INFO [main] session.SessionState: Created HDFS directory: /tmp/Hive/hadoop
2018-09-05T11:38:47,069  INFO [main] session.SessionState: Created local directory: /tmp/mydir
2018-09-05T11:38:47,096  INFO [main] session.SessionState: Created HDFS directory: /tmp/Hive/hadoop/826ec55c-7fca-4fff-baa5-b5a010e5af89
2018-09-05T11:38:47,104  INFO [main] session.SessionState: Created local directory: /tmp/mydir/826ec55c-7fca-4fff-baa5-b5a010e5af89
2018-09-05T11:38:47,122  INFO [main] session.SessionState: Created HDFS directory: /tmp/Hive/hadoop/826ec55c-7fca-4fff-baa5-b5a010e5af89/_$
2018-09-05T11:38:47,125  INFO [main] conf.HiveConf: Using the default value passed in for log id: 826ec55c-7fca-4fff-baa5-b5a010e5af89
2018-09-05T11:38:47,126  INFO [main] session.SessionState: Updating thread name to 826ec55c-7fca-4fff-baa5-b5a010e5af89 main
2018-09-05T11:38:50,476  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] metastore.HiveMetaStore: 0: Opening raw store with implementatio$
2018-09-05T11:38:50,695  WARN [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] metastore.ObjectStore: datanucleus.autoStartMechanismMode is set$
2018-09-05T11:38:50,714  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] metastore.ObjectStore: ObjectStore, initialize called
2018-09-05T11:38:50,717  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] conf.MetastoreConf: Found configuration file file:/usr/local/apa$
2018-09-05T11:38:50,719  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] conf.MetastoreConf: Unable to find config file hivemetastore-sit$
2018-09-05T11:38:50,720  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] conf.MetastoreConf: Found configuration file null
2018-09-05T11:38:50,722  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] conf.MetastoreConf: Unable to find config file metastore-site.xml
2018-09-05T11:38:50,722  INFO [826ec55c-7fca-4fff-baa5-b5a010e5af89 main] conf.MetastoreConf: Found configuration file null

Hive-site.xml

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>

Variables d'environnement dans .profile (j'essaie de configurer une installation effectuée par quelqu'un d'autre afin que les variables d'environnement soient configurées dans .profile au lieu de .bashrc même si Hadoop est exécuté manuellement)

#Hive
export Hive_HOME=/usr/local/Apache-Hive-3.1.0-bin
export Hive_CONF_DIR=/usr/local/Apache-Hive-3.1.0-bin/conf
export PATH=$Hive_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/Apache-Hive-3.1.0-bin/lib/*:.

#DERBY
DERBY_HOME=/usr/local/db-derby-10.14.2.0-bin
export PATH=$PATH:$DERBY_HOME/bin
export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytool$

Les messages d'erreur indiquent un fichier metastore-site.xml que je n'ai pas rencontré dans la configuration de Hive.

2
SriniShine

Je pense que Hive s'attend à trouver la base de données Derby dans le répertoire de travail actuel. Hive créera la base de données, car create=true dans javax.jdo.option.ConnectionURL property, mais n'initialisera pas le schéma dans la base de données.

Ma configuration:

  • Ubuntu 18.04.1 LTS
  • Hadoop 3.1.1
  • Ruche 3.1.0
  • Apache Derby des référentiels Ubuntu ( Version: 10.14.1.0-1ubuntu1 actuellement)

    Sudo apt installer des outils derby libderby-Java libderbyclient-Java

Selon Hive Documentation nous devons exécuter explicitement ShemaTool.

Je décide de conserver ma base de données Derby dans le répertoire Hive_HOME (/opt/Hive-3.1.0-bin dans mon cas). Vous pouvez configurer l'emplacement de la base de données Derby dans Hive-site.xml :

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:/opt/Hive-3.1.0-bin/metastore_db;databaseName=metastore_db;create=true</value>
</property>

Assurez-vous qu'il n'y a pas encore de base de données Derby:

$ ls $Hive_HOME/meta*
ls: cannot access '/opt/Hive-3.1.0-bin/meta*': No such file or directory

Commencez la ruche:

$ pwd
/home/hadoop
$ Hive
hive> show tables;
FAILED: HiveException Java.lang.RuntimeException: Unable to instantiate org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient
Hive> exit;

Nous avons maintenant la base de données Derby, mais elle n’est pas fonctionnelle:

$ ls -d $Hive_HOME/meta*
/opt/Hive-3.1.0-bin/metastore_db

Nous devons donc créer un schéma métada:

$ rm -rf $Hive_HOME/metastore_db
$ cd $Hive_HOME
$ schematool -initSchema -dbType derby
...
Initialization script completed
schemaTool completed

Maintenant Hive fonctionne comme prévu:

$ cd
$ Hive
hive> show tables;
OK
Time taken: 0.803 seconds
1
sOliver