ceilometer的map_reduce機制,map_reduce

來源:互聯網
上載者:User

ceilometer的map_reduce機制,map_reduce
Map/Reduce是一個彙總工具。比如SQL和mongodb的group(by),countdistinct等都是彙總命令。

Map/Reduce其實是一個分散式運算的思想的實現的軟體架構。就是你遵循這個架構的規範,編寫上層代碼可以實現你的分散式運算,並能把所有計算結果彙總到一起得到最終一個簡單的結果。基於Map/reduce寫出來的應用能運行在上千台伺服器組成的叢集上,並以一種可靠的容錯的方式平行處理資料。

具體過程為:
   Map/Reduce可以把一個任務分解為很多個可以並行化處理的子任務,這些子任務被分配到不同伺服器上進行並行的計算,當所有伺服器的計算都完成後,再把結果彙總到一起形成一個最終的結果。
   使用者定義一個map函數來處理一個key/value對以產生一批中間的key/value對,再定義一個Reduce函數將所有這些中間的有著相同key的values合并起來。
   簡單的說來,Map是把一組資料一對一的映射為另外的一組資料,其映射的規則由一個函數來指定,比如對[1, 2, 3,4]進行乘2的映射就變成了[2, 4, 6, 8]。Reduce是對一組資料進行歸約,這個歸約的規則由一個函數指定,比如對[1, 2,3, 4]進行求和的歸約得到結果是10,而對它進行求積的歸約結果是24。

   Map操作是獨立的對每個元素進行操作,換句話說,Map操作將產生一組全新的資料,而原來的資料保持不變。因此,它是高度並行的。Reduce操作雖然不如Map操作並行性那麼好,但是它總會得到一個相對簡單的結果,大規模運算也相對獨立,因此也是比較適合并行的。

    MapReduce任務是用來處理鍵/值對的。該架構將轉換每個輸入的記錄成一個鍵/值對,每對資料會被輸入給Map作業。Map任務的輸出是一套鍵/值對,原則上,輸入是一個鍵/值對,但是,輸出可以是多個鍵/值對。然後,它對Map輸出鍵/值對分組和排序。然後,對排序的每個鍵值對調用一次Reduce方法,它的輸出是一個鍵值和一套關聯的資料值。Reduce方法可以輸出任意數量的鍵/值對,這將被寫入工作輸出目錄下的輸出檔案。如果Reduce輸出鍵值保持和Reduce輸入鍵值一致,最終的輸出仍然保持排序。

該架構提供了兩個處理過程來管理MapReduce作業:

  • TaskTracker在叢集中的計算節點上管理和執行各個Map和Reduce作業。
  • JobTracker接受作業提交,提供作業的監測和控制,管理工作,以及分配作業到TaskTracker節點上。

一般來說,每個叢集有一個JobTracker進程,叢集中的每個節點有一個或多個TaskTracker進程。JobTracker是一個關鍵模組,它出現問題會引起系統的癱瘓,如果一個TaskTracker出現問題,JobTracker會調度其他TaskTracker進程重試。


Map/reduce演算法包括幾個步驟:
   1、Partition(劃分資料)
      把資料劃分為N份
    2、Map
      除了劃分資料,還需要把運算該資料的代碼也Map到每個運算節點上面去並發執行。這N節點各自執行自己的任務,執行完畢以後把執行結果返回
   3、Partition(歸併劃分)
      這N份執行結果需要歸併,於是我們再次劃分資料
   4、Reduce
      把Reduce代碼和Reduce資料分發到M個節點執行,每個節點執行完畢返回資料。如果需要再次Reduce可以再次執行。最終Reduce為一個總共的結果。

   其實我們需要編寫的代碼只有兩個方法:一個map方法,實現如何執行每份資料,一個reduce方法,實現如何歸併每份資料。架構會對map操作的輸出進行排序,然後把結果輸入給reduce任務。
具體參考圖:




總結:
    map/reduce的思想是非常簡單的,換句話說,任何語言都能實現。google的map/reduce之所以出名,不是因為這個思想多巧妙,而是因為它把分散式運算用一種非常簡易的方式總結了出來。
   任何分散式運算,最核心的任務都是:1、任務劃分2、資料歸併,如果不能對任務劃分,那麼用什麼分布式架構都是沒用的。比如對超大型矩陣的聚類計算,如果演算法本身無法劃分,那麼根本沒辦法分布式。所以一切涉及到分布式的問題,劃分是最重要的。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.