2011/08/24

MapReduceのUnitテスト(MRUnit)

MRUnitって便利だよと聞いたので、使ってみたくなりました。

MRUnitは、JUnitフレームワークの上に、MapReduceプログラムをテストするための色んなクラスを提供している子らしい。(参考:Hadoop徹底入門

手順はざっとこんな感じ。
  1. MRUnitのjarをとってくる
  2. eclipseのビルド・パスに追加
参考にしたのはこのサイト
MRUnit(MapReduce用のテストライブラリ)を試す | shinodogg.com

----------------------------------------------------------------
1. MRUnitのjarをとってくる
Clouderaで配布しているCDH3 Component Tarball からMRUnitのjarと、それに必要っぽいJUnit4.xのjarをゲット。

MRUnitのjarは、contrib/mrunit配下に、
JUnit4.xのjarは、lib配下にあるので、それぞれ

${HADOOP_HOME}の同じ場所に置いた。

2. eclipseのビルド・パスに追加
プロジェクトのプロパティから1で追加したjarをビルド・パスに追加。

おしまい。

既にコミュニティ版のHadoopをインストールしていて手順に少し不安があったけど、Hadoop徹底入門にあったMapperのテストコードを書いて、実行してみたところ、きちんと動きました。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2
eclipse 3.7

2011/08/19

EclipseでMapReduceプログラミング

この記事でとりあえず開発環境ができたので、
MapReduceのベーシックなサンプルでもあるWordCountをEclipseで書いてみる。
  1. 新規プロジェクトの作成
  2. WordCountの作成
  3. プログラムの実行
----------------------------------------------------------------
1.新規プロジェクトの作成
Eclipseにhadoopのプラグインを入れているので、
「新規プロジェクト」ダイアログから「Map/Reduce Project」を選択できるようになっている。
なので、「Map/Reduce Project」を使って新規プロジェクトを作成。

はじめて作成するので、「Configure Hadoop install directory ...」
からWindowsにインストールしておいたHadoopのインストールディレクトリを設定。

2. WordCountの作成
Hadoop徹底入門を参考に、WordCountのプログラムを書き書き...
こちらのサイトも参考に...
Hadoop WordCountメモ(Hishidama's Hadoop tutorial WordCount Memo)

3. プログラムの実行
[実行]-[Run on Hadoop]を使いこなせなかったので、
2で参考にしたサイトの「Eclipseからデバッグ実行」をお手本にJavaアプリケーションとして実行してみた。

MapReduceはうまく動いたけど、Run on Hadoopで実行してみたかったな...
Run on Hadoopって分散モードで実行するときに使うのかな?だとしたら、分散モードで使えるように設定を変更しなきゃなのかな?
この件は引き続きがんばる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/17

WindowsXP で Hadoop の開発環境をつくる

手持ちのマシン(XPさん)でHadoopをアレコレするための準備。

前提は、Win の Eclipse でコードを書き、ローカルモードで動作確認。
分散環境での動作確認は別途VMを作成して、そこで行う。

やることはとりあえず、大きく2つ。
  1. Hadoop(0.20系)をWindowsXP上で起動(ローカルモード)できるようにする
  2. EclipseでHadoopの開発ができるようにする
    →Eclipse(3.7)は既にインストール済み

 ----------------------------------------------------------------
1. Hadoop(0.20系)をWindowsXP上で起動できるようにする

参考にしたサイト
Hadoop/Windows上での実行(0.20.2) - Yoshimopedia

大まかな手順
  1. JAVA_HOMEの設定
  2. Cygwinのインストール
  3. Hadoopの導入
  4. bin/hadoopを編集
  5. 設定ファイルを編集

1. JAVA_HOMEの設定
ユーザー環境変数「JAVA_HOME」にJREのインストール先を設定する
2. Cygwinのインストール
インストール先の指定特にないようなので、C:\直下にインストール。
システム環境変数「Path」に C:\cygwin\bin;C:\cygwin\usr\bin を追加。

3. Hadoopの導入
hadoop-0.20.2.tar.gz をダウンロードして、任意(※)の場所に展開。
※:Program Filesは避けたほうがいいみたい。

なので、C:\直下に展開。
4. bin/hadoopを編集
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
の${CLASSPATH}、${JAVA}にダブルクォートを追加し、
JAVA_PLATFORM=`CLASSPATH="${CLASSPATH}" "${JAVA}" -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
と修正。

5. 設定ファイルを編集
conf/core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>C:\tmp\hadoop</value>
    </property>
</configuration>
※ value の値は作業環境に合わせる。
conf/mapred-site.xml
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>local</value>
    </property>
</configuration>
これで、ローカルモードで MapReduce アプリケーションを動作させることができる。

2. EclipseでHadoopの開発ができるようにする

参考にしたサイト
2009-01-20 - きしだのはてな
Hadoop開発準備のためのEclipseインストール - osacaz4の日記

hadoop にプラグインを追加。

${HADOOP_HOME}/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar

を Eclipse の pluginsフォルダにコピーするだけ。
※:「0.20.2」の部分は先に導入したHadoopのバージョンによって異なる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/16

いまさらだけど、シェバング(shebang)について

「おまじない」として無意識のうちに書いてきたシェバングについて、
いろんなソースを見ていくうちに色々な書き方が出てきたので、改めて整理してみた。

基本的なことについては↓このサイトから。
UNIXの部屋 コマンド検索:shebang (*BSD/Linux)
Kawamura's ChangeLog - シェバング shebang -

#!/bin/sh
って書き方はわかるけど、今回は

#!/usr/bin/env hogehoge
って何!?

って事で、↓このサイトに行き着いた。
どさにっき

スクリプトを実行する環境で、どこにインタープリンタがインストールされているかに依存せずに実行できるようにするために「#!/usr/bin/env」にするって考えだけど、env自体がそもそも環境依存で矛盾が...

なるほどなるほど(゚ー゚)(。_。)(゚-゚)(。_。)
とりあえず、納得はできた。

2011/08/15

HDFS の起動が確認できない

Hadoop 環境(擬似分散モード)を作成して、早速起動してみたものの、Webインターフェースで HDFS の状態を確認できない(;△;)
[hadoop@localhost hadoop]$ ./bin/start-all.sh
を実行。起動確認のため、
NameNodeのWebページ http://localhost:50070/
JobTrackerのWebページ http://localhost:50030/
表示してみると...

NameNodeのWebページ→表示できない
JobTrackerのWebページ→何故か「Nodes」がゼロ

???ってことで、設定ファイル周りから見直し。

設定ファイルは特に問題なかったけど、
NameNodeのフォーマットをrootユーザで実行していて、
NameNode用ディレクトリの所有権やら実行権限の関係でちゃんと動いていないっぽい(;△;)。o0(Oh...)
なので、NameNodeを作り直してみた。
[hadoop@localhost hadoop]$ ./bin/stop-all.sh ←Hadoopデーモンを停止
[hadoop@localhost hadoop]$ su
パスワード:
[root@localhost hadoop]# cd /hadoop/
[root@localhost hadoop]# rm -iR dfs/ ←rootで作成したNameNodeをごっそり削除
    :
  (省略)
    :
[root@localhost hadoop]# exit
[hadoop@localhost hadoop]$ cd ${HADOOP_HOME}
[hadoop@localhost hadoop]$ ./bin/hadoop namenode -format
で、改めてHadoopデーモンを起動して、Webページを確認。
今度はうまくいったみたい (^o^)b

=====
今日の環境
VirtualBox 4.0.10
ホストOS:WindowsXP sp3
ゲストOS:CentOS-5.6(64 bit)
Hadoop 0.20.2

2011/08/12

VirtualBox・CentOS に Hadoop をインストール

作成したVMにHadoopを「擬似分散モード」で導入してみる。

インストール手順はこんな感じ(バージョンは0.20.2)
  1. パッケージの入手
  2. Hadoop用ユーザとグループの設定
  3. Hadoopパッケージの展開と配置
  4. Hadoop用設定
  5. Hadoop用ディレクトリ設定
  6. SSH公開鍵の配布
 参考にしたのはこの本


----------------------------------------------------------------
 1. パッケージの入手
http://www.apache.org/dyn/closer.cgi/hadoop/common/
ここからミラーサイトを表示して、目的のバージョンのパッケージを入手。
今回は、hadoop-0.20.2.tar.gz をゲット

2. Hadoop用ユーザとグループの設定
参考文献の例に倣って、hadoopユーザとhadoopグループを作成。
※ユーザ名、グループ名は任意に設定することもできるみたい。

3. Hadoopパッケージの展開と配置
入手したパッケージを展開し、/usr/localに配置。
シンボリックリンクと環境変数「HADOOP_HOME」を作成。

4. Hadoop用設定
HADOOP_HOME配下にある以下の設定ファイルを編集する。
  • conf/core-site.xml
  • conf/hdfs-site.xml
  • conf/mapred-site.xml
  • conf/mapred-site.xml
5. Hadoop用ディレクトリ設定
4の設定で定義したディレクトリを作成。

6. SSH公開鍵の配布
公開鍵を作成して、スレーブサーバに対して配布。

=====
今日の環境
VirtualBox 4.0.10
ホストOS:WindowsXP sp3
ゲストOS:CentOS-5.6(64 bit)
Hadoop 0.20.2

VirtualBox・CentOSで JDK をインストール

JDKをインストール。

参考にしたのはこのサイト
インストール手順(自己解凍バイナリのインストール)

----------------------------------------------------------------
自己解凍バイナリファイルをダウンロードしておく。
今回は、ホスト側でダウンロードして、共有フォルダに置いた。
共有フォルダについては、過去の記事を。
[root@localhost ~]# ll /usr/local/win_share/
合計 83407
-rwxrwxrwx 1 root root 85407904  8月 12 11:37 jdk-6u26-linux-x64.bin
[root@localhost ~]# cd /usr/java/
[root@localhost java]# sh /usr/local/win_share/jdk-6u26-linux-x64.bin
    :
    :
[root@localhost java]# ll
合計 16
lrwxrwxrwx  1 root root   16  8月 12 11:33 default -> /usr/java/latest
drwxr-xr-x 10 root root 4096  8月 12 11:47 jdk1.6.0_26
lrwxrwxrwx  1 root root   21  8月 12 11:33 latest -> /usr/java/jdk1.6.0_26
コレでおしまい。

=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10

2011/08/11

VirtualBox・CentOSでホストとディレクトリを共有する

手順はこんな感じ。
※先にGuestAdditionのインストールを済ませておくこと。
  1. ゲストOSの設定
  2. CentOSからマウント
参考にしたのはこのサイト

----------------------------------------------------------------
1. ゲストOSの設定
ゲストOSの[デバイス]-[共有フォルダ]メニューを選択。
「共有フォルダ」画面でホストOSで共有したいディレクトリを追加。
 
2. CentOSからマウント
コンソールから適当にディレクトリを作って、1で指定したディレクトリをマウント。
今回は/usr/local 配下に作った。
[root@localhost local]# mkdir win_share
[root@localhost local]# mount.vboxsf vbox-share /usr/local/win_share/
※ mount.vboxsf (ホストOS側のディレクトリ) (CentOS側のディレクトリ)
 
コレでおしまい。
 
=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10

2011/08/10

VirtualBox・CentOSでGuestAdditionをインストールする

ゲストOSにGuestAdditionをインストールすると、まぁ色々便利みたい。
なので、インストールします。

手順はこんな感じ。
  1. 事前準備
    →不足しているツールをインストールする
  2. [デバイス(D)]-[Guest Additionsのインストール(I)]の選択
  3. インストール
参考にしたのはこのサイト
CentOSにGuest Additionをインストールをする方法
GNOME vs KDE | とおやまの備忘録

----------------------------------------------------------------
1. 事前準備
GuestAdditionをインストールするには、↓このツールが必要みたい。
  • gcc
  • make
  • kernel-devel
なので、まずはツールの確認とインストール。
[root@localhost ~]# yum list installed | grep "gcc"
[root@localhost ~]# yum list installed | grep "make"
[root@localhost ~]# yum list installed | grep "kernel-devel"

インストールされていないツールがあったら、インストール・再起動
[root@localhost ~]# yum install gcc
[root@localhost ~]# yum install make
[root@localhost ~]# yum install kernel-devel
[root@localhost ~]# shutdown -r now
2.  [デバイス(D)]-[Guest Additionsのインストール(I)]の選択
ゲストOSの [デバイス(D)]-[Guest Additionsのインストール(I)]の選択。
(デスクトップに「VBOX~」の名前がついたCD-ROMのアイコンが表示されているはず)

3. インストール
コンソールを起動して、「cd /media/VBOX」と入力し、Tabで保管した先に移動。
Linux版のファイルを実行して、再起動。
[root@localhost ~]# cd /media/VBOXADDITIONS_4.0.10_72479/
[root@localhost VBOXADDITIONS_4.0.10_72479]# ll
合計 37423
dr-xr-xr-x 3 root root     2048  6月 24 22:45 32Bit
dr-xr-xr-x 2 root root     2048  6月 24 22:45 64Bit
-r-xr-xr-x 1 root root      647  1月 19  2011 AUTORUN.INF
-r-xr-xr-x 1 root root  7863758  6月 24 22:43 VBoxLinuxAdditions.run
-r-xr-xr-x 1 root root 14665216  6月 24 23:44 VBoxSolarisAdditions.pkg
-r-xr-xr-x 1 root root  9294616  6月 24 22:31 VBoxWindowsAdditions-amd64.exe
-r-xr-xr-x 1 root root  6199880  6月 24 22:25 VBoxWindowsAdditions-x86.exe
-r-xr-xr-x 1 root root   278832  6月 24 22:24 VBoxWindowsAdditions.exe
-r-xr-xr-x 1 root root     6966  6月 24 22:40 autorun.sh
-r-xr-xr-x 1 root root     5523  6月 24 22:40 runasroot.sh
[root@localhost VBOXADDITIONS_4.0.10_72479]# ./VBoxLinuxAdditions.run
[root@localhost VBOXADDITIONS_4.0.10_72479]# shutdown -r now
こんな感じでインストールは完了。

=====
今日の環境
OS:WindowsXP sp3
VirtualBox 4.0.10