検索
連載

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

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena

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がインストールされます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Fedora 7にhadoopユーザーを追加

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Hadoopのインストール

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

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

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

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

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

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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

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

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る