當前位置:編程學習大全網 - 網絡軟體 - Apache Spark和Apache Storm的區別

Apache Spark和Apache Storm的區別

Apache Spark和Apache Store的區別是什麽?他們各自適用於什麽樣的應用場景?這是stackoverflow上的壹個問題,這裏整理簡要版回答如下:

Apache Spark是基於內存的分布式數據分析平臺,旨在解決快速批處理分析任務、叠代機器學習任務、交互查詢以及圖處理任務。其最主要的特點在於,Spark使用了RDD或者說彈性分布式數據集。 RDD非常適合用於計算的流水線式並行操作。RDD的不變性(immutable)保證,使其具有很好的容錯能力。如果您感興趣的是更快地執行Hadoop MapReduce作業,Spark是壹個很好的選項(雖然必須考慮內存要求)。Spark相對於hadoop MR來說,除了性能優勢之外,還有大量豐富的API,這使得分布式編程更高效。

Spark架構圖如下,總體結構非常簡潔,沒什麽需要多說的,這裏對spark的幾個細節補充解讀如下:

每個spark應用程序有自己的執行進程,進程以多線程的方式執行同壹個應用的不同任務(tasks)。

因為不同的spark應用是不同進程,所以無論是在driver端還是executor端,不同用程序都是互相隔離的,在沒有集群外存儲的情況下,應用之間不能***享數據。

Spark對底層集群管理器是不可知的。通常能做集群進程管理的容器,都可以管理spark程序。例如Mesos / YARN這樣的集群管理也可以用於spark。當前在各大互諒網公司比較常用的就是基於yarn的spark。

driver端必須在整個應用的生命周期內存在,並且是可尋址(固定在某個機器或者說IP上),因為executor都要跟driver建立連接並通訊。

由於是driver端來負責任務的調度(指應用具體操作的輸入輸出控制,區別於yarn的集群管理),所以driver端最好跟executor端最好在同壹個局域網(比如同壹個機房),從而避免遠距離通信。實時上driver端即使不做大的返回集合collect的話,如果任務分片(partitions)很多,也會有大量通信開銷。

  • 上一篇:迪士尼電影《風中奇緣》中,有沒有什麽讓妳覺得細思極恐的?
  • 下一篇:拖拉機撞樂樂是什麽電視劇啊
  • copyright 2024編程學習大全網