Pivotal Knowledge Base

フォローする

"Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient"が出力されるHiveクエリエラーについて

環境

製品 バージョン
PHD 1.x

事象

本記事においては、Hiveクエリが以下のエラーで失敗した際の修正方法について述べる。

"Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient".

最終的にはメモリ不足(Out Of Memory: OOM)問題となる。

エラーメッセージ:

hive> show tables;
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

原因

この問題においては、Out Of Memory(OOM)エラーは、サーバが HiveMetaStore サービスを開始するための十分なメモリがないことによる結果、発生する。

根本原因解析

HiveMetaStore サービスはクライアント側のhive-site.xmlにより設定されているが、本件の問題においては起動していない。

例:

/etc/gphd/hive-0.11.0_gphd_2_1_0_0/conf/hive-site.xml

<property>
<name>hive.metastore.uris
<value>thrift://hdw1.viadea.com:9083
</property>

上述の設定内容より、hdw1.viadea.comで HiveMetaStore サービスの起動状態を確認。

-bash-4.1$ service hive-metastore status
hive-metastore dead but pid file exists

hive-metastore.log の以下の出力例から、HiveMetaStore サービスの起動失敗原因が Out Of Memory エラーであることを確認。

/var/log/gphd/hive/hive-metastore.log:

14/04/07 16:43:13 WARN conf.HiveConf: DEPRECATED: Configuration property hive.metastore.local no longer has any effect. Make sure to provide a valid value for hive.metastore.uris if you are connecting to a remote metastore.
WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
library initialization failed - unable to allocate file descriptor table - out of memory 

解決策

  1. まず HiveMetaStore サービスが起動出来なかった根本原因を解消する。今回のケースでは、 サーバーの物理メモリを増設することがあげられる。
  2. 次に、rootユーザーで HiveMetaStore サービスを手動実行する。
service hive-metastore start

コメント

Powered by Zendesk