CDH5でHiveをインストール

Mahoutでlivedoorグルメのデータを機械学習するにあたりデータの変換が必要になったのでHiveをインストール。

# yum install -y hive

一般ユーザー(今回はtake)でhiveコマンド叩いてみる。

$ hive
Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
(省略)
Caused by: java.sql.SQLException: Failed to create database '/var/lib/hive/metastore/metastore_db', see the next exception for details.
(省略)

げ、、、メタストア作れないとかいうエラーが。
パーミッション問題かな。

$ ls -l /var/lib/hive
合計 4
drwxr-xr-x. 2 hive hive 4096  2月 25 05:58 2015 metastore

あ、やっぱりhiveユーザーにしか書き込み権限がないや。
試しにhiveユーザーで動かしてみる。

# sudo -u hive hive

動いた。で、メタストアもできたっぽい。
ただ、takeユーザーでhiveコマンド叩くと固まるように。
どうやら作成されたメタストアのファイルのオーナーがhiveになり、takeユーザーのアクセス権もないのが原因のよう。

やっぱりメタストアにPostgreSQL使おうかな、、、と思ったが、面倒なのでとりあえずパーミッションを変えて対応。一旦メタストアを消して、/var/lib/hive/metastoreにアクセス権限を与えてからtakeユーザーでhiveコマンドを実行。

# rm -rf /var/lib/hive/metastore/metastore_db
# chmod 777 /var/lib/hive/metastore

これでtakeユーザーでhiveコマンドが起動できたが、今度はtakeユーザーのオーナーでメタストアの各種ファイルができてしまい、他のユーザーでアクセス不能に。Derby不便…。

まあ、いずれPostgreSQLでやるとして、とりあえず今のところはこれでいくことに。