2012年8月30日木曜日

【hadoop】hiveのインストール方法と簡単な実行サンプル

■Hiveとは
Hadoop上のHDFSのデータにSQLを使ってアクセスできるクライアントツールです
「hadoop fs」等なかなかに扱いにくHDFSアクセス用のコマンドをSQLでできるようにしようというコンセプト
insert、selectなど作は全てhadoop上でMapReduceアルゴリズムに基づき動作する

■事前
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
Javaの1.6以上とHadoopの0.2以上が必要です
インストールがまだの方は、以下の記事を参考にインストールしてください
Hadoopインストール方法:
http://kakakikikeke.blogspot.com/2012/08/centos56hadoop.html
http://kakakikikeke.blogspot.com/2012/08/hadoop.html
Javaインストール方法:
http://kakakikikeke.blogspot.com/2012/06/centosjenkinsjavatomcatantgit.html

■インストール
wget http://ftp.tsukuba.wide.ad.jp/software/apache/hive/hive-0.9.0/hive-0.9.0.tar.gz
tar xvf hive-0.9.0.tar.gz
mv hive-0.9.0 hive
mv hive /usr/local/
emacs .bashrc
HIVE_HOME=/usr/local/hiveを設定します
PATH=$HIVE_HOME/bin:$PATHを追加します
cd /usr/local/hive/
mkdir logs
cd /usr/local/hive/conf
mv hive-log4j.properties.template log4j.properties
ログの出力先をhive.log.dir=/usr/local/hive/logs/に変更しました
mv hive-env.sh.template hive-env.sh
chmod 755 hive-env.sh
mv hive-exec-log4j.properties hive-exec-log4j.properties
mv hive-default.xml.template hive-site.xml
ログは/usr/local/hive/logs配下に保存されますが、セッション情報などは/tmp/rootに保存されています(rootユーザで実行した場合)

■実行
start-all.sh(最低でも擬似分散で動作するhadoop環境が必要です)
hive
hive>show databases;
OK
default
Time taken: 6.06 seconds
hive> CREATE TABLE counter (count int, str string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
hive> LOAD DATA LOCAL INPATH '/var/tmp/test.txt' OVERWRITE INTO TABLE counter;
ここで指定しているファイルはローカルファイルです(HDFS上にあるファイルも指定できますが、うまくinsertできませんでした・・・)
あらかじめTSV形式のtest.txtを作成しておいてください
なぜTSVかというとテーブルの定義で「このテーブルはtsv形式ですよ」と宣言しているためです
hive> SELECT * FROM counter;
TSVファイルに書かれている値がインサートされていることがわかると思います
ここで実行してインサートされたデータはファイルとして~/metastore_db配下に保存されます
どうやらApache Derbyが内部的に動作しているようです

■考察
実際に使用するときの流れとしては
  1. hadoop上で解析(頑張ってMapReduceを実装)
  2. 結果の出力ファイルをHDFS上からローカルのある形式で持ってくる(今回はTSV形式)
  3. Hiveを使用してテーブルにインサート
  4. あとはSELECTをうまく使用して結果を取得解析
になるのかなーと勝手に思っています
あとはいきなりHiveでデータを突っ込んでSQLで頑張るかですかね・・・

■参考
https://cwiki.apache.org/Hive/hiveclient.html
JavaからHiveを利用できるクライアントもあるようです
http://wiki.pentaho.com/display/BAD/Loading+Data+into+Hive




0 件のコメント:

コメントを投稿