mapreduce hadoop - doshishamikilab.doshisha.ac.jp/dia/monthly/monthly09/20090501/...2009/05/01  ·...

3
回 月例発表会( 月) 知的システムデザイン研究室 はじめに ページ うために サー スが されており, っている データを扱う わらず, させるこ している.こ コンピュータ きがある. コンピュータネットワークを いて, データ している.そ ため, データを するこ っている. システム れており, えるコア ある. し, に大 きるこ したオープンソースソフト ェア につ いて る. の概要 ,多 マシン にデータ によって 案されたフレームワー ある. しい せるこ るように る. れについて る. にあるように, ,シャッ フル, 3つ から されている. データ(キー ペア)を り, に変 するこ る. するこ きる. シャッフル によって られたデータを し,データを 替える. データをま めて れたい げるプロセス ,データ 体について され データ をより するため, る. 処理の具体例(転置インデックスの 作成) インデックス がある ページをリスト した ある. エンジンを ജ㧝 ജ㧞 M Map Map Map 1 2 1 2 1 2 R R R ࠔࡈਛ㑆ࠔࡈ ࡞ࡈ࠶ࡖReduce ࡞ࡈ࠶ࡖReduce ࡞ࡈ࠶ࡖReduce 16MB~64MB ജ㧞 ജ㧞 ജ㧞 ࠔࡈれ( より するにあたって,まず る. まず, すように, ファイル( ページ)を ファイルに 割する. われる. ファイル する 割されたファイル に,これら ファイルが, いている に対して される.各 ファイルからデータ (キー= ページ アドレス, =各 ページ テキストデータ)を み, 意した す. データ(キー=テキストデータを 割し きた =そ がある ページ アドレ ス)を する. らくこれをメモリ える が, ファイルに する. ファイル れる って,あらかじめ した ファイルに 割される. キー シャッフル すように, ファイルが され ,ネットワークを して, をする にそ えられ,シャッフルが まる. シャッフル ファイルに まれたキー(テ キストデータを 割した )に って, データが される.キー シャッフルによって にちいさ から れる ずキー にソートされている える.

Upload: others

Post on 14-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MapReduce Hadoop - Doshishamikilab.doshisha.ac.jp/dia/monthly/monthly09/20090501/...2009/05/01  · Hadoop はHDFS(Hadoop Dis-,Hadoop Mapreduce から構成さ れている.Fig

第 106 回 月例発表会(2009 年 04 月) 知的システムデザイン研究室

MapReduceとHadoop

金 裕可里,木田 直人Yukari KIN,Naoto KIDA

1 はじめに

近年,Webページの検索や,地図の検索を行うために

Googleのサービスが頻繁に利用されており,必要不可欠

なものとなっている.Web検索は,莫大なデータを扱うの

にも関わらず,瞬時に検索結果を表示させることを実現

している.この事実の裏側では,想像以上に膨大な計算

や多数のコンピュータの働きがある.

Googleはその超巨大なコンピュータネットワークを用

いて,膨大なデータ処理を分散化している.そのため,

大量のデータを瞬時に処理することが可能になっている.

その Google の分散処理システムは MapReduce1) と呼

ばれており,Googleの検索技術を支えるコア技術である.

本稿では,MapReduceの原理と,MapReduceを実装

し,誰でも簡単に大規模分散処理を実行できることを目

的としたオープンソースソフトウェアの Hadoop2) につ

いて述べる.

2 MapReduce

2.1 MapReduceの概要

MapReduceとは,多数のマシンで効率的にデータ処理

を行う目的で Google によって考案されたフレームワー

クである.開発者は分散処理の難しい部分をMapRduce

に任せることで,少ない労力で大規模な処理を実行でき

るようになる.

次に MapReduce の処理の流れについて述べる.

MapReduceは,Fig. 1にあるように,Map処理,シャッ

フル,Reduce処理の3つの手順から構成されている.

1. Map処理入力データ(キーと値のペア)を受け取り,

任意の形式に変換することで,必要な情報を抽出す

る.全てのMap処理は並列実行することができる.

2. シャッフル

Mapによって作られたデータを整理し,データを任

意の順に並べ替える.

3. Reduce処理

データをまとめて最終的に手に入れたい結果を作り

上げるプロセスで,データ全体についての整理され

た処理結果を得る.

MapReduce のデータ処理をより理解するため,次節

に具体例を述べる.

2.2 MapReduce処理の具体例(転置インデックスの

作成)

転置インデックスとは,単語とその単語がある Web

ページをリストとしたものである.検索エンジンを実現

ജ㧝 ജ㧞 … ജM

Map Map Map …

1 2 … 1 2 … 1 2 … R R R

ജ࡞ࠗࠔࡈ

ਛ㑆࡞ࠗࠔࡈ

࡞ࡈ࠶ࡖࠪ

Reduce

࡞ࡈ࠶ࡖࠪ

Reduce

࡞ࡈ࠶ࡖࠪ

Reduce

16MB~64MB

ജ㧞 ജ㧞 ജ㧞 ജ࡞ࠗࠔࡈ

Fig.1 MapReduceの流れ(参考文献 3) より参照)

するにあたって,まず必要なものとなる.

2.2.1 Map

まず,Fig. 2に示すように,入力ファイル(Googleが

持つ全 Web ページ)を複数のファイルに分割する.分

割は一般的に 16~64MBごとに行われる.入力ファイル

が仮に 1MB だとすると,分割されたファイルは数万に

及ぶ.次に,これらのファイルが,手の空いている PC

に対して順に分配される.各 PC はファイルからデータ

(キー=Webページのアドレス,値=各Webページの全

テキストデータ)を次々と読み込み,開発者が用意した

Mapを呼び出す.

Mapは新たなデータ(キー=テキストデータを分割し

てできた単語,値=その単語があるWebページのアドレ

ス)を出力する.PCはしばらくこれをメモリ上に蓄える

が,定期的に中間ファイルに保存する.中間ファイルは

式 (1) の分割関数と呼ばれる関数に従って,あらかじめ

指定した数(R)のファイルに分割される.

hash(キー)modR (1)

2.2.2 シャッフル

Fig. 3に示すように,Mapで中間ファイルが生成され

ると,ネットワークを経由して,Reduce処理をする PC

にその場所が伝えられ,シャッフルが始まる.

シャッフルでは,中間ファイルに書き込まれたキー(テ

キストデータを分割した単語)に従って,全てのデータが

整理される.キーはシャッフルによって辞書順にちいさ

いものから順に選ばれるので Reduce の出力は必ずキー

の順にソートされていると言える.

1

Page 2: MapReduce Hadoop - Doshishamikilab.doshisha.ac.jp/dia/monthly/monthly09/20090501/...2009/05/01  · Hadoop はHDFS(Hadoop Dis-,Hadoop Mapreduce から構成さ れている.Fig

Google߇ᜬߩߡోࠆߡߞWebࠫࡍ

Map

ߩบ৻ࠆ PC

ಽഀ㑐ᢙߢ Rߦಽഀ

Rߩਛ㑆࡞ࠗࠔࡈ

http://sakura.co.jp ᪉ດߊᤐߩᣣ http://park.ac.jp ߩ᪉ḩ㐿

ᣣߩ

ᤐ http://sakura.co.jp ᣣ⒟ http://park.ac.jp ᪉ http://sakura.co.jp

ᤐ http://sakura.co.jp

ᣣ http://park.ac.jp

ḩ㐿 http://park.ac.jp

http://park.ac.jp …

PC PC

Mߦಽഀ

……

… …

Fig.2 Map処理の流れ(参考文献 3) より参照)

᪉ http://sakura.co.jp ᣣ http://park.ac.jp …

᪉ http://park.ac.jp ᣣ http://sakura.co.jp …

㧦 㧦

࡞ࡈ࠶ࡖࠪ

ߩบ৻ࠆ PC

Rߩਛ㑆࡞ࠗࠔࡈ ᤐ http://sakura.co.jp

ᣣ http://park.ac.jp

ḩ㐿 http://park.ac.jp

http://park.ac.jp

PC

… …

PC

Fig.3 シャッフル処理の流れ(参考文献 3) より参照)

2.2.3 Reduce

Fig. 4に示すように,Reduceは,シャッフルの終わっ

たグループから順に始められる.各グループの中間ファ

イルには複数のキー(テキストデータを分割してできた

単語)が書き込まれているので,同じキーを持つすべて

の値が集められて Reduceが呼び出される.

Reduce に渡される Reduce の出力はグループごとに

一つのファイルとして Google の巨大分散ファイルシス

テムの GFS(Google File System)に書き込まれる.結

果としてグループの数(R 個)の出力ファイルが生成さ

れる.

2.3 MapReduceが有効な処理

MapReduceが有効に働く処理に,以下のものがある.

� 検索エンジンの転置インデックス作成

� grep

� ソート

� 平均値と分散計算

� PageRank 計算

� PageRank の高いウェブページを検索

� ドキュメント内のリンクの収集

� ログ解析

これまでに述べた MapReduce は Google 独自の技術

であり,誰もが使えるものではない.しかし,同様の技

術を実現している Hadoopと呼ばれるオープンソースソ

フトウェア(OSS)がある.次章では分散処理を誰にで

も簡単に行うことのできる Hadoopについて述べる.

Reduce

ߩบ৻ࠆ PC

᪉ http://sakura.co.jp ᣣ http://park.ac.jp …

᪉ http://park.ac.jp ᣣ http://sakura.co.jp …

㧦 㧦

PC

PC

http://planet.co.jp 7ⴕ⋡ 6⋡ 92009/10/22 ࠻ࡦࠗࡐᚑ

18ⴕ⋡ 39⋡ 92009/10/22 ࠻ࡦࠗࡐᚑ

24ⴕ⋡ 45⋡ 92009/10/22 ࠻ࡦࠗࡐ ᚑ

24ⴕ⋡ 60⋡ 92009/10/22 ࠻ࡦࠗࡐ ᚑ

http://star.co.jp 2ⴕ⋡ 34⋡ ᚑ 2008/2/10 ࠻ࡦࠗࡐ12

4ⴕ⋡ 58⋡ ᚑ 2008/2/10 ࠻ࡦࠗࡐ9

㧦 㧦

㧦 㧦

᪉ http://sakura.co.jp 19ⴕ 24⋡ ᚑ 1996/3/14 ࠻ࡦࠗࡐ9

20ⴕ⋡ 31⋡ ᚑ 1996/3/14 ࠻ࡦࠗࡐ9

㧦 㧦

㧦 㧦

GoogleߩᏂᄢಽᢔࡓ࠹ࠬࠪ࡞ࠗࠔࡈ㧔Google File System㧕

Fig.4 Reduce処理の流れ(参考文献 3) より参照)

3 Hadoop

Hadoopとは,大量のデータを手軽に複数のマシンに分

散して処理できるオープンソースのプラットフォームで

ある. Hadoop におけるデータ分散処理のベースとなっ

ているのは前章で述べたMapReduceである.

Hadoop とは, 面倒な分散処理を, プログラマが「簡単

に」扱えることを目的としたプラットフォームである.

3.1 Hadoopの構造

Hadoop は Google の基盤ソフトウェアである

GFS(Google File System) と,Mapreduce のオープ

ンソース実装である.Hadoop は HDFS(Hadoop Dis-

tributed File Systm),Hadoop Mapreduce から構成さ

れている.Fig. 5 にあるように,Google の基盤ソフト

ウェアに対応させると,前者は,GFS,後者はMapreduce

に対応する.分散データベース Big Tableも hBaseと呼

ばれるオープンソース実装によって実装された.

Mapreduce BigTable

Google File System Hadoop

Distributed File System

Hadoop

MapReduce hBase

Google の基礎技術 Hadoop の基礎技術

Fig.5 Google,Hadoop基盤技術の対応関係(参考文献2) より参照)

3.2 HDFSの概要

HDFSの構造は GFSの構造を踏襲している.GFSと

は多数の PC 上に構築される分散ファイルシステムのこ

とである.PC を追加するだけで,システムを停止する

2

Page 3: MapReduce Hadoop - Doshishamikilab.doshisha.ac.jp/dia/monthly/monthly09/20090501/...2009/05/01  · Hadoop はHDFS(Hadoop Dis-,Hadoop Mapreduce から構成さ れている.Fig

ことなくディスク容量・読み込み性能・書き込み性能を

拡大でき,スケーラビリティがあるといえる.また,大

容量であり,数百 TB クラスの大規模なディスクの提供

を可能にしている.さらに,障害を自動的に監視・検出・

修復が可能である.

GFSの特徴としては同じファイルを異なるマシンに重

複して持たせることで,一部のマシンが故障してもファイ

ルが失われないという点が挙げられる(冗長化).Google

では何万台ものサーバーが常時稼動しているので,1 日

に多くのマシンが壊れる.それに耐えられるような耐故

障性の高い分散ファイルシステムを持つことは巨大デー

タを扱う上で必須である.

3.3 Hadoop MapReduce

Hadoop MapReduce の構造はGoogle MapReduceの

構造を踏襲している.Hadoop のみがもつ機能として,

ファイルの分散キャッシュ機能と先に延べた Hadoop

Streamingがある.

3.3.1 Hadoop Streaming

Hadoopはすべて Javaで記述されており,MapReduce

処理を書く場合も基本的には Java でプログラムを書く

ことが想定されている.ただし Hadoop Streamingとい

う拡張パッケージを用いると,C/C++・Ruby・Python

など任意の言語と標準入出力を用いて MapReduce 処理

を書くことも出来る.

3.4 Hadoopの利点

Hadoop では Map 関数と Reduce 関数を実装する.

Shu�e はすでに実装されているため,利用者が作るの

はMapと Reduceだけでよい.Hadoopの仕組みにのっ

とって機能を実装さえすれば,自動で分散処理が行え

るのだ.1 台では処理にかなり時間がかかるような大量

のデータも,Hadoop によって, 複数マシンに分散させる

ことで, 驚くべきスピードで処理を行うことができる.

例えば, 今まで 1 台でやっていた, あるログ集計処理を,

Hadoop (マスタ 1台,スレーブ 19台)で行うようにした

ところ, 従来は 6 時間 6 分 35 秒だったのが, Hadoop を

使うと,5分 34秒になったという結果がでている. 分散コ

ンピューティングと聞くと,研究室レベルでの活用とか,

Googleや Yahoo!,IBMといった大企業しか使えないの

ではないかと思われがちだ.Hadoop の流儀にしたがっ

て機能を実装すれば簡単に分散処理を実現できる.

4 まとめ

MapReduce と Hadoop は莫大になったデータをより

効率的に,安価に,簡単に処理できるようにするために

編み出された工夫である.MapReduce はプログラミン

グモデルの名前であり,Hadoop は MapReduce を活か

して作られたオープンソースのプラットフォームである.

これらの利点から,Yahoo!をはじめとする様々な企業が

積極的に導入しており,改良も進んでいる.

5 今後の展望

米国 Amazon.com 傘下の Amazon Web Services

(AWS)は 4月 2日,「Amazon Elastic MapReduce」の

ベータ版をリリースしたと発表した.Hadoop クラスタ

のセットアップはかなり複雑な作業であった.しかし,

Amazon Elastic MapReduceは,Hadoopクラスタを大

幅に利用しやすくすることを目指したサービスである

のだ.

同社によると,Elastic MapReduceを使えば,

� 手軽なポイント&クリック操作で Hadoopジョブを

作成,実行,監視,制御できる.

� ハードウェアを大量購入することもなく,(ハード

ウェアを)ラックに収めてネットワークにつないで

管理するといった作業も必要もない.

� リソースが足りなくなることや,組織内のほかのメ

ンバーとの共有について心配することもない.監視

もチューニングも不要

� システムやアプリケーション・ソフトウェアのアッ

プグレードに時間をかける必要もない.

� 時間単位課金で実行できる.

という機能がある.

参考文献

1) Je�rey Dean,Sanjay Ghemawat:MapReduce: Sim-

pli�ed Data Processing on Large Clusters,OSDI'04:

Sixth Symposium on Operating System Design and

Implementation,December,2004

2) エヌ・ティ・ティ レゾナント株式会社,株式会社 Pre-

ferred Infrastructure:Hadoop調査報告書,2008

3) 西田圭介:Googleを支える技術 巨大システムの内側

の世界,技術評論社,2008

3