在Scala/Hadoop系統中充分利用多核並行處理的更好方法是什麼?將工作分配給多個核心:Hadoop或Scala的並行集合?
假設我需要處理1億個文檔。文件不是很大,但處理它們是計算密集型的。如果我的Hadoop集羣有100臺機器,每臺機器有10個內核,我可以:
A)向每臺機器發送1000個文檔,讓Hadoop在10個內核中的每一個上啓動一個映射(或可用的最多)
或
B)發送1000個文檔,以每臺機器(仍在使用Hadoop),並使用Scala的並行集合,以充分利用多核的。 (我會將所有文檔放在並行集合中,然後在集合上調用map
)。換句話說,使用Hadoop在集羣級別進行分發,並使用並行集合來管理每臺計算機內核的分配。
這是有用的信息,但我認爲我的問題是誤導。我現在編輯了我的問題。它不是Scala或Hadoop;它更像是Hadoop與Hadoop,用於在節點之間分配PLUS Scala並行集合,以便分發到每臺機器的內核。 – Adrian 2012-03-16 02:45:53
你的任務是可並行化的,所以你不會在Hadoop之上使用scala並行集合。相反,您可以運行足夠多的Hadoop映射器來填充所有內核。通常在使用Hadoop時,您的任務將是單線程的。您已經將您的問題與Hadoop MapReduce進行了並行處理。 – schmmd 2012-03-16 03:32:11
這很有道理。謝謝。 – Adrian 2012-03-16 04:19:30