hadoop / elastic mapreduceつまみ食い
DESCRIPTION
Jawsug大阪勉強会#3でのプレゼンです。TRANSCRIPT
Hadoop / Elastic MapReduce
つまみ食い玉川竜司
tamagawa_ryuji@twitter
本日の内容自己紹介なぜ Hadoop?
Hadoop と Elastic MapReduce の紹介MapReduce
分散ファイルシステム HDFS
ローカル環境の構築参考資料
自己紹介を少々 本職:ソフトウェア開発者
兼業翻訳者
◦ Hadoop (象本) 7 月に 2nd Edition でます
◦ Data Intensive Text Processing With
MapReduce (予定)
◦ Silverlight で開発するデータ駆動アプリ
ケーション
◦ セマンティック Web プログラミング
◦ プログラミング Google App Engine
◦ プログラミング Windows Azure
なぜ Hadoop? ‘Big Data’ :大量のデータを処理することで価値が生まれる
◦ ただし、既存技術ではメリットを出す事が難しかった
高度なアルゴリズム vs 単純なアルゴリズム
◦ スケールしない高度なアルゴリズムから得られる結果は、単純なアル
ゴリズムで莫大なデータを処理して得られる結果に及ばない
● ニューヨーク株式市場は、 1 日ごとに 1 テラバイトの取引データを生み出しています。● Facebook はおよそ 100 億枚の写真をホストしており、これは 1 ペタバイトの記憶領域を 占めます。● 家系図サイトの Ancestry.com は、 2.5 ペタバイトのデータを保管しています。● The Internet Archive はおよそ 2 ペタバイトのデータを保管しており、 その容量は 1 か月あたり 20 テラバイトのペースで増加しています。● スイスのジュネーブ近郊にある大型ハドロン衝突型加速器は、 年間およそ 15 ペタバイトのデータを生み出しています。
象本から抜粋
なぜ 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
Hadoop の紹介 MapReduce/ 分散ファイルシステムのオープンソース実装 コアは MapReduce/HDFS
安価なハードを大量に並べて、水平分散でデータ処理を行うためのツールキット◦ 大規模並列処理では避けられない、様々な障害に自動的に対処してくれる
◦ 開発者は、処理のロジックに集中できる
◦ 作成されたプログラムは、数千台まではほぼ台数に対してリニアにスケールする(らしい)
比較的安価なマシンを並べたローカルクラスタや、 Amazon
EC2/S3 上で利用可能( Elastic MapReduce ) Hadoop 上で動作する各種ツールがあり、分散処理のためのデファ
クトのフレームワークのようになってきた
Hadoop の構成マスターノード
ジョブトラッカー ネームノード
スレーブノードタスク
トラッカータスク
タスク
タスク
データノード
スレーブノードタスク
トラッカータスク
タスク
タスク
データノード
スレーブノードタスク
トラッカータスク
タスク
タスク
データノード
スレーブノードタスク
トラッカータスク
タスク
タスク
データノード
青は MapReduce の要素赤は分散ファイルシステム( HDFS )の要素
プログラマが書くのはこれだけ!
分散処理をするのに必要な諸々は、Hadoop が面倒見てくれます。• ハード障害対応• 効率の良いネットワーク運用• ジョブの管理• タスクの管理
ジョブトラッカーは、タスクトラッカーに対してタスクを依頼します。対象となるデータのありかは、ネームノードとやりとりをして知ります。障害発生時のリカバリも管理。
タスクトラッカーは、割り当てられたタスクを実行し、結果をジョブトラッカーに報告します。
ネームノードは、HDFS のディレクトリと、ファイルを構成するブロックの場所を管理します。
インフラは、Elastic
MapReduce に面倒を見てもらえ
る!
Elasitc MapReduce Hadoopクラスタを自動的にくみ上げて、ジョブを実行してくれます。
データの入出力にはS3を利用します。 簡単なオペレーションは AWSコンソールから、細かなオペレーション
はコマンドラインやAPIから行えます。 Javaのジョブ(一応これが基本)、Streaming(標準入出力を使って
スクリプト言語で処理)のジョブ、Pig/Hive(抽象度の高いデータ処理が可能)が使えます。
公式ドキュメント(英語)には一通り目を通しましょう。◦ http://aws.amazon.com/archives/Elastic%20MapReduce?_
encoding=UTF8&jiveRedirect=1
ポートを空けてやれば、標準的なモニタ機能は使えます。デバッグの機能もあります。
それでは動いているところを見てみましょう…
MapReduce すべての処理を、 Map と Reduce で行
う
MapもReduceも、入出力共に、キー
と値のペアの集合を扱う
この「型」に落とし込むと、分散処理
にはめ込みやすい
アルゴリズム的にベストとは限らない。
しかし、水平分散のクラスタに簡単に
落とし込める
簡単に力業に持ち込むためのパターン
mapper
mapper
mapper
mapper
Shuffle & Sort
Reducer
Data files
ここで宣伝 MapReduceのアルゴリズムの定番教科書
でます!
オライリージャパンから、8月か9月出版
予定。
一部思いっきり数学しているところがあり
ますが、それ以外のところだけでも十分役
立ちます。
MapReduceアルゴリズムの「デザインパ
ターン」本としてご活用ください。
Hadoopを念頭において書かれてます。鋭意校正中!がんばれ俺!
サンプル: 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)
分散ファイルシステム HDFS
Hadoop Distributed File System
耐障害性(データブロックの複製)
ディスクのシークを減らすためのデータブロック(デフォ
ルト 64MB )
◦ 大量のデータをシーケンシャルアクセスすることを想定している
ネットワークトポロジを意識し、効率的に分散処理を行う
ためのブロック配置を行う
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
ローカル開発環境を用意してみた 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
◦ しょぼいサンプルですみません。
◦ ストリーミングでの実行方法は象本に載ってます
HadoopRDB
Hadoop と RDB HadoopはRDBをそのまま置き換えるものではない
少なくともレイヤーが異なっている
総合的に見れば、RDBは非常に優れている。極論を言えば、スケールしないだけ
Hadoopの上で動作する、抽象度の高いプロジェクトが多く出てきた
OS
ファイル I/O
メモリバッファ
クエリ実行エンジン
SQL
ドライバ
OS
HDFS
MapReduce
NoSQL – Not Only SQL正確には Not Only RDB の方が正しい SQL / RDB がダメ( No SQL )ということではない。 RDB
はこれからも必須の技術 BigData の到来と共に、 RDB だけで何でも片付けられる時代は終わりつつある
技術者には、取り扱う問題に合わせて、ストレージやデータベースを選択する力が求められる◦ AWS で言えば、 RDS ・SimpleDB ・SQS が用意されている。場合
よっては Hadoopも考えましょう。
◦ ‘Free lunch’ の時代は終わり。勉強しないと…
事例紹介: 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) で運用
◦ 自社でデータセンターは持っていない
はじめてみましょう リアルの勉強会(特に関東は非常に活発)と、 Twitter での
コミュニケーションが非常に重要
ローカルで遊ぶには Cloudera社のディストリビューション
マジで使うなら Elastic MapReduce は便利そう。
情報源
◦ Publickey ( http://www.publickey1.jp/index.html )
◦ 日経コンピュータ
◦ 象本・MapReduce 本・Hadoop徹底入門で全体像をつかんでおいて、
各論へ。各論は英語必須。
ありがとうございました!