1
今さら聞けないHadoop!      セントラルソフト株式会      社      システム開発課      瀧澤徹2
Hadoopは象         のぬいぐるみ3
4
おしまい5
本セミナーの目的6
セミナーの目的       Hadoop 初心者の方に、動作概念をロールプレイを        通して理解してもらう。    7
アジェンダ       データの大規模化       Hadoop           HDFS               ロールプレイ HDFS 編           MapReduce               ロールプレ...
データの大規模化9
世界のデジタルデータの推移          2006年で18万ペタバイト          2009年で80万ペタバイト       2011年で2ゼタ(200万ペタ)バイト     2020年で35ゼタ(3500万ペタ)バイト(予想)10
データ量の目安11
大量データへの対応(1) ハードディスク容量の増加にアクセ ス 速度が追い付いていない。    1テラバイトのデータを読み出すのに、     転送速度が 100MB/s ならば、2時間半     かかる。12
大量データへの対応(2)   転送時間を短縮する方法。       100台のドライブに 1/100 ずつデータを保        管。       保管したデータを並列に取り出す。       転送時間が2時間半から2分以内に短縮。...
14
問題の解決    耐障害性        分割したデータをコピーして複数台のマシンに保存する         ため、一部のストレージサーバが故障しても正常に稼         働。        デフォルトのコピー数は3。    データ...
スケーラビリティ    RDB とは異なり、並列台数を増やしただけ性能が向     上         (         合         計         処         理         能         力        ...
Hadoop17
Hadoopとは    ビッグデータを分散処理するためのミドルウェア        ビッグデータ:大量・非定型・リアルタイム性の高い         データ    Google の GFS 論文と MapReduce 論文を元に作成  ...
分散処理のイメージ19
Hadoop を使った事例           Hadoop 適用前        適用後   楽天          120時間       5時間    (1日の購入履歴)                (1/24)   クックパッド...
Hadoop を構成する技術 HDFS    分散ファイルシステム MapReduce    分散処理フレームワーク21
HDFS22
HDFS(Hadoop Distributed File System)    複数のストレージにファイルを分散する        クライアントから HDFS を通してみると、一         つの         ファイルのように見える...
ネームノード マスターサーバ 分割されているデータがどのデータ ノードにあるか管理している。             ここには分                      データノード             割データ0が         ...
データノード スレーブサーバ ブロック(分割したデータ)の読み 書きを行う。          データノード           データAの          分割データ             0           データBの     ...
ロールプレイ       HDFS編26
クライアント   クライアントがファイルをネームノードに渡す。    クライアント           ネームノード
ネームノード   渡されたファイルをデータノードの数に分割しそれ    ぞれに渡す。                       データノード    ネームノード
実践!29
役割 クライアント(1名) ネームノード(1名) データノード(4名)30
クライアント   クライアントがファイルをネームノードに渡す。    クライアント           ネームノード
ネームノード   渡されたファイルをデータノードの数に分割しそれ    ぞれに渡す。                       データノード    ネームノード
補足   実際はレプリケーションと呼ばれる、データのコ    ピーを    複数のノードへの保存が行われる。(デフォルトは3                       データノード    か所)    ネームノード
MapReduce34
MapReduceとは    大量のデータを分散処理するフレームワーク。    各ノードが自身の持つデータを処理する。    3種類のフェーズから構成される。        Map        Shuffle & Sort     ...
ワードカウントとは    ある文書中にある単語数をカウントし、単語ごとに     使われた回数を結果として出力する。    36
ワードカウントの MapReduce の流れ     ローカルファイル     ローカルファイル     ローカルファイル   Shuffle & Sort 処理     ローカルファイル37
Map    入力データの中で自身のノードが持っているデータ     を     処理し、中間データとして出力する。    入出力の形式は key と value のペア。         入力デー   <key A , value B> ...
ワードカウントの Map(入力データ)     ファイルの1行を読み込んで Map の入力にする        key :行の先頭文字がファイルの開始から何文字目かの         数値         (バイトオフセット)      ...
ワードカウントの Map(処理・中間データ)    入力の value を単語に分割して、それを中間データ     の key 、数字の1を value にする    ノード4上の処理         入力データ              ...
ワードカウントの Map(全体の流れ)      ノード4上の処理                                         < “cat” , 1 >           <33 ,   “cat” >    Map ...
Shuffle & Sort    Map が終了すると、生成された中間データを     Reduce に渡す前に Shuffle & Sort が行われる。    Shuffle & Sort ではデータの key に基づいて、ソー   ...
ワードカウントの Shuffle & Sort Map の出力を同じ key の value を一つに集約し、 key  の順にソート、ハッシュでどちらの Reduce へ渡すのか  決めるノード1の Map 出 ノード3の Map 出   ...
Reduce    Shuffle & Sort で処理されたデータを受け取り、処理     を行って HDFS 上に結果を書きだす。    入出力の形式は key と value のペア。                         ...
ワードカウントの Reduce (処理・出力)    入力の value にある1の数を数えて、ファイルに key     と     ペアで出力する。    Reduce2 の処理                     入力      ...
(再掲)ワードカウントの MapReduce の流れ     ローカルファイル     ローカルファイル     ローカルファイル   Shuffle & Sort 処理     ローカルファイル46
ロールプレイMapReduce編
クライアント   ネームノードにワードカウントを命令する    クライアント           ネームノード
ネームノード   データノードに処理を指示する。                      データノード     ネームノード
Map   入力データの単語ごとに、それぞれの単語をkeyに    して、valueに1とする。   keyごとにソートしまとめる。   ネームノードにまとめたデータを渡す。                         中間データ  ...
ネームノード    中間データをマージします。    マージしたデータを二つを分ける。    Reduceに渡す。                                                       Reduce ...
Reduce   単語ごとにまとめられたvalueを足して出力する。   ネームノードに渡す。    Reduce                            ネームノード             <“dog” ,3>      ...
ネームノード    出力結果をデータノードにそれぞれ渡す。                      データノード         ネームノード    53
クライント    ネームノードに対し、結果のファイルを要求する。         クライアント       ネームノード    54
ネームノード    出力結果のファイルを渡すように指示する。         ネームノード       データノード    55
データノード    ネームノードにファイルを渡す。データノード                 ネームノード    56
ネームノード    ファイルをクライアントに渡す。         ネームノード        クライアント    57
クライアント    受け取ったファイルの確認をする。                        出力ファイ         クライアント           ル                  確認                   ...
役割 クライアント(1名) ネームノード(1名) Map(4名) Reduce(2名)59
クライアント   ネームノードにワードカウントを命令する    クライアント           ネームノード
ネームノード   データノードに処理を指示する。                      データノード     ネームノード
Map   入力データの単語ごとに、それぞれの単語をkeyに    して、valueに1とする。   keyごとにソートしまとめる。   ネームノードにまとめたデータを渡す。                         中間データ  ...
ネームノード    中間データをマージします。    マージしたデータを二つを分ける。    Reduceに渡す。                                                       Reduce ...
Reduce   単語ごとにまとめられたvalueを足して出力する。   ネームノードに渡す。    Reduce                            ネームノード             <“dog” ,3>      ...
ネームノード    出力結果をデータノードにそれぞれ渡す。                      データノード         ネームノード    65
クライント    ネームノードに対し、結果のファイルを要求する。         クライアント       ネームノード    66
ネームノード    出力結果のファイルを渡すように指示する。         ネームノード       データノード    67
データノード    ネームノードにファイルを渡す。データノード                 ネームノード    68
ネームノード    ファイルをクライアントに渡す。         ネームノード        クライアント    69
クライアント    受け取ったファイルの確認をする。                        出力ファイ         クライアント           ル                  確認                   ...
(再掲)ワードカウントの MapReduce の流れ     ローカルファイル     ローカルファイル     ローカルファイル   Shuffle & Sort 処理     ローカルファイル71
まとめ72
まとめ    Hadoop はデータの分散処理システムであり、     HDFS と MapReduce で構成される    HDFS はデータファイルを分散管理するシステムで     あり以下のような構成である        分割したデ...
今後の発表ネタ    MapReduce 関連        アルゴリズム            転置インデックス      ・・・基本的な MapReduce            TF-IDF    ・・・複数回の MapReduc...
Upcoming SlideShare
Loading in...5
×

今さら聞けないHadoop セントラルソフト株式会社(20120119)

3,474

Published on

1 Comment
9 Likes
Statistics
Notes
  • 一部でご指摘があった点についてコメントいたします。
    実際にはNNからDNにはクライアントにポインタを示すためにデータは投げません。 スライドの説明は、ロールプレイワークでデータの紙を渡すシーケンスを簡素化して表現しています。

    実際のワークのなかでは、このときはNNはデータのポインタを示すだけでデータはクライアントから転送されるということを解説しています。
    スライドが誤解を招く表現であったことをお詫びいたします。

    ご指摘、ご意見ありがとうございました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
3,474
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
39
Comments
1
Likes
9
Embeds 0
No embeds

No notes for slide

今さら聞けないHadoop セントラルソフト株式会社(20120119)

  1. 1. 1
  2. 2. 今さら聞けないHadoop! セントラルソフト株式会 社 システム開発課 瀧澤徹2
  3. 3. Hadoopは象 のぬいぐるみ3
  4. 4. 4
  5. 5. おしまい5
  6. 6. 本セミナーの目的6
  7. 7. セミナーの目的 Hadoop 初心者の方に、動作概念をロールプレイを 通して理解してもらう。 7
  8. 8. アジェンダ データの大規模化 Hadoop  HDFS  ロールプレイ HDFS 編  MapReduce  ロールプレイ MapReduce 編 まとめ 8
  9. 9. データの大規模化9
  10. 10. 世界のデジタルデータの推移 2006年で18万ペタバイト 2009年で80万ペタバイト 2011年で2ゼタ(200万ペタ)バイト 2020年で35ゼタ(3500万ペタ)バイト(予想)10
  11. 11. データ量の目安11
  12. 12. 大量データへの対応(1) ハードディスク容量の増加にアクセ ス 速度が追い付いていない。  1テラバイトのデータを読み出すのに、 転送速度が 100MB/s ならば、2時間半 かかる。12
  13. 13. 大量データへの対応(2) 転送時間を短縮する方法。  100台のドライブに 1/100 ずつデータを保 管。  保管したデータを並列に取り出す。  転送時間が2時間半から2分以内に短縮。 ただし、次の問題が発生する。  障害の発生する確率が増える。  データを結合する仕組みが必要。13
  14. 14. 14
  15. 15. 問題の解決 耐障害性  分割したデータをコピーして複数台のマシンに保存する ため、一部のストレージサーバが故障しても正常に稼 働。  デフォルトのコピー数は3。 データ結合  分散ファイルシステム。 15
  16. 16. スケーラビリティ RDB とは異なり、並列台数を増やしただけ性能が向 上 ( 合 計 処 理 能 力 ) (マシンの台 数) Bitqull: Data harvesting with MapReduceか ら 16
  17. 17. Hadoop17
  18. 18. Hadoopとは ビッグデータを分散処理するためのミドルウェア  ビッグデータ:大量・非定型・リアルタイム性の高い データ Google の GFS 論文と MapReduce 論文を元に作成 Java で記述 オープンソース 18
  19. 19. 分散処理のイメージ19
  20. 20. Hadoop を使った事例 Hadoop 適用前 適用後 楽天 120時間  5時間 (1日の購入履歴) (1/24) クックパッド 7000時間 (1年分のデータ処理)  30時間 (1/233) Yahoo 624時間 (3年分のログ解析)  20分 VISA 720時間 (1/1872) (2年分のデータ解析)  13分20 (1/3323)
  21. 21. Hadoop を構成する技術 HDFS  分散ファイルシステム MapReduce  分散処理フレームワーク21
  22. 22. HDFS22
  23. 23. HDFS(Hadoop Distributed File System) 複数のストレージにファイルを分散する  クライアントから HDFS を通してみると、一 つの ファイルのように見える 二種類のサーバで構成される  ネームノード(NameNode)  データノード(DataNode) 23
  24. 24. ネームノード マスターサーバ 分割されているデータがどのデータ ノードにあるか管理している。 ここには分 データノード 割データ0が 入ってる 分割データ split0 0 ネームノー 分割データ split0 ド(マス 1 ター) 分割データ split0 224
  25. 25. データノード スレーブサーバ ブロック(分割したデータ)の読み 書きを行う。 データノード データAの 分割データ 0 データBの 分割データ 1 データCの 分割データ 325
  26. 26. ロールプレイ HDFS編26
  27. 27. クライアント クライアントがファイルをネームノードに渡す。 クライアント ネームノード
  28. 28. ネームノード 渡されたファイルをデータノードの数に分割しそれ ぞれに渡す。 データノード ネームノード
  29. 29. 実践!29
  30. 30. 役割 クライアント(1名) ネームノード(1名) データノード(4名)30
  31. 31. クライアント クライアントがファイルをネームノードに渡す。 クライアント ネームノード
  32. 32. ネームノード 渡されたファイルをデータノードの数に分割しそれ ぞれに渡す。 データノード ネームノード
  33. 33. 補足 実際はレプリケーションと呼ばれる、データのコ ピーを 複数のノードへの保存が行われる。(デフォルトは3 データノード か所) ネームノード
  34. 34. MapReduce34
  35. 35. MapReduceとは 大量のデータを分散処理するフレームワーク。 各ノードが自身の持つデータを処理する。 3種類のフェーズから構成される。  Map  Shuffle & Sort  Reduce 35
  36. 36. ワードカウントとは ある文書中にある単語数をカウントし、単語ごとに 使われた回数を結果として出力する。 36
  37. 37. ワードカウントの MapReduce の流れ ローカルファイル ローカルファイル ローカルファイル Shuffle & Sort 処理 ローカルファイル37
  38. 38. Map 入力データの中で自身のノードが持っているデータ を 処理し、中間データとして出力する。 入出力の形式は key と value のペア。 入力デー <key A , value B> タ 処理 Map 中間デー <key C , value D> タ 38
  39. 39. ワードカウントの Map(入力データ)  ファイルの1行を読み込んで Map の入力にする  key :行の先頭文字がファイルの開始から何文字目かの 数値 (バイトオフセット)  入力ファイル(実ファ value :1行の内容そのまま 入力ファイル(HDFS 入力データ(<key , イル) value>) 上)ノード1 dog cat cat <0 , “dog cat cat” > dog cat catノード2 bird dog bird dog <12 , “bird dog” > dog dog dogノード3 cat dog dog dog <21 , “dog dog dog”> cat dog <33 , “cat” > catノード4 cat dog <37 , “cat dog” > 39
  40. 40. ワードカウントの Map(処理・中間データ) 入力の value を単語に分割して、それを中間データ の key 、数字の1を value にする ノード4上の処理 入力データ 中間データ (<key , value>) (<key , value>) < “cat” , 1 > <33 , “cat” > < “cat” , 1 > <37 , “cat dog” > < “dog” , 1 > 40
  41. 41. ワードカウントの Map(全体の流れ)  ノード4上の処理 < “cat” , 1 > <33 , “cat” > Map 処cat < “cat” , 1 >cat dog <37 , “cat 理 dog”> < “dog” , 1 > ファイルからのデータの読み込み 1行を単語へ分割 中間データの出力 41
  42. 42. Shuffle & Sort Map が終了すると、生成された中間データを Reduce に渡す前に Shuffle & Sort が行われる。 Shuffle & Sort ではデータの key に基づいて、ソー トとvalue の集約、 ハッシュを用いて Reduce への データの割り振りを行う。 Map Reduce Map Shuffle & Sort Map Reduce Map 42
  43. 43. ワードカウントの Shuffle & Sort Map の出力を同じ key の value を一つに集約し、 key の順にソート、ハッシュでどちらの Reduce へ渡すのか 決めるノード1の Map 出 ノード3の Map 出 Reduce1 の入力力 力 < “dog” , 1 > < “dog” , 1 > < “dog” , {1,1,1,1,1,1} > < “cat” , 1 > < “dog” , 1 > < “cat” , 1 > < “dog” , 1 >ノード2の Map 出 ノード4の Map 出 Reduce2 の入力力 力 < “cat” , 1 > < “bird” , 1 > < “bird” , {1} > < “cat” , 1 > < “cat” , {1,1,1,1} > < “dog” , 1 > < “dog” , 1 > 43
  44. 44. Reduce Shuffle & Sort で処理されたデータを受け取り、処理 を行って HDFS 上に結果を書きだす。 入出力の形式は key と value のペア。 B は同じ key A の value (B1,B2,…) の集ま り 処理されたデータ <key A , values B> 処理 Reduce 出力 key C value D 44
  45. 45. ワードカウントの Reduce (処理・出力) 入力の value にある1の数を数えて、ファイルに key と ペアで出力する。 Reduce2 の処理 入力 出力(HDFS 上) < “bird” , {1} > bird 1 cat 4 < “cat” , {1,1,1,1} > 45
  46. 46. (再掲)ワードカウントの MapReduce の流れ ローカルファイル ローカルファイル ローカルファイル Shuffle & Sort 処理 ローカルファイル46
  47. 47. ロールプレイMapReduce編
  48. 48. クライアント ネームノードにワードカウントを命令する クライアント ネームノード
  49. 49. ネームノード データノードに処理を指示する。 データノード ネームノード
  50. 50. Map 入力データの単語ごとに、それぞれの単語をkeyに して、valueに1とする。 keyごとにソートしまとめる。 ネームノードにまとめたデータを渡す。 中間データ 入力データ <“bird”,1> ネームノード <“cat”,1> dog cat <“cat”,1> dog bird cat Map dog <“dog”,1> … <“dog”,1> <“dog”,1>
  51. 51. ネームノード 中間データをマージします。 マージしたデータを二つを分ける。 Reduceに渡す。 Reduce 中間データ <“bird”,1> <“cat”,1> <“dog” ,{1,1,1}> <“bird” , {1}> <“cat”,1> <“cat” ,{1,1}> <“dog”,1> <“dog” ,{1,1,1}> <“bird” , {1}> <“dog”,1> <“cat” ,{1,1}> <“dog”,1> 51
  52. 52. Reduce 単語ごとにまとめられたvalueを足して出力する。 ネームノードに渡す。 Reduce ネームノード <“dog” ,3> <“cat” ,2> <“bird” , 1>
  53. 53. ネームノード 出力結果をデータノードにそれぞれ渡す。 データノード ネームノード 53
  54. 54. クライント ネームノードに対し、結果のファイルを要求する。 クライアント ネームノード 54
  55. 55. ネームノード 出力結果のファイルを渡すように指示する。 ネームノード データノード 55
  56. 56. データノード ネームノードにファイルを渡す。データノード ネームノード 56
  57. 57. ネームノード ファイルをクライアントに渡す。 ネームノード クライアント 57
  58. 58. クライアント 受け取ったファイルの確認をする。 出力ファイ クライアント ル 確認 bird 1 cat 2 dog 3 … 58
  59. 59. 役割 クライアント(1名) ネームノード(1名) Map(4名) Reduce(2名)59
  60. 60. クライアント ネームノードにワードカウントを命令する クライアント ネームノード
  61. 61. ネームノード データノードに処理を指示する。 データノード ネームノード
  62. 62. Map 入力データの単語ごとに、それぞれの単語をkeyに して、valueに1とする。 keyごとにソートしまとめる。 ネームノードにまとめたデータを渡す。 中間データ 入力データ <“bird”,1> ネームノード <“cat”,1> dog cat <“cat”,1> dog bird cat Map dog <“dog”,1> … <“dog”,1> <“dog”,1>
  63. 63. ネームノード 中間データをマージします。 マージしたデータを二つを分ける。 Reduceに渡す。 Reduce 中間データ <“bird”,1> <“cat”,1> <“dog” ,{1,1,1}> <“bird” , {1}> <“cat”,1> <“cat” ,{1,1}> <“dog”,1> <“dog” ,{1,1,1}> <“bird” , {1}> <“dog”,1> <“cat” ,{1,1}> <“dog”,1> 63
  64. 64. Reduce 単語ごとにまとめられたvalueを足して出力する。 ネームノードに渡す。 Reduce ネームノード <“dog” ,3> <“cat” ,2> <“bird” , 1>
  65. 65. ネームノード 出力結果をデータノードにそれぞれ渡す。 データノード ネームノード 65
  66. 66. クライント ネームノードに対し、結果のファイルを要求する。 クライアント ネームノード 66
  67. 67. ネームノード 出力結果のファイルを渡すように指示する。 ネームノード データノード 67
  68. 68. データノード ネームノードにファイルを渡す。データノード ネームノード 68
  69. 69. ネームノード ファイルをクライアントに渡す。 ネームノード クライアント 69
  70. 70. クライアント 受け取ったファイルの確認をする。 出力ファイ クライアント ル 確認 bird 1 cat 2 dog 3 … 70
  71. 71. (再掲)ワードカウントの MapReduce の流れ ローカルファイル ローカルファイル ローカルファイル Shuffle & Sort 処理 ローカルファイル71
  72. 72. まとめ72
  73. 73. まとめ Hadoop はデータの分散処理システムであり、 HDFS と MapReduce で構成される HDFS はデータファイルを分散管理するシステムで あり以下のような構成である  分割したデータの保存場所を管理する「ネームノード」  実際にデータを保存する「データノード」 MapReduce は以下の3つのフェーズで構成される  入力データの加工を行う「Map」  データの整理と分配を行う「Shuffle & Sort」  まとめられたデータに対して処理を行う「Reduce」 73
  74. 74. 今後の発表ネタ MapReduce 関連  アルゴリズム  転置インデックス ・・・基本的な MapReduce  TF-IDF ・・・複数回の MapReduce  k-means 法 ・・・条件による MapReduce の分岐  MapReduce プログラミング手法  複数ファイルのデータのマージ  パラメータ引渡し  etc Hadoop 関連のシステム(エコシステム)  HBase  Hive 74
  1. A particular slide catching your eye?

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

×