java.lang.RuntimeException: imansible istanziare org.apache.hadoop.hive.metastore.HiveMetaStoreClient

Ho configurato il mio Hive come indicato sul link: http://www.youtube.com/watch?v=Dqo1ahdBK_A , ma sto riscontrando il seguente errore durante la creazione di una tabella in Hive. Sto usando hadoop-1.2.1 e hive-0.12.0.

hive> create table employee(emp_id int,name string,salary double); FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient 

Sembra un problema con il tuo metastore. Se si utilizza il derby incorporato di metastore hive predefinito. Il file di blocco sarebbe lì in caso di uscita anomala. se rimuovi il file di blocco, questo problema verrebbe risolto

 rm metastore_db/*.lck 

Questo potrebbe essere un problema con il metastore come il sachinjose descritto o un problema di connessione. Esegui la console hive in modalità debug in questo modo:

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

Quindi esegui una semplice query come show tables; e vedi cosa succede Mi sono imbattuto in questo problema dopo il riavvio di un namenode ed era dovuto all’impostazione dell’host sbagliato nei file di configurazione (ec2 genera un nuovo IP / hostname privato al riavvio).

Esegui questo comando dalla console:

 ./hive -hiveconf hive.root.logger=DEBUG,console 

Ora corri

 show databases; 

Se vedi un’eccezione come di seguito:

 java.sql.SQLException: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. 

Significa che c’è un problema con le autorizzazioni con metastore_db. È necessario modificare le autorizzazioni della cartella completa. Sto gestendo il mio hive come utente di hdfs. Quindi, ho usato il comando

 chown -R hdfs:hadoop * 

nella directory hive. Questo ha risolto il problema.

 hive> show databases; FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask 

Per risolvere questo problema, avviare prima i servizi hadoop.

 $ start-all.sh 

Allora corro

 hive> show database; 

Funziona bene per me.

 rm metastore_db/*.lck 

Funziona anche per me. Può essere trovato nella directory home/user . È ansible utilizzare il comando locate per trovarlo: locate metastore_db

Dopo aver rimosso i file di blocco, chiudi la sessione corrente. Chiama shell hive nella nuova sessione

make hive.metastore.schema.verification = false nel file hive-site.xml questo errore verrà rimosso. Nel mio caso funziona bene.

Il riavvio della macchina virtuale o del sistema dovrebbe anche sbloccare il blocco.

questo potrebbe essere dovuto a più di “metastore_db”. Rimuovi “metastore_db”, riavvia il cluster hadoop e apri la shell hive dalla cartella $ HIVE_HOME / bin

La risposta si trova in http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/5.0/CDH5-Installation-Guide/cdh5ig_hive_schema_tool.html

Per sopprimere il controllo dello schema e consentire al metastore di modificare implicitamente lo schema, è necessario impostare la proprietà di configurazione hive.metastore.schema.verification su false in hive-site.xml.

Essendo un principiante ho lo stesso insieme di errori.
Si è constatato che uno dei demoni nel mio caso namenode non è stato avviato. Installando hadoop sarebbe saggio prendere l’abitudine di colpire i seguenti comandi:
ps -ef | grep “namenode”
ps -ef | grep “datanode”
ps -ef | grep “tracker”

È necessario controllare il registro pertinente se uno dei demoni non funziona.

Se è nella macchina locale, sembra che tu abbia un altro terminale aperto con shell / sessione hive. È ansible avere una sola sessione utilizzando la base dati derby incorporata. Chiudi tutte le altre sessioni di hive e prova.

cancella il codice in hive-site.xml e incolla questo codice in hive-site.xml.

     javax.jdo.option.ConnectionURL jdbc:derby:;databaseName=/home/hadoop/Desktop/apache-hive-2.1.1-bin/metastore_db;create=true  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.    hive.metastore.warehouse.dir /user/hive/warehouse location of default database for the warehouse   hive.metastore.uris  Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.   javax.jdo.option.ConnectionDriverName org.apache.derby.jdbc.EmbeddedDriver Driver class name for a JDBC metastore   javax.jdo.PersistenceManagerFactoryClass org.datanucleus.api.jdo.JDOPersistenceManagerFactory class implementing the jdo persistence   

Stavo affrontando lo stesso problema ci sono alcuni punti importanti che potrebbero risolvere questo problema.

1. Metti quanto segue all’inizio di hive-site.xml

   system:java.io.tmpdir /tmp/hive/java   system:user.name ${user.name}   javax.jdo.option.ConnectionURL jdbc:derby:,databaseName=$HIVE_HOME/metastore_db;create=true JDBC connect string for a JDBC metastore   

questo è impostato sul percorso relativo nell’URI assoluto e sulla configurazione di Metastore in cui è archiviato il database

$HIVE_HOME/metastore_db ma $HIVE_HOME/metastore_db presente che questo rimuoverà completamente lo schema!

3. Ora, è necessario inizializzare il database Derby. Per impostazione predefinita, Hive utilizza il database Derby

$ HIVE_HOME / bin / schematool -initSchema -dbType derby

Suppongo anche che la tua variabile d’ambiente sia stata impostata correttamente, altrimenti ti preghiamo di controllarli come di seguito:

 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 

quindi eseguire il comando hive e digitare show databases;

Stavo affrontando lo stesso problema: ho utilizzato i seguenti passaggi per risolverlo:

  1. Crea un file hive-site.xml e inserisci i dettagli (per la modalità Locale / Prod). Assicurati che la posizione sottostante esista / home / hadoop / bhishm / warehouse

    Esempio:

         hive.metastore.warehouse.dir /home/hadoop/bhishm/warehouse  Local or HDFS directory where Hive keeps table contents.    hive.metastore.local true  Use false if a production metastore server is used.    javax.jdo.option.ConnectionURL jdbc:derby:;databaseName=/home/hadoop/bhishm/warehouse/metastore_db;create=true  The JDBC connection URL.    
  2. Modifica hive-env.sh -> aggiungi il percorso java come prima riga dopo aver ridotto l’utilizzo della memoria:

    Esempio:

     # Hive Client memory usage can be an issue if a large number of clients # are running at the same time. The flags below have been useful in # reducing memory usage: # The java implementation to use. Required. export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 
  3. Esegui la query hive.