2

我正在和一個小組一起工作,這個小應用程序需要大量輸入(一天的日誌文件),並在幾個(現在4個,未來可能是10個)映射 - 減少步驟(Hadoop &使用Java)。優化Hadoop應用程序可伸縮性的工具?

現在我已經完成了此應用程序的部分POC,並在4臺舊桌面(我的Hadoop測試羣集)上運行了它。我注意到的是,如果你進行分區「錯誤」,水平縮放特性就會被破壞得無法識別。我發現比較單個節點(比如說20分鐘)和所有4個節點上的測試運行只會導致50%的加速(大約10分鐘),我預計加速的75%(或至少大於70%)(大約5或6分鐘)。

水平製作map-reduce比例的一般原則是確保分區儘可能獨立。我發現在我的情況下,我做了每個步驟的分區「錯誤」,因爲我只是使用了默認的Hash分區器;這會使記錄在下一個映射 - 縮小步驟中跳轉到另一個分區。我希望(還沒有嘗試過),如果我能說服儘可能多的記錄保持在同一個分區(即構建一個自定義分區),我可以加快速度並使其規模好得多。

在上述情況下,我手工找到了這個解決方案。我通過在我的車上努力思考這個問題來推斷出了什麼問題。

現在我的問題都告訴你了: - 有哪些工具可以檢測到這樣的問題? - 是否有任何指導方針/清單要遵循? - 如何測量諸如「跳過分區的記錄數」之類的事情?

任何建議(工具,教程,書,...)非常感謝。

回答

0

確保您沒有遇到小文件問題。 Hadoop針對吞吐量而不是延遲進行了優化,因此它會將加入到一個大型序列文件中的許多日誌文件比存儲在hdfs中的許多單獨文件處理得更快。以這種方式使用序列文件消除了爲獨立映射管理所需的額外時間,減少了任務並改善了數據局部性。但是,是的,您的地圖輸出合理地分配給減速器非常重要,以確保少數減速器不會因超負荷工作而過載。

0

看看Netbeans/Eclipse的Karmashpere(以前稱爲hadoop studio)插件:http://karmasphere.com/Download/download.html。有免費版本可以幫助檢測和測試運行hadoop作業。
我已經測試了一下,看起來很有希望。

相關問題