MapReduceのJava実装
Apache Hadoopを使ってみた
特集:いま再注目の分散処理技術(後編)
株式会社ガリレオ
小山博史
2008/9/29
最近注目を浴びている分散処理技術「MapReduce」の利点をサンプルからアルゴリズムレベルで理解し、昔からあるJava関連の分散処理技術を見直す特集企画(編集部)
Apache Hadoopプロジェクトとは何か?
| 今回の主な内容 ・ Apache Hadoopプロジェクトとは何か? ・ Hadoopを使うための準備 ・ 前編で紹介したプログラムをHadoopで実装 ・ Hadoopプログラムをコンパイルして実行 ・ Hadoop用のEclipseプラグインもあるが…… ・ 巨大なデータを処理するときの 選択肢の1つとして |
本特集では、いま再注目の分散処理技術についていろいろと紹介してきました。前編の「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を動作させるためには、UbuntuやFedoraといった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用JDKのrpm版をダウンロードして、インストールします。「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 |
インストールが終了すると、「/usr/java/latest」ディレクトリに最新版のJDKが用意されるので、動作するか確認をします。
# /usr/java/latest/bin/java -version |
■ Fedora 7にhadoopユーザーを追加
次に、下記のように「hadoop」ユーザーを追加して、localhostへsshでログインできるようにします。パスフレーズは空にしています。
# adduser hadoop |
hadoopユーザーで、localhostへsshでログインできることを確認します。もしうまくいかなかった場合は「ssh -vvv localhost」として、動作をチェックして原因を突き止めてください。ログインできることを確認したら、exitをしてください。
$ ssh localhost |
■ 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 |
設定ファイル内では、環境変数「JAVA_HOME」を指定する必要があるので、次のように指定します。
export JAVA_HOME=/usr/java/latest |
■ 付属サンプルでHadoopの動作確認
Hadoopには、サンプルが付いています。これらを、次のようにして実行することもできます。
「input」ディレクトリには、入力データとなるファイルとして「conf/*.xml」をコピーして入れておきます。単語の出現回数をカウントする「wordcount」サンプルの実行結果は、output.wordcountファイルに出力されます。
また、「'dfs[a-z.]+'」という正規表現にマッチする行を出力する「grep」サンプルの実行結果は、output.grepファイルに出力されます。
$ cd hadoop |
初期設定では、Hadoopは単体のJavaプロセスで実行されるモードとなっています。1つのマシンだけでプログラムを動作させることができるので、動作確認が簡単にできます。
さてMapReduceのアルゴリズムは前編で理解しましたから、次ページでは、それを頭に置いてHadoopを使ったプログラムを見てみることにしましょう。忘れてしまった読者はもう1度前編を読み返しておいてください。
| 1-2-3 |
| INDEX 「特集:いま再注目の分散処理技術(後編)」 | ||
| Page1 | ||
| Apache Hadoopプロジェクトとは何か? Hadoopを使うための準備 |
||
| Page2 | ||
| 前編で紹介したプログラムをHadoopで実装 | ||
| Page3 | ||
| Hadoopプログラムをコンパイルして実行 Hadoop用のEclipseプラグインもあるが…… 巨大なデータを処理するときの選択肢の1つとして |
||
いま再注目の分散処理技術 バックナンバー 連載インデックスへ»
- 第1回 GoogleのMapReduceアルゴリズムをJavaで理解する
- 第2回 イロイロな分散処理技術とイマドキのWebサービス
- 最終回 MapReduceのJava実装Apache Hadoopを使ってみた
| Java Solution全記事一覧 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


