论分布式计算与线程并行

    分布式计算与线程并行两者是相差很远的概念,只不过个人觉得它们在设计思想上有几分相似,所以把他们联系起来讨论。

    线程并行要依赖于程序员的并行编程思想和并行编程工具,进行并行编程时程序员要处理好线程间的负载均衡和数据同步的问题,这类问题在组建分布式集群中也会遇到。

    在多线程并行中,程序员通过编译器把一个程序分割成多个线程,各个线程去匹配多核中的某一个核,让多个核并行执行多个线程。


多核多线程并行

    在分布式集群中,一个任务通过特定方式分割成多个子任务,再把这些子任务分派给集群中的节点去并发执行,得到结果再进行汇总。

    Hadoop是一个用来处理大数据的分布式编程框架, MapReduce是它的分布式处理核心组件,通过 MapReduce把一个大型任务分割成许多个小的Jobs,然后分派到各个若干个节点上并发执行,通过Jobtracker跟踪管理各个节点。


mapreduce工作流程

   分布式计算的鼻祖是Google,我们知道Google的数据中心是由大量廉价的刀片服务器组成的分布式集群,单个节点的计算存储能力都不强,但通过MapReduce、GFS调动起来的集群,计算能力和存储能力却是任何一台超级计算机都无法比拟的。

   但是分布式集群往往节点众多,除了要做好负载均衡和数据同步之外,必须处理好节点失效的问题,节点间的通信也是一个瓶颈。


hadoop数据并行

   多核处理器通过在多核之间构建高速共享缓存来解决核间通信,分布式计算则必须要有分布式文件系统来支撑,通过分布式文件系统来降低节点间的耦合,增强存储系统的数据吞吐能力。

   简单理解的话,线程并行是处理器内微观上的并行,而分布式计算则是宏观上的并行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章