Ik heb de versies Hadoop 2.7.1 en apache-hive-1.2.1 geïnstalleerd op ubuntu 14.0.
- Waarom treedt deze fout op?
- Is een metastore-installatie vereist?
- Als we het hive-commando in de terminal typen hoe de xml’s intern worden genoemd, wat is dan de stroom van die xml’s?
- Is er nog een andere configuratie nodig?
Als ik het hive-commando schrijf op de ubuntu 14.0-terminal, wordt de onderstaande uitzondering gegenereerd.
$ 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
Om bovenstaande fout te voorkomen, heb ik Hive-Site.xml gemaakt met:
<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>
leverde ook de omgevingsvariabelen op in ~/.bashrc file
; Nog steeds de fout volharden
#HIVE home directory configuration
export HIVE_HOME=/usr/local/hive/apache-hive-1.2.1-bin
export PATH="$PATH:$HIVE_HOME/bin"
Antwoord 1, Autoriteit 100%
Ik deed hieronder modificaties en ik kan de hive-shell starten zonder fouten:
1. ~ / .bashrc
Inside Bashrc-bestand Voeg de onderstaande omgevingsvariabelen toe aan het einde van het bestand: 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
U moet dit bestand (hive-site.xml) maken in de conf-directory van Hive en de onderstaande details toevoegen
<?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. Je moet ook het jar-bestand (mysql-connector-java-5.1.28.jar) in de lib-directory van Hive
plaatsen
4. Onderstaande installaties zijn vereist op uw Ubuntu om de Hive Shell te starten:
- MijnSql
- Hadoop
- Hive
- Java
5. Uitvoeringsgedeelte:
-
Start alle diensten van Hadoop: start-all.sh
-
Voer het jps-commando in om te controleren of alle Hadoop-services actief zijn: jps
-
Voer het hive-commando in om de hive-shell binnen te gaan: hive
Antwoord 2, autoriteit 90%
het starten van de hive-metastore-service werkte voor mij.
Stel eerst de database in voor hive metastore:
$ hive --service metastore
Ten tweede, voer de volgende opdrachten uit:
$ schematool -dbType mysql -initSchema
$ schematool -dbType mysql -info
https://cwiki.apache.org/confluence/display/ Hive/Hive+Schema+Tool
Antwoord 3, autoriteit 50%
Als je gewoon in de lokale modus aan het spelen bent, kun je metastore DB verwijderen en opnieuw instellen:
rm -rf metastore_db/
$HIVE_HOME/bin/schematool -initSchema -dbType derby
Antwoord 4, autoriteit 37%
In mijn geval toen ik het probeerde
$ hive --service metastore
Ik heb
MetaException(message:Versie-informatie niet gevonden in metastore. )
De benodigde tabellen voor de metastore ontbreken in MySQL. Maak handmatig de tabellen en herstart hive metastore.
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;
Metastore DB Naam Moet overeenkomen met de database-naam die wordt vermeld in Hive-Site.xml Files Connection Tag.
Hive-schema-2.x.x.mySQL.SQL Bestand is afhankelijk van de versie die beschikbaar is in de huidige map. Probeer het laatst te gaan omdat het ook veel oude schema-bestanden bevat.
Probeer nu uit te voeren hive --service metastore
Als alles koel gaat, start dan gewoon de bijenkorf van Terminal.
>hive
Ik hoop dat het bovenstaande antwoord uw behoefte dient.
Antwoord 5, Autoriteit 20%
Voer hive in Debug-modus
hive -hiveconf hive.root.logger=DEBUG,console
en voer vervolgens
uit
show tables
kan het daadwerkelijke probleem
vinden
Antwoord 6, Autoriteit 10%
Ik heb MySQL DB gebruikt voor bijenkorf metastore. Volg de onderstaande stappen:
- in Hive-Site.xml De Metastore zou de juiste moeten zijn
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastorecreateDatabaseIfNotExist=true&useSSL=false</value>
</property>
- Ga naar de MySQL:
mysql -u hduser -p
- Voer vervolgens uit
drop database metastore
- Kom dan uit MySQL en voer
schematool -initSchema dbType mysql
Nu fout gaat.
Antwoord 7, Autoriteit 7%
In het midden van het stapelspoor, verloren in de “reflectie” -rommel, kunt u de oorzaak vinden:
Het opgegeven datastore-stuurprogramma (“com.mysql.jdbc.Driver”) is niet gevonden in het CLASSPATH. Controleer uw CLASSPATH-specificatie en de naam van het stuurprogramma.
Antwoord 8, autoriteit 7%
Dit komt waarschijnlijk door het ontbreken van verbindingen met de Hive Meta Store, mijn hive Meta Store is opgeslagen in Mysql
, dus ik moet Mysql
bezoeken, dus ik voeg een afhankelijkheid toe in mijn build.sbt
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.38"
en het probleem is opgelost!
Antwoord 9, autoriteit 7%
mijn bijenkorf-metastore is niet consistent! Ik zit in deze scène.
eerst. ik ren
$ schematool -dbType mysql -initSchema
toen vond ik dit
Fout: dubbele sleutelnaam ‘PCS_STATS_IDX’ (state=42000,code=1061)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema-initialisatie mislukt! Metastore-status zou inconsistent zijn !!
dan ren ik
$ schematool -dbType mysql -info
deze fout gevonden
Hive-distributieversie: 2.3.0
Metastore-schemaversie: 1.2.0
org.apache.hadoop.hive.metastore.HiveMetaException: Metastore-schemaversie is niet compatibel. Hive-versie: 2.3.0, databaseschema-versie: 1.2.0
dus ik formatteer mijn bijenkorf metastore, dan is het klaar!
- laat mysql-database vallen, de database met de naam
hive_db
- voer
schematool -dbType mysql -initSchema
uit om metadata te initialiseren
Antwoord 10, autoriteit 3%
Ik heb ook met dit probleem te maken gehad, maar ik moest Hadoop opnieuw opstarten en het commando hadoop dfsadmin -safemode leave gebruiken
start nu hive, het zal werken denk ik
Antwoord 11, autoriteit 3%
Ik heb dit probleem opgelost door –deploy-mode cluster uit spark-submit-code te verwijderen.
Spark-submit neemt standaard de clientmodus, wat het volgende voordeel heeft:
1. It opens up Netty HTTP server and distributes all jars to the worker nodes.
2. Driver program runs on master node , which means dedicated resources to driver process.
In clustermodus:
1. It runs on worker node.
2. All the jars need to be placed in a common folder of the cluster so that it is accessible to all the worker nodes or in folder of each worker node.
Hier heeft het geen toegang tot de hive-metastore omdat de hive-jar niet beschikbaar is voor een van de knooppunten in het cluster.
Antwoord 12, autoriteit 3%
open gewoon de hive-terminal vanuit de hive-map, na het bewerken van (bashrc) en (hive-site.xml) bestanden.
Stappen–
open de hive-map waar het is geïnstalleerd.
open nu terminal vanuit map.
Antwoord 13
In mijn geval heb ik mijn docker-hive-container gestopt en opnieuw uitgevoerd en uiteindelijk werkte het. Ik hoop dat het nuttig zal zijn voor iemand.
Opmerking:dit kan worden veroorzaakt doordat er mogelijk een instantie op de achtergrond actief is, dus als u de container stopt, worden alle achtergrondinstanties gestopt.
Antwoord 14
Dit gebeurt omdat je de Hive Metastore NIET hebt gestart … de eenvoudigste manier om dat te doen is door de standaard Derby-database te gebruiken … je kunt deze link volgen: https://sparkbyexamples .com/apache-hive/hive-hiveexception-java-lang-runtimeexception-unable-to-instantiate-org-apache-hadoop-hive-ql-metadata-sessionhivemetastoreclient/
Antwoord 15
je hoeft alleen maar een schema te maken en je kunt hetzelfde doen met de onderstaande commando’s. Ik heb het gedaan en kan hive-query uitvoeren zonder te gooien
FOUT:Kan org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient niet instantiëren
cd $HIVE_HOME
mv metastore_db metastore_db_bkup
schematool -initSchema -dbType derby
bin/hive
voer nu uw zoekopdracht uit:
hive> show databases;