MapReduce鏈結作業

2022-04-10 10:39:02 字數 2445 閱讀 3540

對於簡單的分析程式,我們只需乙個mapreduce就能搞定,然而對於比較複雜的分析程式,我們可能需要多個job或者多個map或者reduce進行計算。下面我們來說說多個job或者多個mapreduce的程式設計形式

mapreduce的主要有以下幾種程式設計形式

1、迭代式mapreduce

mapreduce迭代方式,通常是將上乙個mapreduce任務的輸出作為下乙個mapreduce任務的輸入,可只保留mapreduce任務的最終結果,中間資料可以刪除或保留,如下所示

迭代式mapreduce的示例**如下所示

/** 

* @projectname mapreducelinkjob

* @packagename com.buaa

* @classname iterativejob

* @description todo

* @author 劉吉超

* @date 2016-06-11 11:01:57

*/public class iterativejob extends configured implements tool

......

}

雖然mapreduce的迭代可實現多工的執行,但是它具有如下兩個缺點:

1、每次迭代,如果所有job物件重複建立,代價將非常高。

2、每次迭代,資料都要寫入本地,然後從本地讀取,i/o和網路傳輸的代價比較大

2、依賴式mapreuce

依賴式mapreduce是由org.apache.hadoop.mapred.jobcontrol包中的jobcontrol類來實現。jobcontrol的例項表示乙個作業的執行圖,你可以加入作業配置,然後告知jobcontrol例項作業之間的依賴關係。在乙個執行緒中執行jobcontrol時,它將按照依賴順序來執行這些作業。也可以檢視程序,在作業結束後,可以查詢作業的所有狀態和每個失敗相關的錯誤資訊。如果乙個作業失敗,jobcontrol將不執行與之有依賴關係的後續作業

依賴關係式mapreuce的示例**如下所示

/** 

* @projectname mapreducelinkjob

* @packagename com.buaa

* @classname dependentjob

* @description todo

* @author 劉吉超

* @date 2016-06-11 11:12:45

*/public class dependentjob extends configured implements tool

} }

......

}

注意:hadoop的jobcontrol類實現了執行緒runnable介面。我們需要例項化乙個執行緒來啟動它。直接呼叫jobcontrol的run()方法,執行緒將無法結束。

3、鏈式mapreduce

大量的資料處理任務涉及對記錄的預處理和後處理。例如:在處理資訊檢索的文件時,可能需要先移除stop words(像a、the和is這樣經常出現但不太有意義的詞),然後再做stemming**換乙個詞的不同形式為相同的形式,例如轉換finishing和finished為finish)。

其呼叫形式如下:

...

chainreducer.setreducer(...);

...

public

static

void

class

class

inputkeyclass,

class

inputvalueclass,

class

outputkeyclass,

class

outputvalueclass,

configuration conf

)

鏈式mapreduce的示例**如下所示

/** 

* @projectname mapreducelinkjob

* @packagename com.buaa

* @classname chainjob

* @description todo

* @author 劉吉超

* @date 2016-06-11 11:16:55

*/public class chainjob extends configured implements tool

......

}

】。

MapReduce作業執行流程

一.mapreduce作業執行流程 根據原始碼分析作業的提交流程時序圖如下 mr的作業流程圖 1.在客戶端啟動乙個作業。2.通過jobclient向jobtracker請求乙個job id和資源檔案存放路徑。3.將執行作業所需要的資源檔案複製到hdfs上,包括mapreduce程式打包的jar檔案 ...

MapReduce作業執行流程

mapreduce作業執行流程 0 準備階段 0.1 回顧hadoop配置檔案mapred site.xml mapreduce.framework.name yarn hadoop 2.x引入了一種新的執行機制。這種新機制 mr 2 建立在乙個名為yarn的系統上。而用於執行的框架通過 mapre...

MapReduce作業調優

1,map緩衝區記憶體改大 環形緩衝區越大,溢寫次數越少,磁碟 io 的次數越少,執行速度就越快 預設100m,可配置 2,map輸出壓縮 減少io 可配置 3,reduce拉取過來的資料直接存記憶體,避免落盤,這樣合併也能在記憶體中完成 可配置 4,shuffle中的多次磁碟io操作非常消耗效能,...