論分佈式計算與線程並行

    分佈式計算與線程並行兩者是相差很遠的概念,只不過個人覺得它們在設計思想上有幾分相似,所以把他們聯繫起來討論。

    線程並行要依賴於程序員的並行編程思想和並行編程工具,進行並行編程時程序員要處理好線程間的負載均衡和數據同步的問題,這類問題在組建分佈式集羣中也會遇到。

    在多線程並行中,程序員通過編譯器把一個程序分割成多個線程,各個線程去匹配多核中的某一個核,讓多個核並行執行多個線程。


多核多線程並行

    在分佈式集羣中,一個任務通過特定方式分割成多個子任務,再把這些子任務分派給集羣中的節點去併發執行,得到結果再進行彙總。

    Hadoop是一個用來處理大數據的分佈式編程框架, MapReduce是它的分佈式處理核心組件,通過 MapReduce把一個大型任務分割成許多個小的Jobs,然後分派到各個若干個節點上併發執行,通過Jobtracker跟蹤管理各個節點。


mapreduce工作流程

   分佈式計算的鼻祖是Google,我們知道Google的數據中心是由大量廉價的刀片服務器組成的分佈式集羣,單個節點的計算存儲能力都不強,但通過MapReduce、GFS調動起來的集羣,計算能力和存儲能力卻是任何一臺超級計算機都無法比擬的。

   但是分佈式集羣往往節點衆多,除了要做好負載均衡和數據同步之外,必須處理好節點失效的問題,節點間的通信也是一個瓶頸。


hadoop數據並行

   多核處理器通過在多核之間構建高速共享緩存來解決核間通信,分佈式計算則必須要有分佈式文件系統來支撐,通過分佈式文件系統來降低節點間的耦合,增強存儲系統的數據吞吐能力。

   簡單理解的話,線程並行是處理器內微觀上的並行,而分佈式計算則是宏觀上的並行。


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