Les versions Hadoop 2.7.1 et Apache-Hive-1.2.1 sont installées sur Ubuntu 14.0.
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"
I did below modifications and I am able to start the Hive Shell without any errors:
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
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>
4.1 MySql
4.2 Hadoop
4.3 Hive
4.4 Java
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
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
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
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.
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
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
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.
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.
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
J'ai utilisé MySQL DB pour Hive MetaStore. Veuillez suivre les étapes ci-dessous:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastorecreateDatabaseIfNotExist=true&useSSL=false</value>
</property>
mysql -u hduser -p
drop database metastore
schematool -initSchema dbType mysql
Maintenant l'erreur ira.