hiveの一番シンプルなインストール方法

hiveを現時点で最も簡単にインストールする手順の解説です。

Cloudera社が公開してるパッケージを使ってインストールします。


質問や間違い指摘は何でもご連絡ください(^^)

@ts_3156



hiveはhadoopを簡単に使うためのツールです


hiveとは、hadoopにおけるMap/Reduce(以下、M/R)処理をHiveQL(hive版のSQL)で書くことができるツールです。
HiveQLは、少なくともM/R処理の直書きよりはとても簡単です。なので、簡単にhadoopを使いたい人はまずhiveを使ってみると良いと思います。


例えば、PV/UUの集計は以下のクエリだけで出来ます。


use [db_name];

SELECT
  url, -- 集計したいHTMLのパス
  count(1) pv,
  count(distinct user_id) uu
FROM
  [db_name].[table_name]
WHERE
  date = '2012-00-00'
  AND [その他の条件]
GROUP BY
  url
;

JOINも使えばコンバージョン等も集計できます。



hadoop、hiveのインストールにはCloudera社のパッケージを使うのが現時点で一番簡単です


Cloudera社のパッケージを使えば、基本的にはブラウザ上からhadoop、hive等のインストールができて簡単です。

hadoopは種々の問題から複数のバージョンが乱立しています。単体でインストールした後も、細々とした設定がすごく面倒です。Cloudera社のパッケージを使えばその面倒さがなくなります。


hadoopとCloudera社は、Red Hat Enterprise LinuxとRed Hat社みたいな関係っぽいです。

Cloudera Japan

hadoopのバージョン乱立についての解説



hadoop、hiveをec2にインストールするための手順


今回はec2のまっさらなサーバにインストールすることを前提にしています。その理由は、設定を間違えた時に最初から簡単にやり直すためです。hadoopあたりのツールはまだバージョンが1.0にも満たないものも多く、色々な理由でうまく動かないことが多いです。そういう時は諦めてさっさと新しいサーバで試しましょう。


ここからはec2やサーバの基本的な知識があること前提で進みます。



ec2での前準備


  1. 7180番ポートへのInboundを許可したSecurity Groupを作っておく
  2. 新しいKey Pairを作っておく
  3. Red Hat Enterprise Linuxでインスタンスを作る

まずec2で上記の作業を行なっておきましょう。7180番ポートはブラウザからCloudera Managerを使うために必要です。

Key Pairは新しく作っておいた方が無難です。hadoopのインストール時に使います。ちなみに、puttyでの接続に使う秘密鍵は*.ppk、Cloudera Managerで指定する秘密鍵は*.pem、公開鍵は*.pubになります。


ec2のインスタンスはRed Hat Enterprise Linuxを使ってください。最初の一覧にあります。他のディストリビューションだとそもそもインストールできなかったりします。ちなみに、このインスタンスでの最初のログインユーザー名は「root」です。



SELinuxの無効化


作成したインスタンスにログイン後、SELinuxは無効化してください。さらにこの設定を有効にするために、インスタンスを再起動してください。再起動はブラウザ上のec2管理ツールから行えます。


vi /etc/selinux/config

# 該当行を以下のように変更
SELINUX=disabled

# 7180番ポートへのアクセスもついでに許可しておきます
iptables -I INPUT -p tcp -m tcp --dport 7180 --syn -j ACCEPT

7180番ポートはこの後必ず使うことになるのでついでに設定しておきましょう。


SELinux無効化の解説ページ

iptablesの解説ページ


2012/11/29 追記

もしiptablesの設定がうまくいかない場合は、service iptables stop を実行して、iptablesを止めてしまってください。セキュリティ的には駄目なんですが、テスト実行の時だけなら問題ないと思います。



Cloudera Managerのインストール


Cloudera Manager無料版をダウンロードしてインストールします。無料版は扱えるネームノード数が50以下ですが、今回は1台のサーバで擬似的に分散環境を再現するので何の問題もないです。規約に同意してくだけでインストールは完了します。


wget http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin

chmod u+x cloudera-manager-installer.bin
./cloudera-manager-installer.bin

Cloudera Managerの公式ドキュメント



Cloudera Managerを使いブラウザ上からhadoopをインストール


ここからの作業は手元のPCのブラウザ上から行なっていきます。以下のURLにアクセスしてください。ホスト名はブラウザ上のec2管理ツールから確認できます。sshでのログイン時に使ったホスト名と同じです。


http://ec2-000-000-000-000.ap-northeast-1.compute.amazonaws.com:7180


ユーザー名もパスワードも、最初は、「admin」になっています。


ここからは基本的にクリックだけで進んでいきますが、いくつか注意点があります。


  1. ホスト名の検索では「localhost」だけを入力してください
  2. CDHのバージョンは3を選んでください
  3. インストールは最小構成(hadoop coreパッケージ)を選んでください

今回は1台のサーバで擬似的に分散環境を構成するので、検索するホスト名は「localhost」だけになります。CDHのバージョンとインストール構成は他でも大丈夫のはずですが、私がやった時は失敗しました。分かる人は他の選択肢を選んでも大丈夫です。


これでhadoop、hiveのインストールは完了です。hiveの動作確認は以下のコマンドで行えます。基本的にはmysqlの使い方と同じです。


$ hive
hive> show databases;

# まだDBを作っていないのでOKしか表示されないです

show databasesだけで10秒近くかかりますが、これが普通なので何の問題もないです。おそらく初回はjarのロード等を色々やるので遅いのだと思います。


2012/10/07 追記

@ts_3156 ちなみにhiveが遅い原因の一つとして、デフォルトでderbyをメタストアDBに使っているというのがあります。mysqlに変えるだけで相当速くなるはずです。CDH3での設定方法はこちらです https://ccp.cloudera.com/...
- @shiumachi


上記のご指摘がありました…! ありがとうございます!



hiveでのアクセスログ解析手順はまた今度


疲れたのでまた今度にします。


2012/10/07 追記

hiveを使うためのHDFSコマンド、DBとテーブルの作り方解説を書きました。

hiveを使うためのhadoop(HDFS)コマンド【hiveの初期設定】


ちなみに、
mixiでは、hadoopやhive等の最新技術を使ってサービスをばしばし改善していけるエンジニアを募集しています!(採用ページにはあんまり書いてないですが大募集中です!)



質問、間違い連絡はお気軽にどうぞ


質問や間違い指摘は何でもご連絡ください(^^)

@ts_3156



著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール