hiveを使うためのhadoop(HDFS)コマンドの解説です。 最低限使うものだけに絞って紹介します。
質問や間違い指摘は何でもご連絡ください(^^)
hadoop、hiveのインストール方法は下記の記事に書いています。
HDFSを簡単に言うと、単なるディレクトリとファイルです
HDFSは、Hadoop Distributed File Systemです。直訳すると、「hadoop(はどぅーぷ)分散ファイルステム」です。名前の通り単なるファイルシステムの1つなので、普通のコマンドと同じようなコマンドが使えます。HDFSで使えるコマンドは以下の通りです。
# 自分のホームディレクトリにls。以下の2つは全く同じです。 hadoop dfs -ls hadoop dfs -ls /user/[user_name] # 特定のディレクトリにls hadoop dfs -ls /user # 特定のファイルにcat hadoop dfs -cat [ファイルへの絶対パス] # 特定のファイルにchmod。この場合はuserディレクトリを777にしている。 hadoop dfs -chmod 777 /user # sudo権限でchmod。この場合はuserディレクトリを777にしている。 sudo -u hdfs hadoop dfs -chmod /user # ここからはHDFSのコマンドではなく、hive向けのhadoopコマンド。 # 一応書いたけど、解説は次回…。 hadoop job -list hadoop job -status hadoop job -kill hadoop job -set-priority
他にも、普段見慣れたmv、rm等のコマンドもあります。このページではhiveで必要なものしか解説しません。その他の詳細は以下のページを見てください。
hiveを使うために必要なHDFSコマンド
hiveで作ったDB、テーブルは/user/hiveというHDFSディレクトリにHDFSのファイルとして保存されます。そのため、hiveを使う時はまず最初にhiveユーザーにHDFSディレクトリへのアクセス権限を与える必要があります。以下のコマンドを実行してください。
# /userのパーミッションを777に変更 sudo -u hdfs hadoop dfs -chmod 777 /user # 権限の確認。 hadoop dfs -ls / # この結果が表示されれば成功 Found 2 items drwxrwxrwt - hdfs hdfs 0 2012-10-06 16:16 /tmp drwxrwxrwx - hdfs supergroup 0 2012-10-07 00:20 /user
/userというHDFSディレクトリのパーミッションが777(rwxrwxrwx)になっていれば成功です。今後hiveでDBやテーブルを作ると、/user/hive以下に同名のファイルが作られていきます。
hiveでDBとテーブルを試しに作ってみる
DBとテーブルを試しに作ってみます。単純なクエリはMySQLやその他のDBのクエリとほとんど同じです。
上記の手順が成功していれば、DBとテーブルを普通に作れます。もし失敗していると、パーミッションがない等のエラーがでます。
$ hive hive> show databases; # 何もないか、管理用のDBしか表示されないはずです。 hive> create database [db_name]; hive> show databases; # 作ったDBが表示されます。 hive> use [db_name]; hive> create table [table_name](id string); hive> show tables; # 作ったテーブルが表示されます。
次に、作ったDBやテーブルをHDFS上から確認していきます。
# hiveから抜けるにはこのコマンドを実行します。 hive> exit; $ hadoop dfs -ls /user # このディレクトリが増えているはずです drwxrwxrwx - root supergroup 0 2012-10-07 00:20 /user/hive $ hadoop dfs -ls /user/hive # さらにwarehoueディレクトリが作られているはずです。 drwxrwxrwx - root supergroup 0 2012-10-07 00:20 /user/hive/warehouse $ hadoop dfs -ls /user/hive/warehouse/[作ったDB名]/[作ったテーブル名] # 上記のように、作ったDBとテーブルに対応するディレクトリが増えているはずです。
もしテーブルへのINSERTまでやっていると、さらに下の階層まで続きます。
hiveQLの簡単なクエリサンプルはまた今度
疲れたのでまた今度にします。
以下のような内容を近いうちに書こうかなぁとは思ってます。
- hiveでのシンプルなクエリサンプル
- Apacheのアクセスログを用いたPV/UUの集計
- 効率的なクエリの書き方
ちなみに、
mixiでは、hadoopやhive等の最新技術を使ってサービスをばしばし改善していけるエンジニアを募集しています!(採用ページにはあんまり書いてないですが大募集中です!)
質問、間違い連絡はお気軽にどうぞ
質問や間違い指摘は何でもご連絡ください(^^)