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でやるとして、とりあえず今のところはこれでいくことに。