[大牛翻譯系列]Hadoop(2)MapReduce 連接:復制連接(Replication join)


4.1.2 復制連接(Replication join)

復制連接是map端的連接。復制連接得名於它的具體實現:連接中最小的數據集將會被復制到所有的map主機節點。復制連接有一個假設前提:在被連接的數據集中,有一個數據集足夠小到可以緩存在內存中。

如圖4.5所示,MapReduce復制連接工作原理如下:

  1. 使用分布式緩存(Districubted cache)將這個小數據集復制到所有運行map任務的節點。
  2. 用各個map任務初始化方法將這個小數據集裝載到一個哈希表(hashtable)中。
  3. 逐條用大數據集中的記錄遍歷這個哈希表,逐個判斷是否符合連接條件。
  4. 輸出符合連接條件的結果。

 

 

復制連接的實現非常直接明了。更具體的內容可以參考《Hadoop in Action》。附錄D.2提供了一個通用的框架來實現復制連接(http://www.cnblogs.com/datacloud/p/3617078.html)。這個框架支持任意類型的InputFormat和OutputFormat的數據。(我們將在下一個技術中使用這個框架。)復制連接框架根據內存足跡的大小從分布式緩存的內容和輸入塊(input split)兩者中動態地決定需要緩存的對象。

如果所有的輸入數據集都不能夠小到可以放到緩存中,那有沒有辦法來優化map端連接呢?那就到了看半連接(semi-join)的時間了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM