web-dev-qa-db-fra.com

java.lang.RuntimeException: impossible d'instancier org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient

Les versions Hadoop 2.7.1 et Apache-Hive-1.2.1 sont installées sur Ubuntu 14.0. 

  1. Pourquoi cette erreur se produit?
  2. Une installation de métastore est-elle requise?
  3. Lorsque nous tapons la commande Hive sur terminal, comment le XML appelle-t-il en interne, quel est le flux de ces XML?
  4. Toute autre configuration est nécessaire?

Lorsque j'écris la commande Hive sur le terminal ubuntu 14.0, elle lance l'exception ci-dessous.

 $ Hive

    Logging initialized using configuration in jar:file:/usr/local/Hive/Apache-Hive-1.2.1-bin/lib/Hive-common-1.2.1.jar!/Hive-log4j.properties
    Exception in thread "main" Java.lang.RuntimeException: Java.lang.RuntimeException: Unable to instantiate org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient
        at org.Apache.hadoop.Hive.ql.session.SessionState.start(SessionState.Java:522)
        at org.Apache.hadoop.Hive.cli.CliDriver.run(CliDriver.Java:677)
        at org.Apache.hadoop.Hive.cli.CliDriver.main(CliDriver.Java:621)
        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:520)
        at org.Apache.hadoop.util.RunJar.run(RunJar.Java:221)
        at org.Apache.hadoop.util.RunJar.main(RunJar.Java:136)
    Caused by: Java.lang.RuntimeException: Unable to instantiate org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient
        at org.Apache.hadoop.Hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.Java:1523)
        at org.Apache.hadoop.Hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.Java:86)
        at org.Apache.hadoop.Hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.Java:132)
        at org.Apache.hadoop.Hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.Java:104)
        at org.Apache.hadoop.Hive.ql.metadata.Hive.createMetaStoreClient(Hive.Java:3005)
        at org.Apache.hadoop.Hive.ql.metadata.Hive.getMSC(Hive.Java:3024)
        at org.Apache.hadoop.Hive.ql.session.SessionState.start(SessionState.Java:503)
        ... 8 more
    Caused by: Java.lang.reflect.InvocationTargetException
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
        at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
        at Java.lang.reflect.Constructor.newInstance(Constructor.Java:426)
        at org.Apache.hadoop.Hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.Java:1521)
        ... 14 more
    Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
    NestedThrowables:
    Java.lang.reflect.InvocationTargetException
        at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.Java:587)
        at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.Java:788)
        at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.Java:333)
        at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.Java:202)
        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:520)
        at javax.jdo.JDOHelper$16.run(JDOHelper.Java:1965)
        at Java.security.AccessController.doPrivileged(Native Method)
        at javax.jdo.JDOHelper.invoke(JDOHelper.Java:1960)
        at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.Java:1166)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.Java:808)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.Java:701)
        at org.Apache.hadoop.Hive.metastore.ObjectStore.getPMF(ObjectStore.Java:365)
        at org.Apache.hadoop.Hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.Java:394)
        at org.Apache.hadoop.Hive.metastore.ObjectStore.initialize(ObjectStore.Java:291)
        at org.Apache.hadoop.Hive.metastore.ObjectStore.setConf(ObjectStore.Java:258)
        at org.Apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.Java:76)
        at org.Apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.Java:136)
        at org.Apache.hadoop.Hive.metastore.RawStoreProxy.<init>(RawStoreProxy.Java:57)
        at org.Apache.hadoop.Hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.Java:66)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStore$HMSHandler.newRawStore(HiveMetaStore.Java:593)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.Java:571)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.Java:624)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.Java:461)
        at org.Apache.hadoop.Hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.Java:66)
        at org.Apache.hadoop.Hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.Java:72)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.Java:5762)
        at org.Apache.hadoop.Hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.Java:199)
        at org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.Java:74)
        ... 19 more
    Caused by: Java.lang.reflect.InvocationTargetException
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
        at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
        at Java.lang.reflect.Constructor.newInstance(Constructor.Java:426)
        at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.Java:631)
        at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.Java:325)
        at org.datanucleus.store.AbstractStoreManager.registerConnectionFactory(AbstractStoreManager.Java:282)
        at org.datanucleus.store.AbstractStoreManager.<init>(AbstractStoreManager.Java:240)
        at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.Java:286)
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
        at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
        at Java.lang.reflect.Constructor.newInstance(Constructor.Java:426)
        at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.Java:631)
        at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.Java:301)
        at org.datanucleus.NucleusContext.createStoreManagerForProperties(NucleusContext.Java:1187)
        at org.datanucleus.NucleusContext.initialise(NucleusContext.Java:356)
        at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.Java:775)
        ... 48 more
    Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "BONECP" plugin to create a ConnectionPool gave an error : The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
        at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.Java:259)
        at org.datanucleus.store.rdbms.ConnectionFactoryImpl.initialiseDataSources(ConnectionFactoryImpl.Java:131)
        at org.datanucleus.store.rdbms.ConnectionFactoryImpl.<init>(ConnectionFactoryImpl.Java:85)
        ... 66 more
    Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
        at org.datanucleus.store.rdbms.connectionpool.AbstractConnectionPoolFactory.loadDriver(AbstractConnectionPoolFactory.Java:58)
        at org.datanucleus.store.rdbms.connectionpool.BoneCPConnectionPoolFactory.createConnectionPool(BoneCPConnectionPoolFactory.Java:54)
        at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.Java:238)
        ... 68 more

Pour éviter les erreurs ci-dessus, j'ai créé Hive-site.xml avec:

 <configuration>

      <property>
        <name>Hive.metastore.warehouse.dir</name>
        <value>/home/local/Hive-metastore-dir/warehouse</value>

      </property>

    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>user</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>password</value>
    </property>

    <configuration>

Également fourni les variables d'environnement dans ~/.bashrc file; Toujours l'erreur persiste

#Hive home directory configuration
export Hive_HOME=/usr/local/Hive/Apache-Hive-1.2.1-bin
export PATH="$PATH:$Hive_HOME/bin"
14
Arti Nalawade
I did below modifications and I am able to start the Hive Shell without any errors:

1. ~/.bashrc

Dans le fichier bashrc, ajoutez les variables d'environnement ci-dessous à la fin du fichier: Sudo gedit ~/.bashrc

#Java Home directory configuration
export Java_HOME="/usr/lib/jvm/Java-9-Oracle"
export PATH="$PATH:$Java_HOME/bin"

# Hadoop home directory configuration
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

export Hive_HOME=/usr/lib/Hive
export PATH=$PATH:$Hive_HOME/bin

2. Hive-site.xml

Vous devez créer ce fichier (Hive-site.xml) dans le répertoire conf de Hive et ajouter les détails ci-dessous.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
</property>


<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>root</value>
</property>

<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>true</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>

<property>
 <name>datanucleus.autoCreateTables</name>
 <value>True</value>
 </property>

</configuration>

3. Vous devez également placer le fichier jar (mysql-connector-Java-5.1.28.jar) dans le répertoire lib de Hive

4. Les installations ci-dessous requises sur votre Ubuntu pour démarrer Hive Shell:

    4.1 MySql
    4.2 Hadoop
    4.3 Hive
    4.4 Java

5. Partie d'exécution:

1. Start all services of Hadoop: start-all.sh

2. Enter the jps command to check whether all Hadoop services are up and running: jps

3. Enter the Hive command to enter into Hive Shell: Hive
19
Arti Nalawade

le démarrage du service Hive Metastore a fonctionné pour moi ..__ D'abord, configurez la base de données pour Hive Metastore:

 $ Hive --service metastore 

` https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.4/bk_installing_manually_book/content/validate_installation.html

Deuxièmement, exécutez les commandes suivantes:

 $ schematool -dbType mysql -initSchema  
 $ schematool -dbType mysql -info

https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool

14
Ravi Vyas

Dans mon cas quand j'ai essayé

$ Hive --service metastore 

J'ai eu 

MetaException (message: information de version introuvable dans le métastore.)

Les tables nécessaires pour le métastore sont manquantes dans MySQL. Créez manuellement les tables et redémarrez le métastore Hive.

cd $Hive_HOME/scripts/metastore/upgrade/mysql/ 

< Login into MySQL > 

mysql> drop database IF EXISTS <metastore db name>; 
mysql> create database <metastore db name>; 
mysql> use <metastore db name>; 
mysql> source Hive-schema-2.x.x.mysql.sql; 

nom de la base de données metastore doit correspondre au nom de la base de données mentionné dans la balise de propriété de connexion des fichiers Hive-site.xml.

Hive-schema-2.x.x.mysql.sql fichier dépend de la version disponible dans le répertoire en cours. Essayez de choisir le dernier car il contient également de nombreux anciens fichiers de schéma.

Maintenant, essayez d’exécuter Hive --service metastore Si tout va bien, démarrez simplement le Hive à partir du terminal.

>Hive

J'espère que la réponse ci-dessus répond à vos besoins.

8
vijayraj34

Si vous vous contentez de jouer en mode local, vous pouvez supprimer la base de données metastore et la rétablir:

rm -rf metastore_db/
$Hive_HOME/bin/schematool -initSchema -dbType derby
2
Ajeden

Exécuter Hive en mode débogage

Hive -hiveconf Hive.root.logger=DEBUG,console

et ensuite exécuter 

show tables

peut trouver le problème réel

1
Vignesh

Au milieu de la trace de la pile, perdue dans le fichier "réflexion", vous pouvez trouver la cause première:

Le pilote de banque de données spécifié ("com.mysql.jdbc.Driver") est introuvable dans CLASSPATH. Veuillez vérifier vos spécifications CLASSPATH et le nom du pilote.

1
Samson Scharfrichter

Supprimez MetaStore_db de votre répertoire hadoop et formatez vos fichiers hdf avec hadoop namenode -format, puis essayez de redémarrer votre hadoop avec start-all.sh.

0
Nitin

J'ai également fait face à ce problème mais j'avais redémarrer Hadoop et utiliser la commande hadoop dfsadmin -safemode leave

maintenant commence Hive cela fonctionnera je pense

0
Akash

J'ai utilisé MySQL DB pour Hive MetaStore. Veuillez suivre les étapes ci-dessous: 

  • dans Hive-site.xml, le metastore devrait être correct
<property>
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://localhost/metastorecreateDatabaseIfNotExist=true&amp;useSSL=false</value>
</property>
  • aller au mysql: mysql -u hduser -p
  • puis lancez drop database metastore
  • puis sortez de MySQL et exécutez schematool -initSchema dbType mysql

Maintenant l'erreur ira.

0
arunava maiti