我有一個功能需要在很多文件(1000's)上調用。每個都獨立於另一個,並且可以並行運行。每個文件的功能輸出不需要與其他文件合併(當前)。我有很多的服務器,我可以擴展這個的,但我不知道該怎麼做:MapReduce或批處理作業?
1)在其上運行MapReduce的
2)創建1000個就業機會的(每個人都有它的工作原理不同的文件上)。
一種解決方案會比另一種解決方案更可取嗎?
謝謝!
我有一個功能需要在很多文件(1000's)上調用。每個都獨立於另一個,並且可以並行運行。每個文件的功能輸出不需要與其他文件合併(當前)。我有很多的服務器,我可以擴展這個的,但我不知道該怎麼做:MapReduce或批處理作業?
1)在其上運行MapReduce的
2)創建1000個就業機會的(每個人都有它的工作原理不同的文件上)。
一種解決方案會比另一種解決方案更可取嗎?
謝謝!
MapReduce將爲分佈大型數據集工作負載提供重要價值。在你的情況下,在小型獨立數據文件上做小型獨立工作,在我看來這可能是矯枉過正的。
所以,我寧願運行一堆動態創建的批處理文件。
,或者,使用羣集管理器和作業調度,如SLURMhttps://computing.llnl.gov/linux/slurm/
SLURM:一個高度可擴展資源管理器
SLURM是專爲一個開源的資源管理器所有大小的Linux集羣 。它提供了三個關鍵功能。首先它將 分配給 用戶的資源(計算機節點)獨佔和/或非獨佔訪問一段時間,以便他們可以執行工作。其次,它提供了一個框架,用於在一組分配的節點上啓動,執行和監視工作 (通常是並行作業)。最後,它通過管理待處理的 工作隊列來仲裁資源爭用。
因爲它只有1000個文件(而不是1000000000個文件),所以完整的HADOOP設置可能是矯枉過正的。 GNU並行試圖填補順序腳本和Hadoop之間的差距:
ls files | parallel -S server1,server2 your_processing {} '>' out{}
你可能會想了解--sshloginfile
。根據文件的存儲位置,您也可能想學習--trc
。
觀看介紹視頻瞭解更多:http://www.youtube.com/watch?v=OpaiGYxkSuQ
+1。一般來說,你想要做的最簡單的事情,將適合你的問題。 @PA指出,設置mapreduce來完成獨立文件中可以使用獨立腳本完成的事情是過度的。話雖如此,如果你知道你想學習MapReduce出於其他原因,並且想用這個更簡單的問題作爲出發點,那就去做吧。但我不會在這種情況下推薦它。 –