Hadoopを10分で試す(1)Clouderaの仮想マシンをインストール

**この記事の内容は若干古くなっています。まとめページもご覧下さい**

Clouderaでは、Hadoopを簡単に試してみるための仮想マシンイメージ(Cloudera Quickstart demo VM)を提供しています。

が、日本語ドキュメントが少ない(これはあまり問題ないですが)&日本語化を試してみたい方のための情報が少ないので、まとめます。ご参考になれば幸いです。

仮想マシンイメージのダウンロード

仮想マシンの実行には以下の環境が必要です。64bit環境が必要なのは、Cloudera ManagerとCloudera Impalaが64bitでしか動作しないためです。

  • 64bitの仮想環境
  • 仮想マシンに割り当てるメモリ:4GB以上
  • 仮想マシンのディスク領域:2GB以上


ダウンロードを行うには、
https://ccp.cloudera.com/display/SUPPORT/DownloadsからCloudera QuickStart VMをクリックします。

選択できる仮想マシンイメージの種類は3種類となっています。お使いの環境で、お好みのイメージをダウンロードして下さい。
注:2013/6/17時点では最新のCDH4.3のVMイメージが提供されていません。アップデートの方法は次回に

  • VMWare
  • KVM
  • VirtualBox

スクリーンショット
VMs

解凍&起動

ダウンロードしたイメージを解凍し、実行します。
Windowsでダウンロードする場合、イメージがtar.gz形式で圧縮されているので、7zipなどをご用意下さい。

起動中の画面はこのような感じです。初回起動時はHDFSのフォーマットなどの処理が行われるため、比較的時間がかかります。一服して待ちましょう。
booting vm

最初の起動

初回起動時は、Cloudera Manager 管理ツールのパスワードが表示されます。共にadminなので覚えておきましょう。
policy

I agree を押してログインします。
demo_vm_login

ログインすると、これでもか!というぐらいサービスが上がっていることがわかります。(クリックで拡大)
services
ひとまず問題なさそうです。

なお、demo VMの壁紙はこれです。派手(笑
VM wallpaper

VMWareを利用する場合、VMWare Toolsがインストールされていないので不便です。一度仮想マシンを停止し、CD/DVDデバイスを追加してから起動して、VMWare Toolsをインストールすることをお勧めします。

動作確認

まずはお約束のwordcountをやってみましょう。まずはターミナルを開きます。(上部メニューのアイコンをクリック)

以下のコマンドを入力して下さい。適当なファイル(/etc/passwdと/usr/share/dict/linux.words)をアップロードします。

[cloudera@localhost ~]$ hadoop fs -mkdir input
[cloudera@localhost ~]$ hadoop fs -put /etc/passwd input
[cloudera@localhost ~]$ hadoop fs -put /usr/share/dict/linux.words input
[cloudera@localhost ~]$ hadoop fs -ls
Found 2 items
-rw-r--r-- 3 cloudera cloudera 4953699 2013-06-17 23:14 input/linux.words
-rw-r--r-- 3 cloudera cloudera 2323 2013-06-17 23:14 input/passwd
[cloudera@localhost ~]$

無事にアップロードできました。続いてMapReduceを試してみます。

[cloudera@localhost ~]$ hadoop jar /usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar wordcount input output
13/06/17 10:31:27 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/06/17 10:31:27 INFO input.FileInputFormat: Total input paths to process : 2
13/06/17 10:31:28 INFO mapred.JobClient: Running job: job_201306171029_0001
13/06/17 10:31:29 INFO mapred.JobClient: map 0% reduce 0%
13/06/17 10:31:44 INFO mapred.JobClient: map 50% reduce 0%
13/06/17 10:31:47 INFO mapred.JobClient: map 100% reduce 0%
13/06/17 10:31:54 INFO mapred.JobClient: map 100% reduce 100%
13/06/17 10:31:56 INFO mapred.JobClient: Job complete: job_201306171029_0001
13/06/17 10:31:56 INFO mapred.JobClient: Counters: 32
13/06/17 10:31:56 INFO mapred.JobClient: File System Counters
13/06/17 10:31:56 INFO mapred.JobClient: FILE: Number of bytes read=6284047
13/06/17 10:31:56 INFO mapred.JobClient: FILE: Number of bytes written=9886429
13/06/17 10:31:56 INFO mapred.JobClient: FILE: Number of read operations=0
13/06/17 10:31:56 INFO mapred.JobClient: FILE: Number of large read operations=0
13/06/17 10:31:56 INFO mapred.JobClient: FILE: Number of write operations=0
13/06/17 10:31:56 INFO mapred.JobClient: HDFS: Number of bytes read=4956277
13/06/17 10:31:56 INFO mapred.JobClient: HDFS: Number of bytes written=5915787
13/06/17 10:31:56 INFO mapred.JobClient: HDFS: Number of read operations=4
13/06/17 10:31:56 INFO mapred.JobClient: HDFS: Number of large read operations=0
13/06/17 10:31:56 INFO mapred.JobClient: HDFS: Number of write operations=1
13/06/17 10:31:56 INFO mapred.JobClient: Job Counters
13/06/17 10:31:56 INFO mapred.JobClient: Launched map tasks=2
13/06/17 10:31:56 INFO mapred.JobClient: Launched reduce tasks=1
13/06/17 10:31:56 INFO mapred.JobClient: Data-local map tasks=2
13/06/17 10:31:56 INFO mapred.JobClient: Total time spent by all maps in occupied slots (ms)=22691
13/06/17 10:31:56 INFO mapred.JobClient: Total time spent by all reduces in occupied slots (ms)=6475
13/06/17 10:31:56 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
13/06/17 10:31:56 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
13/06/17 10:31:56 INFO mapred.JobClient: Map-Reduce Framework
13/06/17 10:31:56 INFO mapred.JobClient: Map input records=479875
13/06/17 10:31:56 INFO mapred.JobClient: Map output records=479899
13/06/17 10:31:56 INFO mapred.JobClient: Map output bytes=6875618
13/06/17 10:31:56 INFO mapred.JobClient: Input split bytes=255
13/06/17 10:31:56 INFO mapred.JobClient: Combine input records=959728
13/06/17 10:31:56 INFO mapred.JobClient: Combine output records=959728
13/06/17 10:31:56 INFO mapred.JobClient: Reduce input groups=479895
13/06/17 10:31:56 INFO mapred.JobClient: Reduce shuffle bytes=3142881
13/06/17 10:31:56 INFO mapred.JobClient: Reduce input records=479899
13/06/17 10:31:56 INFO mapred.JobClient: Reduce output records=479895
13/06/17 10:31:56 INFO mapred.JobClient: Spilled Records=1439627
13/06/17 10:31:56 INFO mapred.JobClient: CPU time spent (ms)=5470
13/06/17 10:31:56 INFO mapred.JobClient: Physical memory (bytes) snapshot=417198080
13/06/17 10:31:56 INFO mapred.JobClient: Virtual memory (bytes) snapshot=2108715008
13/06/17 10:31:56 INFO mapred.JobClient: Total committed heap usage (bytes)=287907840
[cloudera@localhost ~]$

結果は引数で指定した output ディレクトリにあります。

[cloudera@localhost ~]$ hadoop fs -ls output
Found 3 items
-rw-r--r-- 3 cloudera cloudera 0 2013-06-17 10:31 output/_SUCCESS
drwxr-xr-x - cloudera cloudera 0 2013-06-17 10:31 output/_logs
-rw-r--r-- 3 cloudera cloudera 5915787 2013-06-17 10:31 output/part-r-00000
[cloudera@localhost ~]$ hadoop fs -tail output/part-r-00000
on 1
(略)
zythem 1
zythum 1
zyzzyva 1
zyzzyvas 1
[cloudera@localhost ~]$

うまくいきました。(※この元データは実際意味がないので、試される場合は適当なファイルにして下さい)。JobTrackerのWebUIも正しく表示されています。

demo_vm webui

長くなったので次回に続きます。

Pocket