我正在使用Hadoop進行大學任務,並且我的代碼正在工作,但即時通訊遇到了一個小問題。Hadoop無法設置減少> 1
我想將reducer的數量設置爲19(這是文檔建議的0.95 *容量)。但是,當我在任務跟蹤器中查看我的工作時,它總共顯示1個縮減器。
System.err.println("here");
job.setNumReduceTasks(19);
System.err.println(job.getNumReduceTasks());
產量預期:
here
19
但在最終輸出我得到:
12/05/16 11:10:54 INFO mapred.JobClient: Data-local map tasks=111
12/05/16 11:10:54 INFO mapred.JobClient: Rack-local map tasks=58
12/05/16 11:10:54 INFO mapred.JobClient: Launched map tasks=169
12/05/16 11:10:54 INFO mapred.JobClient: Launched reduce tasks=1
我已覆蓋的MapReduce的部分是:
- 映射
- 減速器
- 分區器
- 分組比較器。
我的第一個想法是分區器對每個鍵都返回相同的值。我檢查了這一點,情況並非如此。
我也檢查了石斑魚工作正常。
我不知道還有什麼可能導致這種情況。如果有人可以幫助它,將不勝感激。
我非常反對Java的人,所以請嘗試使用非常明確的例子,如果你可以。 PS:我沒有設置這個簇,它是由大學設置的,所以我不確定任何配置變量。 PS:有太多的代碼要發佈,所以請讓我知道任何代碼,特別是你想看到的。
編輯:我被TejasP提出以下問題:
你真的運行在本地模式在Hadoop的代碼或它的? (如果您的工作在jobtracker和tasktracker上看到,請參閱 )。
是的我是,它可以在jobtracker UI中查看。這也報告1減速機。以及具有 注意:在settings.xml中將reducer列爲1
您是否在環境中導出了HADOOP變量?
是,他們是在ENV可見的代碼無法編譯,直到我已經設置。
env | grep HADOOP
HADOOP_HOME=/mnt/biginsights/opt/ibm/biginsights/IHC
HADOOP_CONF_DIR=/mnt/biginsights/opt/ibm/biginsights/hadoop-conf
是羣集單個節點或多個節點? 並且即使該羣集是多個節點,是否所有節點都健康?其他節點有問題嗎?
是有多個節點(10)作業服務器報告:
Nodes: 10
Map Task Capacity: 20
Reduce Task Capacity: 20
Blacklisted Nodes: 0
您是否正確使用setNumReduceTasks? 如上所述,我已經調用了set,然後獲取並獲得它需要的值(19),但最終的代碼仍然只使用了1.
您可以將代碼縮減爲小型map-reduce代碼通過刪除細節(這只是爲了調試)。運行。走着瞧吧。面對同樣的問題,在原始問題中提供簡化的代碼。
我會嘗試的結果
你能看到什麼是在XML配置在你的工作中。 (在web前端的作業視圖中,靠近「作業文件」的藍色鏈接)。爲「mapred.reduce.tasks」關鍵字映射了什麼值? –
值爲,mapred.reduce.tasks:1 什麼是設置這個數字? – Nick
我相信這是一個錯誤。你可以直接通過你的配置來設置值,我想這是job.set(「mapred.reduce.tasks」,「19」);.其實這個方法應該正確地做到這一點。 –