Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2022-07-02, 13:13

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




發表新文章 回覆主題  [ 2 篇文章 ] 
發表人 內容
 文章主題 : 關於mapreduce的類別靜態變數和jvm reuse參數問題
文章發表於 : 2015-03-07, 16:03 
離線

註冊時間: 2015-03-07, 15:49
文章: 1
各位前輩您好,小弟最近對於mapreduce有一些疑惑的地方:

依我google過之後的理解,每個map task是run在各自的jvm上,
若要讓所有map分享共同的資料只能透過hdfs或set configuration,
但如果把mapred-site.xml裡的mapreduce.job.jvm.numtasks參數設為-1,
讓jvm可以reuse的話,這樣是不是可以讓map間共享一些變數?

例如這樣:
代碼:
public class gene{
   static String variable;
   
   class mapper{
      map()
      {
         modify variable here...
      }
   }
   class reducer{}
   main(){}
}

是否能讓每個map task共同利用一份靜態類別變數?
還是說每個map task依舊是有各自的variable?

煩請各位前輩糾正與指教,感謝!!!


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 關於mapreduce的類別靜態變數和jvm reuse參數問題
文章發表於 : 2015-03-08, 17:30 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
MapReduce 是 Share Nothing Programming Model
因此 mapper 與 mapper 之間並無法共用變數。

您提到的 JVM 方式並不可行,因為 Mapper 可能執行於不同的實體主機,因此在 A 主機的 JVM 並無法與 B 主機的 JVM 共用變數。
Static 變數也只存在同一個 JVM 中。每一個 Mapper Task 是由 TaskTracker 獨立 fork 出來的 Child Java Process,所以無法 reuse JVM。

雖然這麼說,但還是有變通方式,例如使用檔案、使用外部資料庫,或者使用 memcache 這一類外部資訊系統,亦可達成共用變數的目的。

- Jazz


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

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


誰在線上

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


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

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