分佈式計算在許多領域都有普遍需求,目前流行的分佈式計算框架主要有 Hadoop MapReduce, Spark Streaming, Storm; 這三個框架各有優點,如今都屬於 Apache 基金會下的頂級項目,下文將對三個框架的特色與適用場景進行分析,以便開發者能快速選擇適合本身的框架進行開發。html
Hadoop MapReduce 是三者中出現最先,知名度最大的分佈式計算框架,最先由 Google Lab 開發,使用者遍及全球(Hadoop PoweredBy);主要適用於大批量的集羣任務,因爲是批量執行,故時效性偏低,原生支持 Java 語言開發 MapReduce ,其它語言須要使用到 Hadoop Streaming 來開發。Spark Streaming 保留了 Hadoop MapReduce 的優勢,並且在時效性上有了很大提升,中間結果能夠保存在內存中,從而對須要迭代計算和有較高時效性要求的系統提供了很好的支持,多用於能容忍小延時的推薦與計算系統。Storm 一開始就是爲實時處理設計,所以在實時分析/性能監測等須要高時效性的領域普遍採用,並且它理論上支持全部語言,只須要少許代碼便可完成適配器。git
下面的表格是對三者部分特性的比較,描述時間爲 2015-5-3,三個項目均處於快速迭代中,文中描述特性會隨時產生變化,若是與官方文檔產生出入以官方文檔爲準。github
比較項 | Storm | Spark Streaming | Hadoop MapReduce |
---|---|---|---|
血統 | UC Berkeley AMP lab | Google Lab | |
開源時間 | 2011.9.16 | 2011.5.24 | 2007.9.4 |
當前版本 | 0.9.4 | 1.3.1 | 2.7.0 |
相關資料 | 多 | 多 | 極多 |
依賴環境 | Zookeeper、Java、Python | hadoop client、Scala | Java、ssh |
技術語言 | Java、Clojure | Scala | Java |
支持語言 | Any | Scala、Java、Python | Java & Others |
延時 | 實時 | 秒級 | 較高 |
網絡帶寬 | 通常 | 通常 | 通常 |
硬盤IO | 通常 | 少 | 較少 |
集羣支持 | 好 | 超過1000節點 | 數千個節點 |
吞吐量 | 較好 | 好 | 好 |
使用公司 | 淘寶、百度、Twitte、Groupon、雅虎 | Intel、騰訊、淘寶、中移動、Google | EBay、Facebook、Google、IBM |
適用場景 | 實時的小數據塊的分析計算 | 較大數據塊又須要高時效性的小批量計算 | 低時效性的大批量計算 |
表格說明:apache
開源時間以 github 上最先的 commit 或者官網上最先發布版本的時間爲準。網絡
當前版本與特性描述截止 2015-5-3。框架
相關資料量經過比較官方文檔、搜索引擎、論壇等途徑得出。ssh
部分比較數據來源於實踐或相關文章(未找到出處)。分佈式
本文會保持更新,若是數據發現有出入,歡迎指正。oop
參考資料:post