Docstoc

05.MapReduce

Document Sample
05.MapReduce Powered By Docstoc
					Map Reduce 介紹
         王耀聰 陳威宇
        Jazz@nchc.org.tw
        waue@nchc.org.tw
      國家高速網路與計算中心
            (NCHC)


               自由軟體實驗室
                     1
                  Outline
• What is MapReduce ?
• Where does it fix ?
• What is its benefit ?
• How does it work ?
• Must be in Java ?




                            2
What is MapReduce ?

                      Google 原生定義




        MapReduce is a framework for computing certain
        kinds of distributable problems using a large
        number of computers (nodes), collectively referred
        to as a cluster.                                     3
What is MapReduce ?

              Hadoop MapReduce定義




        Hadoop Map/Reduce是一個易於使用的軟體平
        台,以MapReduce為基礎的應用程序,能夠運
        作在由上千台PC所組成的大型叢集上,並以
        一種可靠容錯的方式平行處理上P級別的資料
        集。
                                       4
Where does it fix ?

                              應用範圍

           • 大規模資料集
           • 可拆解
      • Text tokenization
      • Indexing and Search
      • Data mining
      • machine learning
      •…

           http://www.dbms2.com/2008/08/26/known-applications-of-mapreduce/   5
What is MapReduce ?

                      MapReduce由來
     • Functional Programming : Map Reduce
         – map(...) :
             • [ 1,2,3,4 ] – (*2) -> [ 2,4,6,8 ]
         – reduce(...):
             • [ 1,2,3,4 ] - (sum) -> 10
         – 對應演算法中的Divide and conquer
         – 將問題分解成很多個小問題之後,再做總和
     • 首先被Google引用到程式設計的軟體架
       構內,使用在大規模數據的運算中

                                                   6
How does it work ?

                MapReduce 運作流程
   input                        sort/copy                             output
   HDFS              map                                              HDFS
                                            merge

   split 0
                                                        reduce         part0
   split 1

   split 2
                     map
   split 3

   split 4
                                                        reduce         part1


                     map




JobTracker跟     JobTracker選數    JobTracker將中         JobTracker   reduce完後通
NameNode取       個TaskTracker來   間檔案整合排序                派遣         知JobTracker
得需要運算的          作Map運算,產        後,複製到需要             TaskTracker    與Namenode    7
   blocks        生些中間檔案         的TaskTracker去         作reduce     以產生output
              <Key, Value> Pair

                      Row Data
          Input
 Map                  key1    val      Map
                      key2    val
         Output
                      key1    val
                       …      …
         Select Key

                             val val
          Input       key1
                             …. val
Reduce                                 Reduce

         Output       key    values             8
概念
     MapReduce 圖解




                    9
概念
     MapReduce in Parallel




                             10
How does it work ?

                               範例
 I am a tiger, you are also a                                   a,2
 tiger                                                          also,1
              I,1                                a,2            am,1
  map         am,1            a, 1               also,1         are,1
              a,1             a,1       reduce   am,1
                                                 are,1          I,1
                              also,1                            tiger,2
              tiger,1         am,1
              you,1           are,1                             you,1
   map
              are,1           I,1
                              tiger,1            I, 1
                              tiger,1            tiger,2
              also,1          you,1     reduce   you,1
   map        a, 1
              tiger,1


JobTracker先選了三個         Map結束後,hadoop進行    JobTracker再選兩個                 11
    Tracker做map         中間資料的整理與排序         TaskTracker作reduce
Must be in Java ?

                    Options without Java
      • 雖然Hadoop框架是用Java實作,但
        Map/Reduce應用程序則不一定要用 Java
        來寫
      • Hadoop Streaming :
          – 執行作業的工具,使用者可以用其他語言
            (如:PHP)套用到Hadoop的mapper和
            reducer
      • Hadoop Pipes:C++ API

                                           12

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:11
posted:2/10/2012
language:
pages:12