Google compute engineのhadoopにhiveをインストールします
GCEのhadoopにhiveをインストールする方法を色々検索したけど情報が少なすぎてまとめることにしました。
公式っぽいドキュメントとしては下記のものがあります。
基本その通りに実施すれば実行できるようになるのですが、ドキュメントがあまりにも不親切というか分かりにくいというか・・・。
- 事前にgcloudでの接続が可能な設定を行っておきます。
- 基本的に作業はubuntuのtermで行います。(readmeにはこれが抜けている)
- 事前にhadoopのvmを作成しておきます。
- gsutil と gcutil コマンドがubuntuで実行できることを確認しておく。
本当に必要かわからんがやっておく
readmeに書いてあるのでとりあえず下記を実行しておく。
プロジェクトのセット
gcloud config set project <project ID>
バケットの作成
これもreadmeに書いてるけど、
gsutil mb gs://<bucket name>
バケットが作成済みの場合もあります。
バケット名は、[ストレージ][cloud Storage][ストレージ ブラウザ]を開くとみれます。
パッケージのダウンロード
このセクションも説明不足すぎてわかりにくい。
ダウンロード先は実行するユーザのhomeで問題ない。
$ wget https://github.com/GoogleCloudPlatform/solutions-apache-hive-and-pig-on-google-compute-engine/archive/master.zip
$ unzip master.zip
Hive パッケージのセットアップ
上記でunzipしたフォルダ(solutions-apache-hive-and-pig-on-google-compute-engine-master)に移動する。
この位置をreadmeではサンプルアプリケーションルートディレクトリと呼んでいる。(root directory of the sample application.)
このフォルダの下で以下のコマンドを実行する。
$ mkdir -p packages/hive
作成packages/hive下にhiveをダウンロードする。自分は、hive-0.12.0.tar.gzにしました。
$ cd packages/hive
$ wget http://archive.apache.org/dist/hive/hive-0.12.0/hive-0.12.0.tar.gz
project_properties.shの編集
サンプルアプリケーションルートディレクトリにあるproject_properties.shを編集します。
編集する項目は以下の4つです。
各項目を自分の環境に合わせて書き直します。
readonly GCS_PACKAGE_BUCKET=myproject-bucket
readonly ZONE=us-central1-a
readonly MASTER=myproject-hm
readonly HADOOP_HOME=/home/hadoop/hadoop-install
HADOOP_HOMEは自分の環境のhadoopではhadoop-insallだったので書き換えています。
分からない場合、gceのVM側でwhichしてみます。
$ which hadoop
/home/hadoop/hadoop-install/bin/hadoop
でbin以下がHADOOP_HOMEになります。
cloud storageにパッケージをプッシュ
サンプルアプリケーションルートディレクトリから以下のシェルを実行してパッケージをプッシュします。
$ ./scripts/packages-to-gcs_at_host.sh
インストール実行
サンプルアプリケーションルートディレクトリから以下のシェルを実行してインストールを実行します。
$ ./scripts/install-packages-on-master_at_host.sh
成功すればGCE側にhdpuserが作成されます。
確認
ここからreadmeと若干異なります。
また、ここからはGCEにgcloudで接続してhadoop vm上での実行です。
sudo sudo -i -u hdpuser
hiveの起動
$ hive
起動時に以下のメッセージが出る場合、HADOOP_HOMEかHADOOP_PREFIXが正しくhadoopのインストールディレクトリを指していないことが原因です。
Cannot find hadoop installation: \$HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be in the path
環境変数を確認してください。
自分の環境では、最初に
HADOOP_PREFIX=/home/hadoop/hadoop
となっていましたので、
HADOOP_PREFIX=/home/hadoop/hadoop-install
と修正しています。
project_properties.shの内容が正しく設定されていれば問題ないと思うので、project_properties.shを修正してセットアップをし直すのもいいかもしれません。
hiveが起動したらプロンプトがこんな感じに。
hive>
下記のテーブルを作成します。(readmeのままです)
CREATE TABLE passwd (
user STRING,
dummy STRING,
uid INT,
gid INT,
name STRING,
home STRING,
shell STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
STORED AS TEXTFILE;
次にデータをロードします。
hive|>LOAD DATA LOCAL INPATH '/etc/passwd' OVERWRITE INTO TABLE passwd;
readmeではgsからロードになっていますが、まだ上手くいっていないので直接ロードします。
ロードできたらselectしてみます。
hive> select * from passwd;
OK
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /bin/sh
bin x 2 2 bin /bin /bin/sh
sys x 3 3 sys /dev /bin/sh
sync x 4 65534 sync /bin /bin/sync
games x 5 60 games /usr/games /bin/sh
man x 6 12 man /var/cache/man /bin/sh
lp x 7 7 lp /var/spool/lpd /bin/sh
mail x 8 8 mail /var/mail /bin/sh
news x 9 9 news /var/spool/news /bin/sh
uucp x 10 10 uucp /var/spool/uucp /bin/sh
proxy x 13 13 proxy /bin /bin/sh
www-data x 33 33 www-data /var/www /bin/sh
backup x 34 34 backup /var/backups /bin/sh
list x 38 38 Mailing List Manager /var/list /bin/sh
irc x 39 39 ircd /var/run/ircd /bin/sh
gnats x 41 41 Gnats Bug-Reporting System (admin) /var/lib/gnats /bin/sh
nobody x 65534 65534 nobody /nonexistent /bin/sh
libuuid x 100 101 /var/lib/libuuid /bin/sh
ntp x 101 103 /home/ntp /bin/false
sshd x 102 65534 /var/run/sshd /usr/sbin/nologin
messagebus x 103 105 /var/run/dbus /bin/false
hadoop x 500 500 /home/hadoop /bin/bash
hdpuser x 1002 500 /home/hdpuser /bin/bash
Time taken: 10.486 seconds, Fetched: 26 row(s)
hive>
どうやらselectできたようです。