java.lang.RuntimeException: kan org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient niet instantiëren

Ik heb de versies Hadoop 2.7.1 en apache-hive-1.2.1 geïnstalleerd op ubuntu 14.0.

  1. Waarom treedt deze fout op?
  2. Is een metastore-installatie vereist?
  3. 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?
  4. 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:

  1. MijnSql
  2. Hadoop
  3. Hive
  4. Java

5. Uitvoeringsgedeelte:

  1. Start alle diensten van Hadoop: start-all.sh

  2. Voer het jps-commando in om te controleren of alle Hadoop-services actief zijn: jps

  3. 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 

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

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&amp;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 Mysqlbezoeken, 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 -initSchemauit 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;

Other episodes