Taiwan Hadoop Forum
http://forum.hadoop.tw/

關於job.setNumReduceTask 程式設計 分配問題
http://forum.hadoop.tw/viewtopic.php?f=7&t=38316
1 頁 (共 1 頁)

發表人:  poolikujm123 [ 2016-04-18, 14:36 ]
文章主題 :  關於job.setNumReduceTask 程式設計 分配問題

我有三台虛擬機,
其中我的程式的演算法需要跑四次的map reduce,
我想問假設我有三個文件,如何分配給三台虛擬機,第一台執行第一個文件,第二台執行第二個文件,以此類推,分別能夠讓每台對映執行一個文件!
當中的key值要怎麼設才好,在程式方面要如何寫才好
我有嘗試在演算法的四次mapreduce分別設job.setNumReduceTasks(3),但是輸出結果會出現資料累積重覆的情形

發表人:  jazz [ 2016-04-19, 00:09 ]
文章主題 :  Re: 關於job.setNumReduceTask 程式設計 分配問題

poolikujm123 寫:
我有三台虛擬機,
其中我的程式的演算法需要跑四次的map reduce,
我想問假設我有三個文件,如何分配給三台虛擬機,第一台執行第一個文件,第二台執行第二個文件,以此類推,分別能夠讓每台對映執行一個文件!
當中的key值要怎麼設才好,在程式方面要如何寫才好
我有嘗試在演算法的四次mapreduce分別設job.setNumReduceTasks(3),但是輸出結果會出現資料累積重覆的情形


不太懂 setNumReduceTask(3) 的用意,如果四次 mapreduce 都設為 3 個 reducer 意思變成

3 個文件 -> 第一次 mapreduce -> 產生 3 個輸出文件 -> 第二次 mapreduce -> 產生 3 個輸出文件 -> 依此類推

理論上不會出現資料重複的問題(因為 shuffle by key, 所以每個 reducer 拿到的 key 是不同的, 除非又用到特殊的 Partitioner)

由於 Hadoop 預設是根據 Block 所在位置進行工作分配,加上 DataNode 有 Short-circuit 機制。
如果真的要作到這種機制,要作以下調整才能遵循 Hadoop MapReduce 與 HDFS 原理,又可以達成分配的目的。
以下是用 MapReduce v1 (JobTracker + TaskTracker) 的原理,若是用 YARN 變因就又更多了。

1. 將 mapper 預設 slot 個數改為 1 -- 修改於 mapred-site.xml
代碼:
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>1</value>
  <property>


2. 修改副本個數 -- 設為 1 或 2 -- 修改於 hdfs-site.xml
代碼:
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>


3. 於第一台 VM 執行 hadoop fs -put 輸入1 輸入1
於第二台 VM 執行 hadoop fs -put 輸入2 輸入2
於第三台 VM 執行 hadoop fs -put 輸入3 輸入3

這樣會強迫三台 VM 使用自己唯一的 mapper slot 去讀取本機 DataNode 的 Block

- Jazz

發表人:  poolikujm123 [ 2016-04-20, 19:43 ]
文章主題 :  Re: 關於job.setNumReduceTask 程式設計 分配問題

感謝Jazz,目前已經搞定了!

發表人:  jim [ 2016-10-13, 09:04 ]
文章主題 :  Re: 關於job.setNumReduceTask 程式設計 分配問題

poolikujm123你好 請問您是如何完成的

發表人:  jazz [ 2016-10-14, 19:07 ]
文章主題 :  Re: 關於job.setNumReduceTask 程式設計 分配問題

jim 寫:
poolikujm123你好 請問您是如何完成的


網站沒有通知功能,建議直接查「個人資料」的 E-mail ,寫信去問比較容易獲得回覆 :)

- Jazz

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/