Hadoop事始め 2010/10/16   You&I             印刷版 わんくま同盟 名古屋勉強会 #15
自己紹介•   H/N   You&I(読み:ユーアンドアイ)•   出身    生まれも育ちも名古屋市•   年齢    30代前半•   本職    商学部出身の職業プログラマ•   言語    C++, VisualBasic 6.0, ...
なぜHadoopか?• 安西先生!タイムドリブンなシミュレータのデ  ータ処理を速くしたいです!• HBaseで高速にデータ書き込み可能• HDFSにより大容量データも格納可能• MapReduce他で高速にデータ処理可能• 容易にスケールアッ...
Agenda1. MapReduceとは?2. 分散ファイルシステムについて3. Hadoopの構成4. Hadoopの環境構築及び利用5. Hadoopのデモ6. まとめ         わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(1/10)• アレ?Hadoopの話は? →Hadoopは、Googleが2003年に発表した  GoogleFileSystem(GFS)及び、2004年に発  表したMapReduceに関する学術論文を基に ...
1. MapReduceとは?(2/10)Hadoopで実装されいるGoogleの技術• The Google File System (2003年)  http://labs.google.com/papers/gfs.html• MapRe...
1. MapReduceとは?(3/10)• Googleでも使わているMapReduceってすげぇ!• ん?でももう使われてないよw  HighScalability - Googles Colossus Makes Searc  h Rea...
1. MapReduceとは?(4/10)• MapReduceの説明の前に、分散処理のイメ  ージについてちょっと説明• C++言語のソースコードを分散コンパイルす  る事例で紹介します(distcc等)  # ls  a.cpp b.cpp...
1. MapReduceとは?(5/10)• 分散コンパイルの処理イメージ                              •PC1~PC4のコンパイル環境は                       PC2     同じバージョン...
1. MapReduceとは?(6/10)• いよいよMapReduce! • MapReduceは、関数型プログラミングのmap関   数、reduce関数の概念が基になっています • MapReduceにおいても、map/reduce関数で...
1. MapReduceとは?(7/10)• Hadoop MapReduce  • 1回のデータ処理を「Job」と定義  • 1回のmap/reduce関数の処理を「Task」と定義  • Hadoopのシステムでは「Job」の管理を行うJo...
1. MapReduceとは?(8/10)• Hadoop MapReduceの処理の流れ      入力データ     入力スプリット           入力データをMapタスクの処理単位に分割      Mapタスク           ...
1. MapReduceとは?(9/10)• Hadoop MapReduceの処理イメージ           Split,               Combine, Partition,                      Tas...
1. MapReduceとは?(10/10)• MapReduceの得意とする処理 • 何でも出来る訳では無い • ×:リアルタイム処理 • ○:TEXT形式のデータの加工・集計    •   アクセスログ解析    •   文書中のワードカウ...
2. 分散ファイルシステムについて(1/6)• 分散ファイルシステムについて  • 時代はBigData!  • データは肥大化する一方でPC1台ではデータは    収まりきらない  • そこで複数台のPCにデータを分散して保存  • 分散した...
2. 分散ファイルシステムについて(2/6)• データを複数のノードで分散して管理するの  で、データの一貫性やトランザクションの話で  よく以下の話題が出てきます • CAP(Consistency, Availability, Partit...
2. 分散ファイルシステムについて(3/6)• HDFS(Hadoop Distributed File System)  • 全体を管理するNameNodeが1つと、数多くの    DataNodeで構成されています  • HDFSの1ブロッ...
2. 分散ファイルシステムについて(4/6)• HDFSの続き • NameNodeは各DataNodeのデータセンター・   ラック内での位置情報を把握 • DataNode内で各DataNodeのブロックのデータ   のレプリカ(複製)をデ...
2. 分散ファイルシステムについて(5/6)• HDFSのイメージ                NameNode    DataNode    DataNode   DataNode    DataNode    DataNode   Dat...
2. 分散ファイルシステムについて(6/6)• Hadoop MapReduce+HDFSのイメージ                                  • JobTrackerとNameNodeは同一PC   Client   ...
3. Hadoopの構成(1/5)• Apache Hadoop プロジェクト    • http://hadoop.apache.org/•   アイコンはぞうさんです•   「ハドゥープ」って読みます•   「hadoop」は造語です•  ...
3. Hadoopの構成(2/5)• 複数のサブプロジェクトで構成されています• 夜間バッチ処理等によく利用されています• 基本的にLinux上で利用します• 分散処理を行うJavaで作成されたフレームワ  ークです• 開発者はフレームワークを...
3. Hadoopの構成(3/5)• 単純な処理の組み合わせなのでノードの追  加により直線的なスケーラビリティが期待で  きます(設計・実装次第)• Streaming APIを利用するとJava以外の言  語からも利用できます• C++の場...
3. Hadoopの構成(4/5)• GoogleとHadoopのシステム構成の比較     Google                 HadoopGoogle File System   Hadoop Distributed Fi    ...
3. Hadoopの構成(5/5)• Hadoopのサブプロジェクト構成                         Oozie                    (Workflow Engine)                   ...
4. Hadoopの環境構築及び利用(1/5)• 用意する物  • Linuxの環境(CentOS, Ubuntu)  • Java Runtime Environment(JRE)  • Hadoop※Windows環境ならCygwinを利用...
4. Hadoopの環境構築及び利用(2/5)• Linuxで環境構築する場合は、Cloudera社の  パッケージを利用するのが便利というか、こ  の方法が一般的。 Cloudera http://www.cloudera.com/• Clo...
4. Hadoopの環境構築及び利用(3/5)• Hadoopの実行(Java)% hadoop ¥ JavaAppName ¥ input.txt ¥ output             わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(4/5)• Hadoop Streamingでの実行(Ruby)% hadoop jar ¥$HADOOP_INSTALL/contrib/streaming/hadoop-*-str   eaming.j...
4. Hadoopの環境構築及び利用(5/5)• Hadoop Pipesでの実行(C++)% hadoop pipes ¥ -D hadoop.pipes.java.recordreader=true ¥ -D hadoop.pipes.ja...
5. Hadoopのデモ何かデモを行う予定・・・。        わんくま同盟 名古屋勉強会 #15
6. まとめ(1/4)1. MapReduceとは?  •   Googleではもう使われていない  •   リアルタイムデータ処理には向かない  •   直線的なスケーラビリティ(設計次第)  •   パフォーマンスの肝は、如何にReduce...
6. まとめ(2/4)2. 分散ファイルシステムについて •   時代はBigData! •   捨てていたデータを有効活用できるかも? •   ネームノードが単一故障点となる •   パフォーマンスの肝は、如何にDiskとNetwork   ...
6. まとめ(3/4)3. Hadoopの構成  • Hadoopはフレームワークである  • 複数のプロジェクトで構成されている  • 自分で環境を作らなくても、今後はHadoopを簡    単に利用できるWebサービスが出てくる      ...
6. まとめ(4/4)4. Hadoopの環境構築及び利用 • 基本的にLinux環境が前提 • HadoopはCloudera社のパッケージを使う • Hadoopから呼び出される、map/reduce関数を   実装する • 細かく制御した...
参考文献・参考情報1. Hadoop(ISBN:978-4873114392)   http://www.oreilly.co.jp/books/9784873114392/2. Googleを支える技術(ISBN:978-4-7741-343...
Upcoming SlideShare
Loading in...5
×

Hadoop事始め

2,307

Published on

http://www.wankuma.com/seminar/20101016nagoya15/
今はやりのHadoopについて、MapReduceや分散ファイルシステムといった基盤技術から紹介したいと思います。

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

No Downloads
Views
Total Views
2,307
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hadoop事始め

  1. 1. Hadoop事始め 2010/10/16 You&I 印刷版 わんくま同盟 名古屋勉強会 #15
  2. 2. 自己紹介• H/N You&I(読み:ユーアンドアイ)• 出身 生まれも育ちも名古屋市• 年齢 30代前半• 本職 商学部出身の職業プログラマ• 言語 C++, VisualBasic 6.0, 日本語COBOL• 日記 http://d.hatena.ne.jp/youandi/• 所属 大規模分散技術勉強会in名古屋 名古屋アジャイル勉強会 わんくま同盟 わんくま同盟 名古屋勉強会 #15
  3. 3. なぜHadoopか?• 安西先生!タイムドリブンなシミュレータのデ ータ処理を速くしたいです!• HBaseで高速にデータ書き込み可能• HDFSにより大容量データも格納可能• MapReduce他で高速にデータ処理可能• 容易にスケールアップ可能• というイメージを持っています! わんくま同盟 名古屋勉強会 #15
  4. 4. Agenda1. MapReduceとは?2. 分散ファイルシステムについて3. Hadoopの構成4. Hadoopの環境構築及び利用5. Hadoopのデモ6. まとめ わんくま同盟 名古屋勉強会 #15
  5. 5. 1. MapReduceとは?(1/10)• アレ?Hadoopの話は? →Hadoopは、Googleが2003年に発表した GoogleFileSystem(GFS)及び、2004年に発 表したMapReduceに関する学術論文を基に 作られています。• Googleのシステムの詳細については書籍化 されています。 →Googleを支える技術 ISBN:978-4-7741-3432-1 わんくま同盟 名古屋勉強会 #15
  6. 6. 1. MapReduceとは?(2/10)Hadoopで実装されいるGoogleの技術• The Google File System (2003年) http://labs.google.com/papers/gfs.html• MapReduce: Simplified Data Processing on Larg e Clusters (2004年) http://labs.google.com/papers/mapreduce.html• BigTable: A Distributed Storage System for Struct ured Data (2006年) http://labs.google.com/papers/bigtable.html わんくま同盟 名古屋勉強会 #15
  7. 7. 1. MapReduceとは?(3/10)• Googleでも使わているMapReduceってすげぇ!• ん?でももう使われてないよw HighScalability - Googles Colossus Makes Searc h Real-time by Dumping MapReduce http://mcaf.ee/d6e97 (参考日本語訳) AgileCat - Google Instant では、リアルタイム検索 のために MapReduce を排除! http://wp.me/pwo1E-1Kf わんくま同盟 名古屋勉強会 #15
  8. 8. 1. MapReduceとは?(4/10)• MapReduceの説明の前に、分散処理のイメ ージについてちょっと説明• C++言語のソースコードを分散コンパイルす る事例で紹介します(distcc等) # ls a.cpp b.cpp d.cpp e.cpp f.cpp Makefile # make -j8 ・・・ わんくま同盟 名古屋勉強会 #15
  9. 9. 1. MapReduceとは?(5/10)• 分散コンパイルの処理イメージ •PC1~PC4のコンパイル環境は PC2 同じバージョンの物を使う必要が b.cpp ある。 b.o •処理の振り分けは、ソースコード ファイル単位となる。 c.cpp •分散コンパイルの場合、入力ファ PC1 PC3 イルサイズ<出力ファイルサイズ c.o となる。a.cpp ↓ d.cpp a.o d.o PC4 わんくま同盟 名古屋勉強会 #15
  10. 10. 1. MapReduceとは?(6/10)• いよいよMapReduce! • MapReduceは、関数型プログラミングのmap関 数、reduce関数の概念が基になっています • MapReduceにおいても、map/reduce関数で処 理を行います • map/reduce関数の入出力データは、Key-Valu e形式で行います わんくま同盟 名古屋勉強会 #15
  11. 11. 1. MapReduceとは?(7/10)• Hadoop MapReduce • 1回のデータ処理を「Job」と定義 • 1回のmap/reduce関数の処理を「Task」と定義 • Hadoopのシステムでは「Job」の管理を行うJob Trackerが一つ存在し、「Task」の管理を行うTa skTrackerは処理ノード毎に一つ存在します。 • map/reduce以外に、split、partition、combine、 shuffule、mergeといった処理が存在します わんくま同盟 名古屋勉強会 #15
  12. 12. 1. MapReduceとは?(8/10)• Hadoop MapReduceの処理の流れ 入力データ 入力スプリット 入力データをMapタスクの処理単位に分割 Mapタスク 入力データをKey-Value形式に変換 Partition/Combine Key-Valueデータの細分化・間引き Shuffule/Merge Key単位でのデータソート Reduceタスク Key-Valueデータの集約 出力データ※開発者は一連の処理の流れを知っている必要はあるが、実装は一部のみで良い わんくま同盟 名古屋勉強会 #15
  13. 13. 1. MapReduceとは?(9/10)• Hadoop MapReduceの処理イメージ Split, Combine, Partition, Task Client Map Shuffule, Merge, Reduce Tracker Task Tracker Job Task Tracker Tracker Task Tracker Task Tracker※ちょっと質問。このシステムでテストの答案の採点・平均点・合否判定を させるとすると、どういう処理の流れになるでしょうか? わんくま同盟 名古屋勉強会 #15
  14. 14. 1. MapReduceとは?(10/10)• MapReduceの得意とする処理 • 何でも出来る訳では無い • ×:リアルタイム処理 • ○:TEXT形式のデータの加工・集計 • アクセスログ解析 • 文書中のワードカウント• 因みに天体画像処理でも使われています Parallel Distributed Image Stacking and Mosaici ng with Hadoop http://slidesha.re/dAd17i わんくま同盟 名古屋勉強会 #15
  15. 15. 2. 分散ファイルシステムについて(1/6)• 分散ファイルシステムについて • 時代はBigData! • データは肥大化する一方でPC1台ではデータは 収まりきらない • そこで複数台のPCにデータを分散して保存 • 分散したデータは、ファイルシステムとして管理 をし易く • 今まで保存出来なかったデータが保存できるよ うになり、有効利用する流れ わんくま同盟 名古屋勉強会 #15
  16. 16. 2. 分散ファイルシステムについて(2/6)• データを複数のノードで分散して管理するの で、データの一貫性やトランザクションの話で よく以下の話題が出てきます • CAP(Consistency, Availability, Partition Toler ance) • ACID(Atomicity, Consistency, Isolation, Dura bility) • BASEトランザクション(Basically Available, Sof t-state, Eventual consistency)• でも今日は無しの方向で! わんくま同盟 名古屋勉強会 #15
  17. 17. 2. 分散ファイルシステムについて(3/6)• HDFS(Hadoop Distributed File System) • 全体を管理するNameNodeが1つと、数多くの DataNodeで構成されています • HDFSの1ブロックのサイズは、64MBです。多く の場合、64MB以上の設定で利用されています • PB(ペタバイト:1024TB)のデータも扱えます • HDFSでは、データの読み込み、データの書き 込み(新規・追記)が可能。データの修正・変更 は出来ません わんくま同盟 名古屋勉強会 #15
  18. 18. 2. 分散ファイルシステムについて(4/6)• HDFSの続き • NameNodeは各DataNodeのデータセンター・ ラック内での位置情報を把握 • DataNode内で各DataNodeのブロックのデータ のレプリカ(複製)をデフォルト設定では1つ持つ • この時複製は同一のデータセンターやラック上 のDataNodeとならないように考慮する • NameNodeはHDFS上で1つしか存在しない為、 単一障害点(SPOF:Single Point Of Failure)と なっている わんくま同盟 名古屋勉強会 #15
  19. 19. 2. 分散ファイルシステムについて(5/6)• HDFSのイメージ NameNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode わんくま同盟 名古屋勉強会 #15
  20. 20. 2. 分散ファイルシステムについて(6/6)• Hadoop MapReduce+HDFSのイメージ • JobTrackerとNameNodeは同一PC Client JobTracker 上でも動作可能 • JobTrackerはDataNode上のデータ NameNode 配置状況を考慮してTaskTrackerに Taskを投げる DataNode DataNode DataNode TaskTracker TaskTracker TaskTracker DataNode DataNode DataNode TaskTracker TaskTracker TaskTracker わんくま同盟 名古屋勉強会 #15
  21. 21. 3. Hadoopの構成(1/5)• Apache Hadoop プロジェクト • http://hadoop.apache.org/• アイコンはぞうさんです• 「ハドゥープ」って読みます• 「hadoop」は造語です• Googleのシステムのクローン実装です • Google MapReduce • Google File System(GFS) • BigTable わんくま同盟 名古屋勉強会 #15
  22. 22. 3. Hadoopの構成(2/5)• 複数のサブプロジェクトで構成されています• 夜間バッチ処理等によく利用されています• 基本的にLinux上で利用します• 分散処理を行うJavaで作成されたフレームワ ークです• 開発者はフレームワークを利用するアプリを 開発することになります わんくま同盟 名古屋勉強会 #15
  23. 23. 3. Hadoopの構成(3/5)• 単純な処理の組み合わせなのでノードの追 加により直線的なスケーラビリティが期待で きます(設計・実装次第)• Streaming APIを利用するとJava以外の言 語からも利用できます• C++の場合はHadoop Pipesを利用します わんくま同盟 名古屋勉強会 #15
  24. 24. 3. Hadoopの構成(4/5)• GoogleとHadoopのシステム構成の比較 Google HadoopGoogle File System Hadoop Distributed Fi (GFS) le System(HDFS)Google MapReduce Hadoop MapReduce BigTable HBase わんくま同盟 名古屋勉強会 #15
  25. 25. 3. Hadoopの構成(5/5)• Hadoopのサブプロジェクト構成 Oozie (Workflow Engine) Pig Hive (Data Flow) (Batch SQL) Chukwa (Coordination) (Serialization) (Displaying, Monitoring, Analyzing Logs) ZeroKeeper Avro/Thrift MapReduce (Job Scheduling - Raw Processing) HBase (RealTime Query) HDFS (Hadoop Distributed File System) わんくま同盟 名古屋勉強会 #15
  26. 26. 4. Hadoopの環境構築及び利用(1/5)• 用意する物 • Linuxの環境(CentOS, Ubuntu) • Java Runtime Environment(JRE) • Hadoop※Windows環境ならCygwinを利用する方法も可能。 但し、本腰入れてメンテナンスされている訳では無 いので、常用は止めておいた方が良いかも。 参考:Hisidamas Hadoop Memo http://mcaf.ee/2034a わんくま同盟 名古屋勉強会 #15
  27. 27. 4. Hadoopの環境構築及び利用(2/5)• Linuxで環境構築する場合は、Cloudera社の パッケージを利用するのが便利というか、こ の方法が一般的。 Cloudera http://www.cloudera.com/• Cloudera社のパッケージには、Hadoop本体 以外にOozie等も含まれています。 わんくま同盟 名古屋勉強会 #15
  28. 28. 4. Hadoopの環境構築及び利用(3/5)• Hadoopの実行(Java)% hadoop ¥ JavaAppName ¥ input.txt ¥ output わんくま同盟 名古屋勉強会 #15
  29. 29. 4. Hadoopの環境構築及び利用(4/5)• Hadoop Streamingでの実行(Ruby)% hadoop jar ¥$HADOOP_INSTALL/contrib/streaming/hadoop-*-str eaming.jar ¥ -input input.txt ¥ -output output ¥ -mapper MyMapper.rb ¥ -reducer MyReducer.rb わんくま同盟 名古屋勉強会 #15
  30. 30. 4. Hadoopの環境構築及び利用(5/5)• Hadoop Pipesでの実行(C++)% hadoop pipes ¥ -D hadoop.pipes.java.recordreader=true ¥ -D hadoop.pipes.java.recordwriter=true ¥ -input input.txt ¥ -output output ¥ -program CppAppName わんくま同盟 名古屋勉強会 #15
  31. 31. 5. Hadoopのデモ何かデモを行う予定・・・。 わんくま同盟 名古屋勉強会 #15
  32. 32. 6. まとめ(1/4)1. MapReduceとは? • Googleではもう使われていない • リアルタイムデータ処理には向かない • 直線的なスケーラビリティ(設計次第) • パフォーマンスの肝は、如何にReduceタスクを 効率よく処理するか わんくま同盟 名古屋勉強会 #15
  33. 33. 6. まとめ(2/4)2. 分散ファイルシステムについて • 時代はBigData! • 捨てていたデータを有効活用できるかも? • ネームノードが単一故障点となる • パフォーマンスの肝は、如何にDiskとNetwork のI/Oを減らすか わんくま同盟 名古屋勉強会 #15
  34. 34. 6. まとめ(3/4)3. Hadoopの構成 • Hadoopはフレームワークである • 複数のプロジェクトで構成されている • 自分で環境を作らなくても、今後はHadoopを簡 単に利用できるWebサービスが出てくる わんくま同盟 名古屋勉強会 #15
  35. 35. 6. まとめ(4/4)4. Hadoopの環境構築及び利用 • 基本的にLinux環境が前提 • HadoopはCloudera社のパッケージを使う • Hadoopから呼び出される、map/reduce関数を 実装する • 細かく制御したければ、Java又はJavaVM上で 動作する言語で開発する わんくま同盟 名古屋勉強会 #15
  36. 36. 参考文献・参考情報1. Hadoop(ISBN:978-4873114392) http://www.oreilly.co.jp/books/9784873114392/2. Googleを支える技術(ISBN:978-4-7741-3432-1) http://gihyo.jp/book/2008/978-4-7741-3432-13. 平成21年度 産学連携ソフトウェア工学実践事業報 告書の公表について - 高信頼クラウド実現用ソフト ウェア開発(分散制御処理技術等に係るデータセン ター高信頼化に向けた実証事業) http://mcaf.ee/0c915 わんくま同盟 名古屋勉強会 #15
  1. A particular slide catching your eye?

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

×