我的同事之一是與我爭論在我們的應用程序(文本處理)中引入map-reduce概念。他的觀點是我們不應該使用線程概念的原因。我們都是這種地圖縮減範式的新手。我認爲使用map-reduce概念可以幫助開發人員處理線程同步,死鎖,共享數據的開銷。除了這個之外,還有其他什麼用於映射 - 減少概念而不是線程嗎?線程和Map-Reduce處理之間的區別?
4
A
回答
2
Map-reduce增加了大量的開銷,但可以用於協調一大羣機器,用於「尷尬平行」的用例。如果你有多個內核並且只有一個主機,線程是唯一值得的,但是有許多框架在原始線程上增加了抽象層(例如Concurrent,Akka),這些框架通常更容易處理。
2
您可以在此找到相關的紙張,Comparing Fork/Join and MapReduce。
本文比較了三種並行範例的性能,可伸縮性和可編程性:fork/join,MapReduce和混合方法。他們發現,基本上Java fork/join具有較低的啓動延遲並適用於小型輸入(< 5MB),但由於共享內存的大小限制,單個節點體系結構無法處理較大的輸入。另一方面,MapReduce具有顯着的啓動延遲(幾十秒),但對於計算羣集中更大的輸入(> 100MB)很好。
線程提供了將任務劃分爲多個子任務的功能,更多層次,現階段「叉間」溝通的可能性,更傳統的編程。不會延伸(至少在紙張上)超出一臺機器。非常適合您的八核。
M-R只做了一個大的分割,映射的分割根本不在對方之間,然後一起縮小了所有的東西。單層,在減少之前不會進行相互分離的通信,並且可以大規模擴展。非常適合利用您的雲份額。
相關問題
- 1. BackgroundWorker和線程之間的區別?
- 2. thread.start()和executor.submit(線程)之間的區別
- 3. Akka中的羣集和遠程處理之間的區別
- 4. 並行計算中處理器和進程之間的區別?
- 5. 批處理和守護進程之間的區別
- 6. axd和ashx處理程序之間的區別
- 7. MassTransit中處理程序和消費者之間的區別
- 8. 事件處理程序和回調函數之間的區別
- 9. 批處理編程中%〜2和%2之間的區別?
- 10. 時間多線程和超線程之間有什麼區別?
- 11. 多核處理器之間的區別
- 12. 消息處理程序和命令處理程序之間有區別嗎?
- 13. SwingUtilities線程和AWT.EventQueue線程之間的區別
- 14. 線程#運行和線程#喚醒之間的區別?
- 15. 線程和線程池之間的區別
- 16. 工作線程和backgroundworker線程之間的區別?
- 17. UI線程和其他線程之間的區別
- 18. 機器可處理和機器可理解之間的區別
- 19. 線程狀態之間的區別
- 20. 關於GCD和線程類別之間的區別的疑問
- 21. Normal MapReduce作業和Sequential MapReduce作業有什麼區別和相似之處?
- 22. 現有的MapReduce和YARN之間的區別(MRv2)
- 23. 管理和cms之間的區別 - django
- 24. http_proxy,https_proxy和代理之間的區別?
- 25. 編碼和整理之間的區別?
- 26. PIG local和mapreduce模式之間的區別
- 27. mapreduce分割和火花分割之間的區別
- 28. 錯誤處理模塊中的Resume和Goto之間的區別
- 29. Spring批處理中的步驟,Tasklet和塊之間的區別
- 30. Spark中的RDD和批處理之間的區別?
你的處理器有多少核心?這個問題只有在一臺擁有多個可以實際並行執行線程的內核的機器上時纔有意義。 –
@JudgeMental我們擁有多核心的單主機。在這種情況下,線程將會很好。這是你的意思嗎? – udi