2012-07-16 23 views
0

我希望每個hadoop映射器在M/R作業處理單獨的數據部分,我想測試一個僞分佈式(單節點)設置這樣的情況,即由於更大的輸入數據大小而需要存在許多映射器。考慮到我當前輸入的大小以及我正在嘗試的獨立模式,我只能看到1個地圖任務。HBase作爲輸入 - >無法平衡負載通過可用的地圖任務

我的輸入來自hbase表,我認爲每個hbase表的區域數量等於用於處理表格數據的映射器數量。

因此,對於重現其中許多映射器將處理所述輸入數據的情況下,我通過殼預定義表中的區域是這樣的:

創建「T1」,「F1」,{NUMREGIONS => 4,SPLITALGO >「HexStringSplit」}

或設定「UniformSplit」作爲SPLITALGO,但即使映射器確實增加到的區域的指定號碼(後導入數據到相應的表)中,所有的輸入數據(在隨後的測試工作,我試圖從這張表中讀取)通過只有一個映射器 - 與其他處理沒有任何inp ut行。

我工作在一個僞分佈式(單節點)設置,我真的不知道如何解決這個問題。有沒有人有任何想法?謝謝!

回答

0

您是掃描整個表格還是僅掃描整個表格的一部分?如果您正在掃描表格的一部分,那麼這可能是問題的原因,因爲您的數據源不夠大,無法觸發多個映射器。

您可以嘗試減小hbase-size.xml配置中的區域大小並重新啓動hbase以實現預期的效果。

最後,在你的mapred-site.xml配置中,你有多少個mapper插槽?如果它只是1,這不會限制地圖作業的數量,但它會限制可以在該服務器上一次運行的地圖作業的數量。

除此之外,我不認爲你對指定每個作業的映射器數量沒有太多的控制權,而不像你對減速器數量做的那樣。

+0

非常感謝您的時間 - 我沒有使用數據集的一部分,但您說得對,我會嘗試嘗試更大的數據集,以及儘快開發真正的集羣,希望能夠解決負載平衡問題,而不是試圖在獨立模式下調試不切實際的情況。 – user1519128 2012-07-17 10:07:37

+0

您也可以通過命令行或使用HBase Web界面手動在桌面上分割區域。這也可以做到這一點。 – Tucker 2012-07-17 14:07:40

+0

但是,我已經通過這個命令做到了這一點: 創建't1','f1',{NUMREGIONS => 4,我的問題是所有負載都經歷了1次4創建了地圖任務..如果我不理解這句話,請原諒。 – user1519128 2012-07-17 18:32:02