Master works設計模式

2021-08-20 12:16:19 字數 2582 閱讀 4309

1,hadoop中的master-work設計模式是怎麼指導mapreduce工作流程的

master-worker模式是常用的並行設計模式。它的核心思想是,系統有兩個程序協議工作:master程序和worker程序。master程序負責接收和分配任務,worker程序負責處理子任務。當各個worker程序將子任務處理完後,將結果返回給master程序,由master進行歸納和彙總,從而得到系統結果。處理過程如下圖:

master-worker模式的好處是,它能將大任務分解成若干個小任務,併發執行,從而提高系統效能。而對於系統請求者client來說,任務一旦提交,master程序就會立刻分配任務並立即返回,並不會等系統處理完全部任務再返回,其處理過程是非同步的。

master-worker模式的主要結構如下圖:

如上圖所示,master程序是主要程序,它維護著乙個worker程序佇列、子任務佇列和子結果集,worker程序中的worker程序不斷的從任務佇列中提取要處理的子任務,並將子任務的處理結果放入到子結果集中。

在上圖中,master:用於任務的分配和最終結果的合併;worker:用於實際處理乙個任務;客戶端程序:用於啟動系統,排程開啟master。

master**實現:

1

public

class

master 16}

17return

true;18

}1920public master(worker worker,int

countworker) 26}

2728

//提交任務

2930

public

void

submit(object obj)

3435

3637

//返回子任務結果集

38public mapgetresultmap()

4142

//開始執行所有worker程序,並進行處理

4344

public

void

execute()48}

4950 }

worker**實現:

1

public

class worker implements

runnable

11public

void setresultmap(mapresultmap)

1415

public

object handle(object input)

18@override

19public

void

run() 29}

3031 }

master-worker模式是一種序列任務並行化的方法,被分解的子任務在系統中可以並行處理。同時,如果有需要,master程序不需要所有子任務都執行完成,就可以根據已有的部分結果集計算最終的結果。

現在以上面的master-worker實現為基礎,來實現計算1-100的立方和。計算將被分解為100個子任務,每個子任務僅用於計算單獨的立方和。master產生固定數目worker,來處理這些子任務。worker不斷的從任務集合中取出這些計算立方和的子任務,並將計算結果放入到master的結果集中。master負責將所有worker的任務結果進行累加,從而產生最終的立方和。整個計算過程,worker和master的運算也是完全非同步的,master程序不必等所有的worker程序都執行完成,就可以進行求和操作了。也就是所,master在獲取部分子任務的結果集時,就可以對最終結果進行計算了,從而提高了系統的併發性和吞吐量。

計算子任務的實現如下:

1

public

class plusworker extends

worker

89 }

客戶端**如下:

1

public

class

client

7m.execute();

8int re = 0;

9 mapresultmap =m.getresultmap();

10while(resultmap.size()>0||!m.iscomplete())

17 integer i = null;18

if(key != null)21

if(i!=null)24

25if(key!=null)28

}2930system.out.println(re);31}

32 }

通過master建立5個worker工作執行緒和plusworker工作例項。提交完100個任務後,就開始計算子任務。這些子任務,由生成的5個worker執行緒共同完成。master並不等所有的子任務都計算完成,就開始訪問子結果集進行最終結果的計算,直到子結果集中所有的資料都被處理,並且5個活躍的worker執行緒全部終止,才能求出最終結果。

設計模式 設計模式

物件導向程式設計 oop 的基本概念有 封裝,抽象,繼承,多型等,如何開發出可復用的物件導向軟體一直困擾著軟體開發人員。可復用的物件導向技術包括類的繼承,物件的組合和引數化型別 generic gof的巨著 設計模式 總結出可復用的物件導向的23個設計模式,並且歸類成 建立型模式,結構型模式和行為型...

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...

設計模式 9 設計模式

文章 head first 第一章 head first 設計模式讀書筆記 1 策略模式 觀察者模式 head first設計模式學習2 裝飾者模式 head first 設計模式3 工廠模式 head first設計模式4 命令模式 head first 設計模式5 介面卡模式和外觀模式 head...