連載
» 2008年09月29日 00時00分 公開

いま再注目の分散処理技術(後編):MapReduceのJava実装Apache Hadoopを使ってみた (1/3)

最近注目を浴びている分散処理技術「MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部)

[小山博史,株式会社ガリレオ]

Apache Hadoopプロジェクトとは何か?

 本特集では、いま再注目の分散処理技術についていろいろと紹介してきました。前編の「GoogleのMapReduceアルゴリズムをJavaで理解する」では、分散処理技術で最近注目を浴びているものとして、グーグルのMapReduceアルゴリズムを紹介し、中編の「イロイロな分散処理技術とイマドキのWebサービス」では、MapReduceに至るまでのさまざまな分散処理技術やWebサービスについて紹介しました。

 そのMapReduceアルゴリズムをJavaで実装したものがあります。それは、「Apache Hadoop」プロジェクトで開発されていて、すでに実用性があると調査結果も出ているようです(参考:Hadoopは耐障害性に課題があるが実用性十分)。最後の後編では、Apache Hadoop(以下、Hadoop)を使ったプログラムの作成方法を解説し、Hadoop用のEclipseプラグインも紹介します。

 Hadoopプロジェクトは、「Hadoop Core」と「HBase」といったソフトウェアを開発していて、オープンソースライセンスのApache License Version 2.0で公開しています。Hadoopのサイトによると、Hadoop Coreは、「HDFS(Hadoop Distributed Filesystem)」という分散ファイルシステムを提供し、MapReduce分散コンピューティングをサポートします。HBaseは分散データベースです。このHBaseを実装するに当たり、Hadoop Coreが利用されています。

 なお、これらをGoogleの基盤技術に置き換えると、HDFSは「Google File System」、HBaseは「BigTable」のJava実装となります。今回はHadoop Coreだけを使ってみます。

Hadoopを使うための準備

 Hadoopを動作させるためには、UbuntuFedoraといったLinux系OSを使います。Windows版もありますが、開発中のようです。また、Java 5以降や、ssh(Secure SHell)、rsyncコマンドが必要です。sshd(sshのデーモン)も動作している必要があります。この辺りに慣れていないと、ちょっと大変かもしれません。

 今回は手元にVMware Playerで動作するLinuxディストリビューションの1つFedora 7の日本語版があったので、そこで動かしてみました。ここでは、できるだけ気軽に試す方法を紹介するということで、複数のマシンを使った稼働方法ではなく、単体マシンで動かす方法を紹介することにします。単体で動作させるにはSSHは動いていなくてもいいようですが、分散して動作させるときのためにインストールについては、SSHの設定もしておくことにします。

Linux用JDK 6 Update 7のインストール

 まずは、Linux用JDKrpm版をダウンロードして、インストールします。「Java SE Downloads」から2008年8月の原稿執筆時点で最新版のJDK 6 Update 7(jdk-6u7-linux-i586-rpm.bin)を使いました。

 インストール作業はrootで行います。jdk-6u7-linux-i586-rpm.binを実行すると、ライセンスが表示されるので、[space]キーを押してページを送り、最後に「yes」を入力して同意をします。すると、JDKがインストールされます。

# chmod +x jdk-6u7-linux-i586-rpm.bin
# ./jdk-6u7-linux-i586-rpm.bin

……(略)……

Do you agree to the above license terms? [yes or no]
yes

……(略)……

 インストールが終了すると、「/usr/java/latest」ディレクトリに最新版のJDKが用意されるので、動作するか確認をします。

# /usr/java/latest/bin/java -version
ava version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

Fedora 7にhadoopユーザーを追加

 次に、下記のように「hadoop」ユーザーを追加して、localhostへsshでログインできるようにします。パスフレーズは空にしています。

# adduser hadoop
# su - hadoop
$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
60:19:1a:d5:2a:3b:fd:b2:30:b7:de:cd:bb:1a:f8:85 hadoop@localhost

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

 hadoopユーザーで、localhostへsshでログインできることを確認します。もしうまくいかなかった場合は「ssh -vvv localhost」として、動作をチェックして原因を突き止めてください。ログインできることを確認したら、exitをしてください。

$ ssh localhost
$ exit

Hadoopのインストール

 準備ができたら、Hadoopをダウンロードしてインストールします。今回は、2008年8月の執筆時点での最新版である「Apache Hadoop 0.18.0(hadoop-0.18.0.tar.gz)」を使うことにしました。「Welcome to Hadoop!」のページにある「Download」からたどると、ダウンロードページに行くことができます。このページで表示されるサイトの中からダウンロードサイトを選んで、ファイルをダウンロードします。

 ダウンロードしたファイルは展開して、シンボリックリンクを作成しておきます。次に、設定ファイル「hadoop/conf/hadoop-env.sh」を編集します。

$ tar xzf hadoop-0.18.0.tar.gz
$ ln -s hadoop-0.18.0 hadoop
$ vi hadoop/conf/hadoop-env.sh

 設定ファイル内では、環境変数「JAVA_HOME」を指定する必要があるので、次のように指定します。

export JAVA_HOME=/usr/java/latest

付属サンプルでHadoopの動作確認

 Hadoopには、サンプルが付いています。これらを、次のようにして実行することもできます。

 「input」ディレクトリには、入力データとなるファイルとして「conf/*.xml」をコピーして入れておきます。単語の出現回数をカウントする「wordcount」サンプルの実行結果は、output.wordcountファイルに出力されます。

 また、「'dfs[a-z.]+'」という正規表現にマッチする行を出力する「grep」サンプルの実行結果は、output.grepファイルに出力されます。

$ cd hadoop
$ mkdir input
$ cp conf/*.xml input/
$ bin/hadoop jar hadoop-0.18.0-examples.jar wordcount input output.wordcount
$ bin/hadoop jar hadoop-0.18.0-examples.jar grep input output.grep 'dfs[a-z.]+'

 初期設定では、Hadoopは単体のJavaプロセスで実行されるモードとなっています。1つのマシンだけでプログラムを動作させることができるので、動作確認が簡単にできます。

 さてMapReduceのアルゴリズムは前編で理解しましたから、次ページでは、それを頭に置いてHadoopを使ったプログラムを見てみることにしましょう。忘れてしまった読者はもう1度前編を読み返しておいてください。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。