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ジャパン)
- Android NDKでJNIを使用してアプリを高速化するには (2010/3/17)
C/C++やOpenGL ESといったネイティブコードを使うためのNDKとJNIを紹介し、その使い方や注意点を徹底解説します - 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








