Hadoop / Elastic MapReduceつまみ食い<br />玉川竜司<br />tamagawa_ryuji@twitter<br />
本日の内容<br />自己紹介<br />なぜHadoop?<br />HadoopとElastic MapReduceの紹介<br />MapReduce<br />分散ファイルシステムHDFS<br />ローカル環境の構築<br />参考資...
自己紹介を少々<br />本職:ソフトウェア開発者<br />兼業翻訳者<br />Hadoop(象本)<br />7月に2nd Editionでます<br />Data Intensive Text Processing With MapRe...
なぜHadoop?<br />‘Big Data’:大量のデータを処理することで価値が生まれる<br />ただし、既存技術ではメリットを出す事が難しかった<br />高度なアルゴリズム vs単純なアルゴリズム<br />スケールしない高度なアル...
なぜHadoop?(2)<br />必要なのは、スケールアップ=マシンのパワーアップではない<br />スケールアウト=分散処理こそが必要<br />多くの場合、スケーラビリティのネックになっているのはI/O<br />特にディスクのランダムア...
Hadoopの紹介<br />MapReduce/分散ファイルシステムのオープンソース実装<br />コアはMapReduce/HDFS<br />安価なハードを大量に並べて、水平分散でデータ処理を行うためのツールキット<br />大規模並列処...
Hadoopの構成<br />青はMapReduceの要素<br />赤は分散ファイルシステム(HDFS)の要素<br />インフラは、<br />Elastic MapReduceに<br />面倒を見てもらえる!<br />ジョブトラッカー...
効率の良いネットワーク運用
ジョブの管理
タスクの管理</li></ul>ジョブ<br />トラッカー<br />ネームノード<br />プログラマが書くのはこれだけ!<br />スレーブノード<br />スレーブノード<br />スレーブノード<br />スレーブノード<br />ネ...
Elasitc MapReduce<br />Hadoopクラスタを自動的にくみ上げて、ジョブを実行してくれます。データの入出力にはS3を利用します。<br />簡単なオペレーションはAWSコンソールから、細かなオペレーションはコマンドラインや...
MapReduce<br />すべての処理を、MapとReduceで行う<br />MapもReduceも、入出力共に、キーと値のペアの集合を扱う<br />この「型」に落とし込むと、分散処理にはめ込みやすい<br />アルゴリズム的にベストと...
ここで宣伝<br />MapReduceのアルゴリズムの定番教科書でます!<br />オライリージャパンから、8月か9月出版予定。<br />一部思いっきり数学しているところがありますが、それ以外のところだけでも十分役立ちます。<br />Ma...
サンプル:Word Count<br />Freebase is an open database of the world’s information, covering millions of topics in<br />hundreds...
Hadoop Streaming(標準入出力。簡単だけど遅い)
Java(これが標準)</li></ul>この他にも状況に応じていろいろなやり方があるので、HadoopConfefence Japan 2009の資料も参考にしてください<br />Hadoopによる入力<br />(0, Freebase ...
分散ファイルシステムHDFS<br />Hadoop Distributed File System<br />耐障害性(データブロックの複製)<br />ディスクのシークを減らすためのデータブロック(デフォルト64MB)<br />大量のデー...
Hadoop/HDFSのいいところ<br />データセンター内のもっとも貴重なリソースは?<br />ネットワーク帯域、次いでディスクの処理能力<br />「データローカリティ」を意識したデータブロックの複製とタスク配置<br />複製度3なら...
ローカル開発環境を用意してみた<br />Linux(CentOS5)とCDH(Cloudera Distribution including Apache Hadoop) ver 3<br />https://ccp.cloudera.com...
Upcoming SlideShare
Loading in...5
×

Hadoop / Elastic MapReduceつまみ食い

1,807

Published on

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,807
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Hadoop / Elastic MapReduceつまみ食い

  1. 1. Hadoop / Elastic MapReduceつまみ食い<br />玉川竜司<br />tamagawa_ryuji@twitter<br />
  2. 2. 本日の内容<br />自己紹介<br />なぜHadoop?<br />HadoopとElastic MapReduceの紹介<br />MapReduce<br />分散ファイルシステムHDFS<br />ローカル環境の構築<br />参考資料<br />
  3. 3. 自己紹介を少々<br />本職:ソフトウェア開発者<br />兼業翻訳者<br />Hadoop(象本)<br />7月に2nd Editionでます<br />Data Intensive Text Processing With MapReduce(予定)<br />Silverlightで開発するデータ駆動アプリケーション<br />セマンティックWebプログラミング<br />プログラミングGoogle App Engine<br />プログラミングWindows Azure<br />
  4. 4. なぜHadoop?<br />‘Big Data’:大量のデータを処理することで価値が生まれる<br />ただし、既存技術ではメリットを出す事が難しかった<br />高度なアルゴリズム vs単純なアルゴリズム<br />スケールしない高度なアルゴリズムから得られる結果は、単純なアルゴリズムで莫大なデータを処理して得られる結果に及ばない<br />● ニューヨーク株式市場は、1日ごとに1テラバイトの取引データを生み出しています。<br />● Facebookはおよそ100億枚の写真をホストしており、これは1ペタバイトの記憶領域を<br />  占めます。<br />● 家系図サイトのAncestry.comは、2.5ペタバイトのデータを保管しています。<br />● The Internet Archiveはおよそ2ペタバイトのデータを保管しており、<br />  その容量は1か月あたり20 テラバイトのペースで増加しています。<br />● スイスのジュネーブ近郊にある大型ハドロン衝突型加速器は、<br />  年間およそ15ペタバイトのデータを生み出しています。<br />象本から抜粋<br />
  5. 5. なぜHadoop?(2)<br />必要なのは、スケールアップ=マシンのパワーアップではない<br />スケールアウト=分散処理こそが必要<br />多くの場合、スケーラビリティのネックになっているのはI/O<br />特にディスクのランダムアクセス性能(IOPS)は、この20年でほとんど伸びていない<br />http://www.youtube.com/watch?v=9eMWG3fwiEU<br />In pioneer days they used oxen for heavy pulling, <br />and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. <br />We shouldn’t be trying for bigger computers, <br />but formore systems of computers.<br />—Grace Hopper<br />
  6. 6. Hadoopの紹介<br />MapReduce/分散ファイルシステムのオープンソース実装<br />コアはMapReduce/HDFS<br />安価なハードを大量に並べて、水平分散でデータ処理を行うためのツールキット<br />大規模並列処理では避けられない、様々な障害に自動的に対処してくれる<br />開発者は、処理のロジックに集中できる<br />作成されたプログラムは、数千台まではほぼ台数に対してリニアにスケールする(らしい)<br />比較的安価なマシンを並べたローカルクラスタや、Amazon EC2/S3上で利用可能(Elastic MapReduce)<br />Hadoop上で動作する各種ツールがあり、分散処理のためのデファクトのフレームワークのようになってきた<br />
  7. 7. Hadoopの構成<br />青はMapReduceの要素<br />赤は分散ファイルシステム(HDFS)の要素<br />インフラは、<br />Elastic MapReduceに<br />面倒を見てもらえる!<br />ジョブトラッカーは、タスクトラッカーに対してタスクを依頼します。対象となるデータのありかは、ネームノードとやりとりをして知ります。<br />障害発生時のリカバリも管理。<br />マスターノード<br />分散処理をするのに必要な諸々は、Hadoopが面倒見てくれます。<br /><ul><li>ハード障害対応
  8. 8. 効率の良いネットワーク運用
  9. 9. ジョブの管理
  10. 10. タスクの管理</li></ul>ジョブ<br />トラッカー<br />ネームノード<br />プログラマが書くのはこれだけ!<br />スレーブノード<br />スレーブノード<br />スレーブノード<br />スレーブノード<br />ネームノードは、HDFSのディレクトリと、ファイルを構成するブロックの場所を管理します。<br />タスク<br />トラッカー<br />データノード<br />タスク<br />トラッカー<br />データノード<br />タスク<br />トラッカー<br />データノード<br />タスク<br />トラッカー<br />データノード<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスク<br />タスクトラッカーは、割り当てられたタスクを実行し、結果をジョブトラッカーに報告します。<br />
  11. 11. Elasitc MapReduce<br />Hadoopクラスタを自動的にくみ上げて、ジョブを実行してくれます。データの入出力にはS3を利用します。<br />簡単なオペレーションはAWSコンソールから、細かなオペレーションはコマンドラインやAPIから行えます。<br />Javaのジョブ(一応これが基本)、Streaming(標準入出力を使ってスクリプト言語で処理)のジョブ、Pig/Hive(抽象度の高いデータ処理が可能)が使えます。<br />公式ドキュメント(英語)には一通り目を通しましょう。<br />http://aws.amazon.com/archives/Elastic%20MapReduce?_encoding=UTF8&jiveRedirect=1<br />ポートを空けてやれば、標準的なモニタ機能は使えます。デバッグの機能もあります。<br />それでは動いているところを見てみましょう…<br />
  12. 12. MapReduce<br />すべての処理を、MapとReduceで行う<br />MapもReduceも、入出力共に、キーと値のペアの集合を扱う<br />この「型」に落とし込むと、分散処理にはめ込みやすい<br />アルゴリズム的にベストとは限らない。しかし、水平分散のクラスタに簡単に落とし込める<br />簡単に力業に持ち込むためのパターン<br />Data files<br />mapper<br />mapper<br />mapper<br />mapper<br />Shuffle & Sort<br />Reducer<br />
  13. 13. ここで宣伝<br />MapReduceのアルゴリズムの定番教科書でます!<br />オライリージャパンから、8月か9月出版予定。<br />一部思いっきり数学しているところがありますが、それ以外のところだけでも十分役立ちます。<br />MapReduceアルゴリズムの「デザインパターン」本としてご活用ください。<br />Hadoopを念頭において書かれてます。<br />鋭意校正中!<br />がんばれ俺!<br />
  14. 14. サンプル:Word Count<br />Freebase is an open database of the world’s information, covering millions of topics in<br />hundreds of categories. Drawing from large open data sets like Wikipedia, MusicBrainz,<br />and the SEC archives, it contains structured information on many popular topics,<br />including movies, music, people and locations – all reconciled and freely available. This<br />information is supplemented by the efforts of a passionate global community of users<br /><ul><li>コードを書く方法:
  15. 15. Hadoop Streaming(標準入出力。簡単だけど遅い)
  16. 16. Java(これが標準)</li></ul>この他にも状況に応じていろいろなやり方があるので、HadoopConfefence Japan 2009の資料も参考にしてください<br />Hadoopによる入力<br />(0, Freebase is an open database of the world’s information, covering millions of topics in...)<br />(1, hundreds of categories. Drawing from large open data sets like Wikipedia, MusicBrainz,...)<br />(2, and the SEC archives, it contains structured information on many popular topics,...)<br />(3, including movies, music, people and locations – all reconciled and freely available. This...)<br />(4, information is supplemented by the efforts of a passionate global community of users...)<br />for line in sys.stdin:<br />for word in line.split():<br /> print word + “t” + “1”<br />mapタスクによる処理<br />他のmapタスクによる処理<br />(Freebase , 1)<br />(is , 1)<br />(an , 1)<br />(open , 1)<br />(database , 1)<br />(MySQL, 1)<br />(is, 1)<br />(not, 1)<br />(proprietary, −5)<br />(database, 119)<br />for aLine in sys.stdin:<br />currentWord= aLine.split()[0] <br />if currentWord == prevWord:<br />count += 1<br />else:<br />print "%st%d" % (prevWord, count)<br /> count = 1<br />prevWord= currentWord<br />Hadoopによるシャッフル<br />(freebase, [1])<br />(is, [1, 1])<br />(an, [1])<br />(open, [1])<br />(database, [1, 1])<br />reduceタスクによる処理<br />(freebase, 1)<br />(is, 2)<br />(an, 1<br />(open, 1)<br />(database, 2)<br />
  17. 17. 分散ファイルシステムHDFS<br />Hadoop Distributed File System<br />耐障害性(データブロックの複製)<br />ディスクのシークを減らすためのデータブロック(デフォルト64MB)<br />大量のデータをシーケンシャルアクセスすることを想定している<br />ネットワークトポロジを意識し、効率的に分散処理を行うためのブロック配置を行う<br />
  18. 18. Hadoop/HDFSのいいところ<br />データセンター内のもっとも貴重なリソースは?<br />ネットワーク帯域、次いでディスクの処理能力<br />「データローカリティ」を意識したデータブロックの複製とタスク配置<br />複製度3なら、ローカルノード、別ラック内のノード、同一ラック内の別ノードへ<br />タスクはできる限りローカルのデータノード内のデータで処理を行えるように管理される<br />ただし、EMRではラックアウェアネスは実現されない<br />ラックA<br />ラックB<br />ノードA-1<br />ノードB-1<br />データノード<br />データノード<br />Data<br />Bloock<br />Data<br />Bloock<br />Data<br />Bloock<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />ノードA-2<br />ノードB-2<br />データノード<br />データノード<br />Data<br />Bloock<br />Data<br />Bloock<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />Data<br />Bloock<br />ノードA-3<br />ノードB-3<br />データノード<br />データノード<br />Data<br />Bloock<br />Data<br />Bloock<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />タスク<br />Data<br />Bloock<br />Data<br />Bloock<br />
  19. 19. ローカル開発環境を用意してみた<br />Linux(CentOS5)とCDH(Cloudera Distribution including Apache Hadoop) ver 3<br />https://ccp.cloudera.com/display/SUPPORT/Downloads<br />疑似分散モード(Psuedo Distribution mode)でインストール<br />Yumやaptを使って簡単にできます<br />https://ccp.cloudera.com/display/CDHDOC/CDH3+Quick+Start+Guide<br />https://ccp.cloudera.com/display/CDHDOC/CDH3+Installation+Guide<br />デモンストレーション<br />Wikipediaでwordcount<br />しょぼいサンプルですみません。<br />ストリーミングでの実行方法は象本に載ってます<br />
  20. 20. HadoopとRDB<br />HadoopはRDBをそのまま置き換えるものではない<br />少なくともレイヤーが異なっている<br />総合的に見れば、RDBは非常に優れている。極論を言えば、スケールしないだけ<br />Hadoopの上で動作する、抽象度の高いプロジェクトが多く出てきた<br />Hadoop<br />RDB<br />ドライバ<br />SQL<br />クエリ実行エンジン<br />MapReduce<br />メモリバッファ<br />HDFS<br />ファイルI/O<br />OS<br />OS<br />
  21. 21. NoSQL – Not Only SQL<br />正確にはNot Only RDBの方が正しい<br />SQL / RDBがダメ(No SQL)ということではない。RDBはこれからも必須の技術<br />BigDataの到来と共に、RDBだけで何でも片付けられる時代は終わりつつある<br />技術者には、取り扱う問題に合わせて、ストレージやデータベースを選択する力が求められる<br />AWSで言えば、RDS・SimpleDB・SQSが用意されている。場合よってはHadoopも考えましょう。<br />‘Free lunch’の時代は終わり。勉強しないと…<br />
  22. 22. 事例紹介:Cookpad<br />日本最大のレシピサイト<br />2010年3月現在の月間ユーザー数は884万人<br />月間ページビュー数は4億6000万回<br />実は世界最大級のRuby on Railsサイトでもある<br />Hadoopに関するプレゼンテーション<br />http://techlife.cookpad.com/2010/04/28/urapad_kyoto_presentation/<br />7000時間かかっていた処理が30時間に<br />夏場のカレーはナスらしいです<br />HadoopをAmazon EC2/S3(Elastic MapReduce)で運用<br />自社でデータセンターは持っていない<br />
  23. 23. はじめてみましょう<br />リアルの勉強会(特に関東は非常に活発)と、Twitterでのコミュニケーションが非常に重要<br />ローカルで遊ぶにはCloudera社のディストリビューション<br />マジで使うならElastic MapReduceは便利そう。<br />情報源<br />Publickey( http://www.publickey1.jp/index.html )<br />日経コンピュータ<br />象本・MapReduce本・Hadoop徹底入門で全体像をつかんでおいて、各論へ。各論は英語必須。<br />
  24. 24. ありがとうございました!<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×