常見分布式計算框架特點

jopen 9年前發布 | 18K 次閱讀 分布式 分布式/云計算/大數據

Hadoop

Hadoop在使用原理上基本上遵照了MapReduce這樣的一種模式進行項目的實際開發與交互,將一個個任務分解成映射與合并兩種方式,然而通過映射進行分類與簡化,從而產生部分歸并結果,然后對同類結果進行歸并計算;

由于Hadoop的中間結果需要依托于hdfs,從而需要經歷硬盤及網絡io的過程所以在實時性方面表現稍差;

Hadoop主要處理hdfs上的文本文件,而文本文件內容本身也是半結構化的;

之前的資源調度就是靠其中的master,之后hadoop2.0之后引入yarn進行資源的統一管理;

Spark

Spark的原理是將任務進行分解,并且在每一步任務上進行相應的操作處理,同時根據操作處理順序構建DAG圖,從而應用DAG引擎進行相關操作。

由于Spark在進行處理時主要使用內存所以基本可以做到實時性,同時,在進行DAG引擎優化方面對速度也有一定程度提升;

Spark本身是通過DAGSchedulerTaskScheduler實現任務調度以及計算節點切換,現在mesosyarn都對spark進行了一定程度的支持;

Spark的數據模型使用RDD這種彈性的存儲,并且基于該數據模型構建了相應的數據依賴,從而實現一定的容錯機制;

Spark基本上都運行在內存中,可以使用yarn或者mesos進行資源的統一管理,然后在上面進行spark的相關任務調度;

Storm

Storm是基于消息源(spout)獲取數據發送信息,并且將信息發送到bolt形成相應的tuple,之后在此基礎上繼續構建數據的處理規則,處理規則需要認為變成實現;

Storm本身是流式數據處理,所以在實現實時性方面有一定的優勢;

Storm的數據模型沒有體現依賴關系,沒有進行特別的存儲結構設計,同時在數據模型處理方面僅僅進行結構設計而沒有進行優化;

資源調度以及使用方面直接按照用戶的i自定義方式進行,需要用戶編寫大量的流程控制問題,同時沒有在資源啊隔離放main做些謝智導致可能出現局部任務影響全局的問題;

LinkedIn Samza

領英出品,主要結合kafka的設計思想將數據進行分塊,同時保證數據的局部有序性,而任務調度方面進行簡單操作后進行輸入與輸出。

進行實時數據流處理,并且綜合了Kafka這樣的消息隊列;

通過類似于Kafka的數據結構,實現消息的分區、局部有序以及消息的重讀機制,同時配合持久化方法可實現滑動窗口;

資源的管理主要借助于Yarn,利用消息隊列的方式顯現消息處理,同時通過備份方式顯示數據局部容錯;

Yahoo Apache S4

Yahoo出品,與Storm比較類似,基于每個節點處理不同的功能,同樣是組成了一個DAG圖去描述數據處理工作。

在雅虎內部使用,完成每秒數以千計的搜索查詢。

以事件沒基礎進行設計,將每一次數據當成是一個事件來處理

使用ZooKeeper進行分布式數據的管理,在內部實現了負載均衡、容錯、分發、路由等功能;

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!