SlideShare ist ein Scribd-Unternehmen logo
1 von 74
1
今さら聞けない
Hadoop!
      セントラルソフト株式会
      社
      システム開発課
      瀧澤徹

2
Hadoopは象
         のぬいぐるみ




3
4
おしまい

5
本セミナーの目的




6
セミナーの目的
       Hadoop 初心者の方に、動作概念をロールプレイを
        通して理解してもらう。




    7
アジェンダ
       データの大規模化
       Hadoop
           HDFS
               ロールプレイ HDFS 編
           MapReduce
               ロールプレイ MapReduce 編
       まとめ




    8
データの大規模化




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分以内に短縮。


   ただし、次の問題が発生する。
       障害の発生する確率が増える。
       データを結合する仕組みが必要。

13
14
問題の解決
    耐障害性
        分割したデータをコピーして複数台のマシンに保存する
         ため、一部のストレージサーバが故障しても正常に稼
         働。
        デフォルトのコピー数は3。


    データ結合
        分散ファイルシステム。




    15
スケーラビリティ
    RDB とは異なり、並列台数を増やしただけ性能が向
     上

         (
         合
         計
         処
         理
         能
         力
         )




                     (マシンの台
                     数)
                    Bitqull: Data harvesting with MapReduceか
                    ら
    16
Hadoop



17
Hadoopとは
    ビッグデータを分散処理するためのミドルウェア
        ビッグデータ:大量・非定型・リアルタイム性の高い
         データ


    Google の GFS 論文と MapReduce 論文を元に作成
    Java で記述
    オープンソース




    18
分散処理のイメージ




19
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)
Hadoop を構成する技術
 HDFS
    分散ファイルシステム
 MapReduce
    分散処理フレームワーク




21
HDFS



22
HDFS
(Hadoop Distributed File System)
    複数のストレージにファイルを分散する
        クライアントから HDFS を通してみると、一
         つの
         ファイルのように見える
    二種類のサーバで構成される
        ネームノード(NameNode)
        データノード(DataNode)



    23
ネームノード
 マスターサーバ
 分割されているデータがどのデータ
 ノードにあるか管理している。
             ここには分
                      データノード
             割データ0が
              入ってる
                      分割データ
                       split0
                         0

     ネームノー            分割データ
                       split0
      ド(マス               1
       ター)
                      分割データ
                       split0
                         2

24
データノード
 スレーブサーバ
 ブロック(分割したデータ)の読み
 書きを行う。
          データノード
           データAの
          分割データ
             0
           データBの
           分割データ
             1
           データCの
           分割データ
             3

25
ロールプレイ
       HDFS編




26
クライアント
   クライアントがファイルをネームノードに渡す。




    クライアント           ネームノード
ネームノード
   渡されたファイルをデータノードの数に分割しそれ
    ぞれに渡す。
                       データノード




    ネームノード
実践!

29
役割
 クライアント(1名)
 ネームノード(1名)
 データノード(4名)




30
クライアント
   クライアントがファイルをネームノードに渡す。




    クライアント           ネームノード
ネームノード
   渡されたファイルをデータノードの数に分割しそれ
    ぞれに渡す。
                       データノード




    ネームノード
補足
   実際はレプリケーションと呼ばれる、データのコ
    ピーを
    複数のノードへの保存が行われる。(デフォルトは3
                       データノード
    か所)

    ネームノード
MapReduce




34
MapReduceとは
    大量のデータを分散処理するフレームワーク。
    各ノードが自身の持つデータを処理する。


    3種類のフェーズから構成される。
        Map
        Shuffle & Sort
        Reduce




    35
ワードカウントとは
    ある文書中にある単語数をカウントし、単語ごとに
     使われた回数を結果として出力する。




    36
ワードカウントの MapReduce の流れ

     ローカルファイル




     ローカルファイル




     ローカルファイル   Shuffle & Sort 処理




     ローカルファイル




37
Map
    入力データの中で自身のノードが持っているデータ
     を
     処理し、中間データとして出力する。
    入出力の形式は key と value のペア。

         入力デー   <key A , value B>
         タ

          処理          Map


         中間デー   <key C , value D>
         タ



    38
ワードカウントの 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
ワードカウントの Map(処理・中間データ)
    入力の value を単語に分割して、それを中間データ
     の key 、数字の1を value にする

    ノード4上の処理
         入力データ                    中間データ
         (<key , value>)          (<key , value>)
                                       < “cat” , 1 >
          <33 ,     “cat”     >
                                        < “cat” , 1 >
          <37 ,   “cat dog”   >
                                       < “dog” , 1 >




    40
ワードカウントの Map(全体の流れ)
      ノード4上の処理

                                         < “cat” , 1 >
           <33 ,   “cat” >    Map 処
cat                                      < “cat” , 1 >
cat dog      <37 , “cat        理
               dog”>                    < “dog” , 1 >




  ファイルからのデータの読み込み
                             1行を単語へ分割   中間データの出力




      41
Shuffle & Sort
    Map が終了すると、生成された中間データを
     Reduce に渡す前に Shuffle & Sort が行われる。
    Shuffle & Sort ではデータの key に基づいて、ソー
     トとvalue の集約、 ハッシュを用いて Reduce への
     データの割り振りを行う。

         Map
                               Reduce
         Map
                   Shuffle &
                     Sort
         Map
                               Reduce
         Map

    42
ワードカウントの 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
Reduce
    Shuffle & Sort で処理されたデータを受け取り、処理
     を行って HDFS 上に結果を書きだす。
    入出力の形式は key と value のペア。
                                              B は同じ key A の
                                           value (B1,B2,…) の集ま
                                                     り
         処理されたデータ     <key A , values B>


           処理               Reduce


           出力       key C   value D




    44
ワードカウントの Reduce (処理・出力)
    入力の value にある1の数を数えて、ファイルに key
     と
     ペアで出力する。

    Reduce2 の処理
                     入力              出力(HDFS 上)

         < “bird” ,       {1}   >   bird   1
                                    cat    4
         < “cat” ,    {1,1,1,1} >




    45
(再掲)ワードカウントの MapReduce の流れ

     ローカルファイル




     ローカルファイル




     ローカルファイル   Shuffle & Sort 処理




     ローカルファイル




46
ロールプレイ
MapReduce編
クライアント
   ネームノードにワードカウントを命令する




    クライアント           ネームノード
ネームノード
   データノードに処理を指示する。
                      データノード




     ネームノード
Map
   入力データの単語ごとに、それぞれの単語をkeyに
    して、valueに1とする。
   keyごとにソートしまとめる。
   ネームノードにまとめたデータを渡す。
                         中間データ
    入力データ                <“bird”,1>   ネームノード
                         <“cat”,1>
    dog cat              <“cat”,1>
    dog bird cat   Map
    dog                  <“dog”,1>
         …




                         <“dog”,1>
                         <“dog”,1>
ネームノード
    中間データをマージします。
    マージしたデータを二つを分ける。
    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
Reduce
   単語ごとにまとめられたvalueを足して出力する。
   ネームノードに渡す。

    Reduce
                            ネームノード
             <“dog” ,3>




              <“cat” ,2>
             <“bird” , 1>
ネームノード
    出力結果をデータノードにそれぞれ渡す。



                      データノード

         ネームノード




    53
クライント
    ネームノードに対し、結果のファイルを要求する。




         クライアント       ネームノード




    54
ネームノード
    出力結果のファイルを渡すように指示する。




         ネームノード       データノード




    55
データノード
    ネームノードにファイルを渡す。




データノード                 ネームノード




    56
ネームノード
    ファイルをクライアントに渡す。




         ネームノード        クライアント




    57
クライアント
    受け取ったファイルの確認をする。




                        出力ファイ
         クライアント           ル
                  確認
                        bird       1
                        cat        2
                        dog        3




                               …
    58
役割
 クライアント(1名)
 ネームノード(1名)
 Map(4名)
 Reduce(2名)




59
クライアント
   ネームノードにワードカウントを命令する




    クライアント           ネームノード
ネームノード
   データノードに処理を指示する。
                      データノード




     ネームノード
Map
   入力データの単語ごとに、それぞれの単語をkeyに
    して、valueに1とする。
   keyごとにソートしまとめる。
   ネームノードにまとめたデータを渡す。
                         中間データ
    入力データ                <“bird”,1>   ネームノード
                         <“cat”,1>
    dog cat              <“cat”,1>
    dog bird cat   Map
    dog                  <“dog”,1>
         …




                         <“dog”,1>
                         <“dog”,1>
ネームノード
    中間データをマージします。
    マージしたデータを二つを分ける。
    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
Reduce
   単語ごとにまとめられたvalueを足して出力する。
   ネームノードに渡す。

    Reduce
                            ネームノード
             <“dog” ,3>




              <“cat” ,2>
             <“bird” , 1>
ネームノード
    出力結果をデータノードにそれぞれ渡す。



                      データノード

         ネームノード




    65
クライント
    ネームノードに対し、結果のファイルを要求する。




         クライアント       ネームノード




    66
ネームノード
    出力結果のファイルを渡すように指示する。




         ネームノード       データノード




    67
データノード
    ネームノードにファイルを渡す。




データノード                 ネームノード




    68
ネームノード
    ファイルをクライアントに渡す。




         ネームノード        クライアント




    69
クライアント
    受け取ったファイルの確認をする。




                        出力ファイ
         クライアント           ル
                  確認
                        bird       1
                        cat        2
                        dog        3




                               …
    70
(再掲)ワードカウントの MapReduce の流れ

     ローカルファイル




     ローカルファイル




     ローカルファイル   Shuffle & Sort 処理




     ローカルファイル




71
まとめ




72
まとめ
    Hadoop はデータの分散処理システムであり、
     HDFS と MapReduce で構成される

    HDFS はデータファイルを分散管理するシステムで
     あり以下のような構成である
        分割したデータの保存場所を管理する「ネームノード」
        実際にデータを保存する「データノード」

    MapReduce は以下の3つのフェーズで構成される
        入力データの加工を行う「Map」
        データの整理と分配を行う「Shuffle & Sort」
        まとめられたデータに対して処理を行う「Reduce」

    73
今後の発表ネタ
    MapReduce 関連
        アルゴリズム
            転置インデックス      ・・・基本的な MapReduce
            TF-IDF    ・・・複数回の MapReduce
            k-means 法 ・・・条件による MapReduce の分岐
        MapReduce プログラミング手法
            複数ファイルのデータのマージ
            パラメータ引渡し
            etc


    Hadoop 関連のシステム(エコシステム)
        HBase
        Hive

    74

Weitere ähnliche Inhalte

Was ist angesagt?

40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
世界一簡単なHadoopの話
世界一簡単なHadoopの話世界一簡単なHadoopの話
世界一簡単なHadoopの話Koichi Shimazaki
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallShinpei Ohtani
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントCloudera Japan
 
Hadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いHadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いRyuji Tamagawa
 
Hadoop概要説明
Hadoop概要説明Hadoop概要説明
Hadoop概要説明Satoshi Noto
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...NTT DATA OSS Professional Services
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介Recruit Technologies
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析MapR Technologies Japan
 
MapReduceプログラミング入門
MapReduceプログラミング入門MapReduceプログラミング入門
MapReduceプログラミング入門Satoshi Noto
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...MapR Technologies Japan
 

Was ist angesagt? (20)

Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
世界一簡単なHadoopの話
世界一簡単なHadoopの話世界一簡単なHadoopの話
世界一簡単なHadoopの話
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
SASとHadoopとの連携
SASとHadoopとの連携SASとHadoopとの連携
SASとHadoopとの連携
 
Hadoop / MapReduce とは
Hadoop / MapReduce とはHadoop / MapReduce とは
Hadoop / MapReduce とは
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
Hadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食いHadoop / Elastic MapReduceつまみ食い
Hadoop / Elastic MapReduceつまみ食い
 
Hadoop概要説明
Hadoop概要説明Hadoop概要説明
Hadoop概要説明
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Hadoop 基礎
Hadoop 基礎Hadoop 基礎
Hadoop 基礎
 
はやわかりHadoop
はやわかりHadoopはやわかりHadoop
はやわかりHadoop
 
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
並列分散処理基盤Hadoopの紹介と、開発者が語るHadoopの使いどころ (Silicon Valley x 日本 / Tech x Business ...
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
 
MapReduceプログラミング入門
MapReduceプログラミング入門MapReduceプログラミング入門
MapReduceプログラミング入門
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
 

Andere mochten auch

ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)hamaken
 
ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例知教 本間
 
Hadoopを40分で理解する #cwt2013
Hadoopを40分で理解する #cwt2013Hadoopを40分で理解する #cwt2013
Hadoopを40分で理解する #cwt2013Cloudera Japan
 
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜満徳 関
 
主人が外資系IT企業に転職して4ヶ月が過ぎました
主人が外資系IT企業に転職して4ヶ月が過ぎました主人が外資系IT企業に転職して4ヶ月が過ぎました
主人が外資系IT企業に転職して4ヶ月が過ぎましたAki Ariga
 
Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析shuichi iida
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernelNaoya Ito
 
最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」Takashi J OZAKI
 

Andere mochten auch (10)

HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例
 
Hadoopを40分で理解する #cwt2013
Hadoopを40分で理解する #cwt2013Hadoopを40分で理解する #cwt2013
Hadoopを40分で理解する #cwt2013
 
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜
『ストーリーテリング ~概要~』第7回 POStudy 〜プロダクトオーナーシップ勉強会〜
 
主人が外資系IT企業に転職して4ヶ月が過ぎました
主人が外資系IT企業に転職して4ヶ月が過ぎました主人が外資系IT企業に転職して4ヶ月が過ぎました
主人が外資系IT企業に転職して4ヶ月が過ぎました
 
Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析Hadoopを用いた大規模ログ解析
Hadoopを用いた大規模ログ解析
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernel
 
最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」
 

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

OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門Shinichi YAMASHITA
 
Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアルK Yamaguchi
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)Hadoop / Spark Conference Japan
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてKazuki Ohta
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京Koichiro Sasaki
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうかOedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうかMinero Aoki
 
Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Sho Shimauchi
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するTakahiro Inoue
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと Haruka Ozaki
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexKoji Shinkubo
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10Yoji Kiyota
 

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

OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門
 
Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアル
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
 
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知るMapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン Hadoopについて
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
OSC2012 OSC.DB Hadoop
OSC2012 OSC.DB HadoopOSC2012 OSC.DB Hadoop
OSC2012 OSC.DB Hadoop
 
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうかOedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
 
Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
MapReduce基礎
MapReduce基礎MapReduce基礎
MapReduce基礎
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
日々進化するHadoopの 「いま」
日々進化するHadoopの 「いま」日々進化するHadoopの 「いま」
日々進化するHadoopの 「いま」
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10
 

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

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