Habunoop 2.7.1およびApache-Hive-1.2.1バージョンをubuntu 14.0にインストールしています。
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"
I did below modifications and I am able to start the Hive Shell without any errors:
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
このファイル(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>
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
hiveメタストアサービスの開始は私にとってはうまくいきました。最初に、Hiveメタストアのデータベースをセットアップします。
$ Hive --service metastore
次に、次のコマンドを実行します。
$ schematool -dbType mysql -initSchema
$ schematool -dbType mysql -info
https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool
私の場合、私が試したとき
$ 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
上記の答えがあなたの必要を満たすことを願っています。
ローカルモードで遊んでいるだけであれば、メタストアDBを削除して元に戻すことができます。
rm -rf metastore_db/
$Hive_HOME/bin/schematool -initSchema -dbType derby
デバッグモードでHiveを実行する
Hive -hiveconf Hive.root.logger=DEBUG,console
そして実行する
show tables
実際の問題を見つけることができます
「反射」ジャンクで失われたスタックトレースの途中で、根本原因を見つけることができます。
指定されたデータストアドライバー( "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メタストアにアクセスできません。
HadoopディレクトリからMetaStore_dbを削除し、hadoop namenode -formatを使用してhdfsをフォーマットしてから、start-all.shを使用してhadoopを再起動してください。
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
を実行
私もこの問題に直面しましたが、Hadoopを再起動し、コマンドhadoop dfsadmin -safemode leaveを使用しました
今、Hiveを起動します
Hive MetaStoreにMySQL DBを使用しました。以下の手順に従ってください。
<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
を実行しますこれでエラーが発生します。