19
Hadoop / Elastic MapReduce つつつつつ つつつつ tamagawa_ryuji@twitter

Hadoop / Elastic MapReduceつまみ食い

  • Upload
    -

  • View
    1.752

  • Download
    1

Embed Size (px)

DESCRIPTION

Jawsug大阪勉強会#3でのプレゼンです。

Citation preview

Page 1: Hadoop / Elastic MapReduceつまみ食い

Hadoop / Elastic MapReduce

つまみ食い玉川竜司

tamagawa_ryuji@twitter

Page 2: Hadoop / Elastic MapReduceつまみ食い

本日の内容自己紹介なぜ Hadoop?

Hadoop と Elastic MapReduce の紹介MapReduce

分散ファイルシステム HDFS

ローカル環境の構築参考資料

Page 3: Hadoop / Elastic MapReduceつまみ食い

自己紹介を少々 本職:ソフトウェア開発者

兼業翻訳者

◦ Hadoop (象本) 7 月に 2nd Edition でます

◦ Data Intensive Text Processing With

MapReduce (予定)

◦ Silverlight で開発するデータ駆動アプリ

ケーション

◦ セマンティック Web プログラミング

◦ プログラミング Google App Engine

◦ プログラミング Windows Azure

Page 4: Hadoop / Elastic MapReduceつまみ食い

なぜ Hadoop? ‘Big Data’ :大量のデータを処理することで価値が生まれる

◦ ただし、既存技術ではメリットを出す事が難しかった

高度なアルゴリズム vs 単純なアルゴリズム

◦ スケールしない高度なアルゴリズムから得られる結果は、単純なアル

ゴリズムで莫大なデータを処理して得られる結果に及ばない

●  ニューヨーク株式市場は、 1 日ごとに 1 テラバイトの取引データを生み出しています。●   Facebook はおよそ 100 億枚の写真をホストしており、これは 1 ペタバイトの記憶領域を  占めます。●  家系図サイトの Ancestry.com は、 2.5 ペタバイトのデータを保管しています。●   The Internet Archive はおよそ 2 ペタバイトのデータを保管しており、  その容量は 1 か月あたり 20 テラバイトのペースで増加しています。●  スイスのジュネーブ近郊にある大型ハドロン衝突型加速器は、  年間およそ 15 ペタバイトのデータを生み出しています。

象本から抜粋

Page 5: Hadoop / Elastic MapReduceつまみ食い

なぜ Hadoop? ( 2 ) 必要なのは、スケールアップ = マシンのパワーアップではない

スケールアウト = 分散処理こそが必要

多くの場合、スケーラビリティのネックになっているのは I/O

◦ 特にディスクのランダムアクセス性能( IOPS )は、この 20 年でほとんど伸びていな

◦ http://www.youtube.com/watch?v=9eMWG3fwiEU

In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but for more systems of computers.

—Grace Hopper

Page 6: Hadoop / Elastic MapReduceつまみ食い

Hadoop の紹介 MapReduce/ 分散ファイルシステムのオープンソース実装 コアは MapReduce/HDFS

安価なハードを大量に並べて、水平分散でデータ処理を行うためのツールキット◦ 大規模並列処理では避けられない、様々な障害に自動的に対処してくれる

◦ 開発者は、処理のロジックに集中できる

◦ 作成されたプログラムは、数千台まではほぼ台数に対してリニアにスケールする(らしい)

比較的安価なマシンを並べたローカルクラスタや、 Amazon

EC2/S3 上で利用可能( Elastic MapReduce ) Hadoop 上で動作する各種ツールがあり、分散処理のためのデファ

クトのフレームワークのようになってきた

Page 7: Hadoop / Elastic MapReduceつまみ食い

Hadoop の構成マスターノード

ジョブトラッカー ネームノード

スレーブノードタスク

トラッカータスク

タスク

タスク

データノード

スレーブノードタスク

トラッカータスク

タスク

タスク

データノード

スレーブノードタスク

トラッカータスク

タスク

タスク

データノード

スレーブノードタスク

トラッカータスク

タスク

タスク

データノード

青は MapReduce の要素赤は分散ファイルシステム( HDFS )の要素

プログラマが書くのはこれだけ!

分散処理をするのに必要な諸々は、Hadoop が面倒見てくれます。• ハード障害対応• 効率の良いネットワーク運用• ジョブの管理• タスクの管理

ジョブトラッカーは、タスクトラッカーに対してタスクを依頼します。対象となるデータのありかは、ネームノードとやりとりをして知ります。障害発生時のリカバリも管理。

タスクトラッカーは、割り当てられたタスクを実行し、結果をジョブトラッカーに報告します。

ネームノードは、HDFS のディレクトリと、ファイルを構成するブロックの場所を管理します。

インフラは、Elastic

MapReduce に面倒を見てもらえ

る!

Page 8: Hadoop / Elastic MapReduceつまみ食い

Elasitc MapReduce Hadoopクラスタを自動的にくみ上げて、ジョブを実行してくれます。

データの入出力にはS3を利用します。 簡単なオペレーションは AWSコンソールから、細かなオペレーション

はコマンドラインやAPIから行えます。 Javaのジョブ(一応これが基本)、Streaming(標準入出力を使って

スクリプト言語で処理)のジョブ、Pig/Hive(抽象度の高いデータ処理が可能)が使えます。

公式ドキュメント(英語)には一通り目を通しましょう。◦ http://aws.amazon.com/archives/Elastic%20MapReduce?_

encoding=UTF8&jiveRedirect=1

ポートを空けてやれば、標準的なモニタ機能は使えます。デバッグの機能もあります。

それでは動いているところを見てみましょう…

Page 9: Hadoop / Elastic MapReduceつまみ食い

MapReduce すべての処理を、 Map と Reduce で行

MapもReduceも、入出力共に、キー

と値のペアの集合を扱う

この「型」に落とし込むと、分散処理

にはめ込みやすい

アルゴリズム的にベストとは限らない。

しかし、水平分散のクラスタに簡単に

落とし込める

簡単に力業に持ち込むためのパターン

mapper

mapper

mapper

mapper

Shuffle & Sort

Reducer

Data files

Page 10: Hadoop / Elastic MapReduceつまみ食い

ここで宣伝 MapReduceのアルゴリズムの定番教科書

でます!

オライリージャパンから、8月か9月出版

予定。

一部思いっきり数学しているところがあり

ますが、それ以外のところだけでも十分役

立ちます。

MapReduceアルゴリズムの「デザインパ

ターン」本としてご活用ください。

Hadoopを念頭において書かれてます。鋭意校正中!がんばれ俺!

Page 11: Hadoop / Elastic MapReduceつまみ食い

サンプル: Word CountFreebase is an open database of the world’s information, covering millions of topics inhundreds of categories. Drawing from large open data sets like Wikipedia, MusicBrainz,and the SEC archives, it contains structured information on many popular topics,including movies, music, people and locations – all reconciled and freely available. Thisinformation is supplemented by the efforts of a passionate global community of users

(0, Freebase is an open database of the world’s information, covering millions of topics in...)(1, hundreds of categories. Drawing from large open data sets like Wikipedia, MusicBrainz,...)(2, and the SEC archives, it contains structured information on many popular topics,...)(3, including movies, music, people and locations – all reconciled and freely available. This...)(4, information is supplemented by the efforts of a passionate global community of users...)

(Freebase , 1)(is , 1)(an , 1)(open , 1)(database , 1)

(freebase, [1])(is, [1, 1])(an, [1])(open, [1])(database, [1, 1])

Hadoop による入力

map タスクによる処理

Hadoop によるシャッフル

reduce タスクによる処理

(MySQL, 1)(is, 1)(not, 1)(proprietary, −5)(database, 119)

他の map タスクによる処

for line in sys.stdin:

for word in line.split():

print word + “\t” + “1”

for aLine in sys.stdin:

currentWord = aLine.split()[0]

if currentWord == prevWord:

count += 1

else:

print "%s\t%d" % (prevWord, count)

count = 1

prevWord = currentWord

•コードを書く方法:• Hadoop Streaming (標準入出力。簡単だけど遅

い)• Java (これが標準)

この他にも状況に応じていろいろなやり方があるので、 Hadoop Confefence Japan 2009 の資料も参考にしてください

(freebase, 1)(is, 2)(an, 1(open, 1)(database, 2)

Page 12: Hadoop / Elastic MapReduceつまみ食い

分散ファイルシステム HDFS

Hadoop Distributed File System

耐障害性(データブロックの複製)

ディスクのシークを減らすためのデータブロック(デフォ

ルト 64MB )

◦ 大量のデータをシーケンシャルアクセスすることを想定している

ネットワークトポロジを意識し、効率的に分散処理を行う

ためのブロック配置を行う

Page 13: Hadoop / Elastic MapReduceつまみ食い

Hadoop/HDFS のいいところ データセンター内のもっとも貴重なリソースは?

◦ ネットワーク帯域、次いでディスクの処理能力

「データローカリティ」を意識したデータブロックの複製とタスク配置◦ 複製度3なら、ローカルノード、別ラック内のノード、同一ラック内の別ノードへ

◦ タスクはできる限りローカルのデータノード内のデータで処理を行えるように管理される

◦ ただし、EMRではラックアウェアネスは実現されない

ラック A

ノード A-1

タスク

データノードData

Bloock

ノード A-2

タスク

データノードData

Bloock

ノード A-3

タスク

データノードData

Bloock

ラック B

ノード B-1

タスク

データノードData

Bloock

DataBloock

ノード B-2

タスク

データノードData

Bloock

DataBloock

ノード B-3

タスク

データノードData

Bloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

DataBloock

Page 14: Hadoop / Elastic MapReduceつまみ食い

ローカル開発環境を用意してみた Linux ( CentOS5 )と CDH ( Cloudera Distribution

including Apache Hadoop ) ver 3

◦ https://ccp.cloudera.com/display/SUPPORT/Downloads

疑似分散モード( Psuedo Distribution mode )でインストール

◦ Yum や apt を使って簡単にできます

◦ https://ccp.cloudera.com/display/CDHDOC/CDH3+Quick+Start+

Guide

◦ https://ccp.cloudera.com/display/CDHDOC/CDH3+Installation+G

uide

デモンストレーション

◦ Wikipedia で word count

◦ しょぼいサンプルですみません。

◦ ストリーミングでの実行方法は象本に載ってます

Page 15: Hadoop / Elastic MapReduceつまみ食い

HadoopRDB

Hadoop と RDB HadoopはRDBをそのまま置き換えるものではない

少なくともレイヤーが異なっている

総合的に見れば、RDBは非常に優れている。極論を言えば、スケールしないだけ

Hadoopの上で動作する、抽象度の高いプロジェクトが多く出てきた

OS

ファイル I/O

メモリバッファ

クエリ実行エンジン

SQL

ドライバ

OS

HDFS

MapReduce

Page 16: Hadoop / Elastic MapReduceつまみ食い

NoSQL – Not Only SQL正確には Not Only RDB の方が正しい SQL / RDB がダメ( No SQL )ということではない。 RDB

はこれからも必須の技術 BigData の到来と共に、 RDB だけで何でも片付けられる時代は終わりつつある

技術者には、取り扱う問題に合わせて、ストレージやデータベースを選択する力が求められる◦ AWS で言えば、 RDS ・SimpleDB ・SQS が用意されている。場合

よっては Hadoopも考えましょう。

◦ ‘Free lunch’ の時代は終わり。勉強しないと…

Page 17: Hadoop / Elastic MapReduceつまみ食い

事例紹介: Cookpad 日本最大のレシピサイト

◦ 2010年3月現在の月間ユーザー数は884万人

◦ 月間ページビュー数は 4億6000万回

実は世界最大級の Ruby on Rails サイトでもある

Hadoop に関するプレゼンテーション

◦ http://techlife.cookpad.com/2010/04/28/

urapad_kyoto_presentation/

7000時間かかっていた処理が30時間に

◦ 夏場のカレーはナスらしいです

Hadoop を Amazon EC2/S3 ( Elastic MapReduce) で運用

◦ 自社でデータセンターは持っていない

Page 18: Hadoop / Elastic MapReduceつまみ食い

はじめてみましょう リアルの勉強会(特に関東は非常に活発)と、 Twitter での

コミュニケーションが非常に重要

ローカルで遊ぶには Cloudera社のディストリビューション

マジで使うなら Elastic MapReduce は便利そう。

情報源

◦ Publickey ( http://www.publickey1.jp/index.html )

◦ 日経コンピュータ

◦ 象本・MapReduce 本・Hadoop徹底入門で全体像をつかんでおいて、

各論へ。各論は英語必須。

Page 19: Hadoop / Elastic MapReduceつまみ食い

ありがとうございました!