Multithreading 线程和Map Reduce处理之间的区别?

Multithreading 线程和Map Reduce处理之间的区别?,multithreading,mapreduce,Multithreading,Mapreduce,我的一位同事正在和我争论在我们的应用程序(文本处理)中引入map-reduce概念。他的观点是为什么我们不应该使用线程概念。我们都是这个map-reduce范式的新手。我认为使用MapReduce概念可以帮助开发人员减少处理线程同步、死锁和共享数据的开销。对于映射reduce概念而不是线程,是否还有其他方法 Map reduce增加了大量开销,但可以协调大量机器,以实现“令人尴尬的并行”用例。只有当您有多个核心和一台主机时,线程才有价值,但有许多框架在原始线程(例如并发线程、Akka线程)之上添

我的一位同事正在和我争论在我们的应用程序(文本处理)中引入map-reduce概念。他的观点是为什么我们不应该使用线程概念。我们都是这个map-reduce范式的新手。我认为使用MapReduce概念可以帮助开发人员减少处理线程同步、死锁和共享数据的开销。对于映射reduce概念而不是线程,是否还有其他方法

Map reduce增加了大量开销,但可以协调大量机器,以实现“令人尴尬的并行”用例。只有当您有多个核心和一台主机时,线程才有价值,但有许多框架在原始线程(例如并发线程、Akka线程)之上添加抽象层,通常更易于使用。

您可以找到相关的论文

本文比较了三种并行模式:fork/join、MapReduce和混合方法的性能、可扩展性和可编程性

他们发现,Java fork/join基本上具有较低的启动延迟,并且可以很好地扩展计算集群上的小输入(100MB)

线程提供了以递归方式将任务划分为多个子任务的工具;更多的层次,在这个阶段“叉间”通信的可能性,更传统的编程。不延伸(至少在纸上)超过一台机器。非常适合利用你的八核


M-R只进行一次大拆分,映射的拆分彼此之间根本不说话,然后将所有内容合并在一起。一个单层,在reduce之前没有内部拆分通信,并且具有大规模可扩展性。非常适合利用您在云计算中的份额。

您的处理器有多少内核?只有当您在一台具有多个内核的机器上,并且实际上可以并行执行线程时,这个问题才有意义。@Judgental我们有一台具有多个内核的主机。在这种情况下,线程将是好的。这就是你的意思?