2009年11月9日月曜日

1台構成のHadoopを30分で試してみる(CentOS + Cloudera)

概要
・1台のLinux環境で、簡単に、Hadoopを体験してみる方法です。
・HDFSにちょっとファイルを置いてみたり、少しMapReduceジョブを動かしてみます。
・CentOSとCloudera社版のHadoopディストリビューションパッケージCDH3(無料)を利用します。(rpmパッケージなので、インストール・アンインストール、サービス起動・停止等が楽です)
・続いて、別途、HBase, Pig, Hiveを試すことができます。→1台でHBase, Hive, Pigを試してみる

その他の記事

Hadoop(1台構成)HBase,Hive,Pig,HUE,Oozie等(1台構成)Hadoop(複数台構成)
CentOSこちらHBase,Hive,Pig, HUE(旧Cloudera Desktop), Oozieこちら
UbuntuこちらHBase,Hive,Pig,HUE(旧Cloudera Desktop)


(参考) Cloudera社のHadoopパッケージの情報 http://archive.cloudera.com/docs/

必要なもの
・CentOS5かCentOS6のLinux環境1台(ここではCentOS5.6とCentOS6.0を使いました。CentOSの他バージョンや、Fedora、Redhat等でも大丈夫だと思います)
・インターネット接続
・Sun社Javaパッケージ(パッケージファイルをインターネットから取得)
・Cloudera社のCDH3のHadoopパッケージ(yumでインターネットからインストール)

作業手順

0. 準備

0-1. Sun社Javaパッケージの取得

http://java.sun.com/javase/downloads/にて、
Java SE 6の[Download]ボタンを押して出る「Java SE Downloads」のページから必要なものをダウンロードします。
(例)
Java SE Development Kit 6 Update 27
Linux x86の人は、Linux x86 - RPM Installer(jdk-6u27-linux-i586-rpm.bin)
Linux x64の人は、Linux x64 - RPM Installer(jdk-6u27-linux-x64-rpm.bin)
ファイルは、Linux環境内のどこかのディレクトリにおいておきます。

1. インストール: Linux環境にて、rootで作業します。

1-1. Sun社のJavaを入れます。(少し面倒ですが、Sun社のものが必要です。)
ダウンロードパッケージのあるディレクトリで、
sh SUN社サイトからダウンロードしたファイル
(例)
i586なら> sh jdk-6u26-linux-i586-rpm.bin
x64なら> sh jdk-6u26-linux-x64-rpm.bin

とし、指示に従います。
結果例
...略...
Java(TM) SE Development Kit 6 successfully installed.
...略...
Press Enter to continue.....


Done.

確認します。
java -version

結果例
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)


1-2. Hadoopを入れます。

1-2-a. Cloudera社リポジトリの追加

CentOS5なら
cd /etc/yum.repos.d
wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
rpm --import http://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera

CentOS6なら
cd /etc/yum.repos.d
wget http://archive.cloudera.com/redhat/6/x86_64/cdh/cloudera-cdh3.repo
rpm --import http://archive.cloudera.com/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

(参考1) http://archive.cloudera.com/docs/_yum.html

1-2-b. Hadoopをインストール

yum -y install hadoop-0.20

結果例
...略...
Installed:
hadoop-0.20.noarch 0:0.20.2+923.97-1

Complete!

※ ここで、こんなエラー「[Errno 14] HTTP Error 404: Not Found」が出る人は、cloudera-cdh3.repoを、一時的に変更しましょう。
「mirrorlist=行」をコメントアウトして、「baseurl=http://archive.cloudera.com/redhat/cdh/3/」行を書き加えましょう。(2010/10/13現在: なぜかhttp://archive.cloudera.com/redhat/cdh/3/mirrorsが無いです)


1-2-c. 簡単な設定ファイル一式をインストール(一台構成で試すためのお手軽設定)
yum -y install hadoop-0.20-conf-pseudo

結果例
...略...
Installed:
  hadoop-0.20-conf-pseudo.noarch 0:0.20.2+923.97-1

Dependency Installed:
  hadoop-0.20-datanode.noarch 0:0.20.2+923.97-1
  hadoop-0.20-jobtracker.noarch 0:0.20.2+923.97-1
  hadoop-0.20-namenode.noarch 0:0.20.2+923.97-1
  hadoop-0.20-secondarynamenode.noarch 0:0.20.2+923.97-1
  hadoop-0.20-tasktracker.noarch 0:0.20.2+923.97-1

Complete!

1-3. サービス起動

起動
service hadoop-0.20-namenode start
service hadoop-0.20-jobtracker start
service hadoop-0.20-datanode start
service hadoop-0.20-tasktracker start

2. 確認・お試し

2-1. ブラウザ(Web UI)で様子を見てみる。

ローカルのブラウザから
HDFSの様子を見てみる
http://localhost:50070/

MapReduceの様子を見てみる
http://localhost:50030/

※ または、"別にWeb UIを見ないでスルー"と言うのもありです。
※ 外部から、Web UIにアクセスするには、Hadoopの設定変更とfirewall設定の変更が必要かもしれません。ここでは、50070/tcp、50075/tcp、50030/tcpの許可が必要です。
※ シンプルなUIなので、テキストベースのWebブラウザで十分かもしれません。

elinks(テキストベースのWebブラウザ)の例
yum -y install elinks
elinks http://localhost:50070/

(手元の環境では、ESC→Setup→Terminal optionsでColor modeをNo colors(mono)と設定変更しました。)




2-2. HDFSを試す。

Linux環境にて、作業します。rootでなくてもいいです。
(ここでの"簡単な設定"では、HDFS上のファイルパーミッション機能がOFFになっているので、誰でもいいです。)

2-2-a. HDFS上にフォルダを作ってみる
hadoop-0.20 fs -mkdir TESTFOLDER01

2-2-b. HDFS上にファイルを置いてみる
ローカルにテストファイル(/var/tmp/test)を作ります。
cat << OTAMESHI > /var/tmp/test
hello hadoop world
OTAMESHI

ローカルのテストファイルをHDFS上にコピーしてみます。
hadoop-0.20 fs -put /var/tmp/test TESTFOLDER01

2-2-c. HDFSからファイルを取り出してみる

2-2-c-1. HDFS上のファイルをcatしてみます。
hadoop-0.20 fs -cat TESTFOLDER01/test

2-2-c-2. HDFS上のファイルをローカル(/var/tmp/test2)に、取り出してみます。
hadoop-0.20 fs -get TESTFOLDER01/test /var/tmp/test2

ローカルに取り出したものの中身を確認します。
cat /var/tmp/test2


2-2-d. 今一度、ブラウザ(Web UI)からHDFSの様子を見てみる

http://localhost:50070/を開き、
一番上のリンク"Browse the filesystem"から、
フォルダを、
/user/root/TESTFOLDER01/test
と辿ってみます。

2-2-e. もっとHDFSでいろいろしてみるには、

ヘルプを読みます。
hadoop-0.20 fs -help

2-3. MapReduceを試す。

Linux環境にて、作業します。rootでなくてもいいです。

hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar pi 4 2000

結果例
...略...
うっすらmapしてreduceします。
...略...
Job Finished in 94.799 seconds
Estimated value of Pi is 3.14100000000000000000

円周率が計算されました。

本当は3.14159...なので、たいした精度じゃないですね。
最後の引数を多くすると精度が上がるようです。20000とか試してみるといいと思います。
最後から二番目の引数がMapの数です。10とか試してみてもいいと思います。

他のMapReduceのサンプルは、
hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar

3. おまけ

3-1. ずっとあそぶには、セカンダリーマスターを動かしましょう。

起動
service hadoop-0.20-secondarynamenode start

3-2. 構築した環境を使って、例えば、HBase, Pig, Hiveを試してみてもおもしろいかもしれません。
1台でHBase, Hive, Pigを試してみる(CDH3beta3)

3-3. 複数台構成で試すと、もうちょっとHadoopらして楽しいかもしれません。
4台構成のHadoopを100分で試してみる(CentOS + Cloudera)(CDH3beta3)

--
終わり

1 件のコメント: