web-dev-qa-db-ja.com

java.lang.RuntimeException:org.Apache.hadoop.Hive.ql.metadata.SessionHiveMetaStoreClientをインスタンス化できません

Habunoop 2.7.1およびApache-Hive-1.2.1バージョンをubuntu 14.0にインストールしています。

  1. なぜこのエラーが発生しているのですか?
  2. メタストアのインストールは必要ですか?
  3. ターミナルでHiveコマンドを入力してxmlが内部的に呼び出されると、これらのxmlのフローはどうなりますか?
  4. 他の構成が必要ですか?

Ubuntu 14.0ターミナルでHiveコマンドを作成しているときに、次の例外がスローされます。

 $ 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

上記のエラーを回避するために、次のようにHive-site.xmlを作成しました。

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

また、~/.bashrc fileで環境変数を提供しました。それでもエラーが続く

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

1.〜/ .bashrc

Bashrcファイル内で、ファイルの終わりに以下の環境変数を追加します。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

このファイル(Hive-site.xml)をHiveのconfディレクトリに作成し、以下の詳細を追加する必要があります

<?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.また、jarファイル(mysql-connector-Java-5.1.28.jar)をHiveのlibディレクトリに配置する必要があります。

4. UbuntuでHive Shellを起動するために必要な以下のインストール:

    4.1 MySql
    4.2 Hadoop
    4.3 Hive
    4.4 Java

5.実行部分:

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
21
Arti Nalawade

hiveメタストアサービスの開始は私にとってはうまくいきました。最初に、Hiveメタストアのデータベースをセットアップします。

 $ Hive --service metastore 

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

次に、次のコマンドを実行します。

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

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

17
Ravi Vyas

私の場合、私が試したとき

$ Hive --service metastore 

わかった

MetaException(メッセージ:メタストアにバージョン情報が見つかりません。)

メタストアに必要なテーブルがMySQLにありません。テーブルを手動で作成し、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; 

メタストアデータベース名は、Hive-site.xmlファイル接続プロパティタグに記載されているデータベース名と一致する必要があります。

Hive-schema-2.x.x.mysql.sqlファイルは、現在のディレクトリで利用可能なバージョンに依存します。また、多くの古いスキーマファイルを保持しているため、最新版を試してください。

ここでHive --service metastoreを実行してみてください。すべてがうまくいったら、単にターミナルからHiveを起動してください。

>Hive

上記の答えがあなたの必要を満たすことを願っています。

8
vijayraj34

ローカルモードで遊んでいるだけであれば、メタストアDBを削除して元に戻すことができます。

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

デバッグモードでHiveを実行する

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

そして実行する

show tables

実際の問題を見つけることができます

1
Vignesh

「反射」ジャンクで失われたスタックトレースの途中で、根本原因を見つけることができます。

指定されたデータストアドライバー( "com.mysql.jdbc.Driver")がCLASSPATHに見つかりませんでした。CLASSPATHの仕様とドライバーの名前を確認してください。

Spark-submitコードから--deploy-modeクラスターを削除することで、この問題を解決しました。デフォルトでは、spark submitはclientモードを取ります。これには次の利点があります。

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.

クラスターモード

 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.

ここでは、クラスター内のノードのいずれかに対してHive jarが使用できないため、Hiveメタストアにアクセスできません。 enter image description here

0
Tutu Kumari

HadoopディレクトリからMetaStore_dbを削除し、hadoop namenode -formatを使用してhdfsをフォーマットしてから、start-all.shを使用してhadoopを再起動してください。

0
Nitin

mybeあなたのHiveメタストアは矛盾しています!私はこのシーンにいます。

最初。走る

 $ schematool -dbType mysql -initSchema  

それから私はこれを見つけました

>エラー:キー名 'PCS_STATS_IDX'が重複しています(state = 42000、code = 1061)org.Apache.hadoop.Hive.metastore.HiveMetaException:スキーマの初期化に失敗しました!メタストアの状態は一貫性がありません!!

それから私は走る

 $ schematool -dbType mysql -info

このエラーが見つかりました

Hiveディストリビューションバージョン:2.3.0メタストアスキーマバージョン:1.2.0 org.Apache.hadoop.Hive.metastore.HiveMetaException:メタストアスキーマバージョンには互換性がありません。 Hiveバージョン:2.3.0、データベーススキーマバージョン:1.2.0


だから、Hiveメタストアをフォーマットしたら、完了です! * mysqlデータベース、Hive_dbという名前のデータベースを削除*メタデータの初期化のためにschematool -dbType mysql -initSchemaを実行

0
user10252729

私もこの問題に直面しましたが、Hadoopを再起動し、コマンドhadoop dfsadmin -safemode leaveを使用しました

今、Hiveを起動します

0
Akash

Hive MetaStoreにMySQL DBを使用しました。以下の手順に従ってください。

  • hive-site.xmlではmetastoreが適切である必要があります
<property>
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://localhost/metastorecreateDatabaseIfNotExist=true&amp;useSSL=false</value>
</property>
  • mysqlに移動します:mysql -u hduser -p
  • 次にdrop database metastoreを実行します
  • 次に、MySQLから出てschematool -initSchema dbType mysqlを実行します

これでエラーが発生します。

0
arunava maiti