Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-07-01, 15:51

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 5 篇文章 ] 
發表人 內容
 文章主題 : 請問大大門每個reduce工作時是接收不同的key在做事 reduce之間可以共享資源嗎
文章發表於 : 2013-12-16, 19:08 
離線

註冊時間: 2013-10-15, 21:01
文章: 50
想請問大大門 我在看一個Tree的MapReduce問題
因為要判斷迴圈的問題 假設我再reduce階段
map輸出有五個key值 所以用5個reduce程式做
因為要判斷Tree有沒有產生迴圈的問題
所以他門有一個共享的資料 node_AssociatedSet
static class MSTReducer extends Reducer<IntWritable, Text, Text, Text> {

Map<String, Set<String>> node_AssociatedSet = new HashMap<String, Set<String>>();

public void reduce(IntWritable inputKey, Iterable<Text> values, Context context)
throws IOException, InterruptedException {...........}

請問node_AssociatedSet 這個資料結構 寫在static class MSTReducer extends Reducer<IntWritable, Text, Text, Text> {下面

跟寫在public void reduce(IntWritable inputKey, Iterable<Text> values, Context context)
throws IOException, InterruptedException {下面
有何差別呢????????

請問我再分解程式的時候 我是看reduce工作的時候是key1做完 再過來是key2 過來key3...key4...key5
我是在eclipse上用"偽分佈模式"
因為只有一台單機 所以在看Console他都是一個key顯示完 就換下一個key顯示
可是如果照正常的分布模式他因該是有五台電腦分別處理key

我的疑問就是 如果有一個 node_AssociatedSet資料
為什麼程式上跑的時候他是每個key 每個key一個一個判斷 node_AssociatedSet這個資料理的東西
也就是說當key1對 node_AssociatedSet做修改後 在換 key2修改 node_AssociatedSet

如果是五個reduce同時間一起修改這個 node_AssociatedSet 那根本無法判斷迴圈問題
請問有辦法這樣共用嗎 還是說這個程式其實是用一個reduce處理而已呢!!
我主要的問題就是 如果有五個reduce程式是否有辦法共用一個資料結構呢 那對這個資料結構的修改 是否有先後的順序
或是能指定先後的順序呢??(如果有的話 不就失去MapRedcu得意義嗎)


想請問有大大有看過用hadoop 實做"最小生成樹"的程式碼可以學習嗎
感謝各位大大門回答!!


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 請問大大門每個reduce工作時是接收不同的key在做事 reduce之間可以共享資源嗎
文章發表於 : 2013-12-18, 10:08 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
MapReduce 是 Share Nothing Programming Model
因此執行上不能強制先後順序(因為排程還有資源分配的關係)、要共享變數或做參數傳遞都會遇到問題。

目前聽過的方式是用第三方的方法來解決,例如:使用資料庫、使用 Message Queue、使用 HDFS 存放共享變數。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 請問大大門每個reduce工作時是接收不同的key在做事 reduce之間可以共享資源嗎
文章發表於 : 2013-12-19, 17:31 
離線

註冊時間: 2013-10-15, 21:01
文章: 50
jazz 寫:
MapReduce 是 Share Nothing Programming Model
因此執行上不能強制先後順序(因為排程還有資源分配的關係)、要共享變數或做參數傳遞都會遇到問題。

目前聽過的方式是用第三方的方法來解決,例如:使用資料庫、使用 Message Queue、使用 HDFS 存放共享變數。

- Jazz


感謝大大回答!!

再請問我再分解程式的時候 我是看reduce工作的時候是key1做完 再過來是key2 過來key3...key4...key5
我是在eclipse上用"偽分佈模式"
因為只有一台電腦 所以在看Console他都是一個key1做完 再過來是key2 過來key3...key4...key5
可是如果照正常的分布模式他因該是有五台電腦分別處理key
所以不會有key1做完 再過來是key2 過來key3...key4...key5的結果是嗎???

想問這個問題是因為我的程式理面有一個資料結構是會key1存取完 key2也可以用key1剛剛存取的資料 讓我有點疑惑
想說那這樣不就是key1做完才換key2 這樣是否就失去MapReduce的意義呢...還是我誤解..

原始碼連結:http://hadooptutorial.wikispaces.com/file/view/MST.java


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 請問大大門每個reduce工作時是接收不同的key在做事 reduce之間可以共享資源嗎
文章發表於 : 2013-12-20, 12:46 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
AndyTsai 寫:
再請問我再分解程式的時候 我是看reduce工作的時候是key1做完 再過來是key2 過來key3...key4...key5
我是在eclipse上用"偽分佈模式"
因為只有一台電腦 所以在看Console他都是一個key1做完 再過來是key2 過來key3...key4...key5
可是如果照正常的分布模式他因該是有五台電腦分別處理key
所以不會有key1做完 再過來是key2 過來key3...key4...key5的結果是嗎???
想問這個問題是因為我的程式理面有一個資料結構是會key1存取完 key2也可以用key1剛剛存取的資料 讓我有點疑惑
想說那這樣不就是key1做完才換key2 這樣是否就失去MapReduce的意義呢...還是我誤解..
原始碼連結:http://hadooptutorial.wikispaces.com/file/view/MST.java


多台時,看程式是否有設定 reducer 個數。
若 reducer 個數是 1,會是 key1 -> key2 -> key3 -> key4 -> key5
若 reducer 個數是 2 , 根據預設 Partitioner 的行為會變成:

reducer #1 : key1 -> key3 -> key5
reducer #2 : key2 -> key4

若 reducer 個數是 3

reducer #1 : key1 -> key4
reducer #2 : key2 -> key5
reducer #3 : key3

依此類推。

- Jazz


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 請問大大門每個reduce工作時是接收不同的key在做事 reduce之間可以共享資源嗎
文章發表於 : 2013-12-23, 02:34 
離線

註冊時間: 2013-10-15, 21:01
文章: 50
感謝Jazz大大回答!!


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 5 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作