1 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
Apache Spark和Apache Store的區(qū)別是什么?他們各自適用于什么樣的應(yīng)用場景?這是stackoverflow上的一個問題,這里整理簡要版回答如下:
Apache Spark是基于內(nèi)存的分布式數(shù)據(jù)分析平臺,旨在解決快速批處理分析任務(wù)、迭代機器學習任務(wù)、交互查詢以及圖處理任務(wù)。其最主要的特點在于,Spark使用了RDD或者說彈性分布式數(shù)據(jù)集。 RDD非常適合用于計算的流水線式并行操作。RDD的不變性(immutable)保證,使其具有很好的容錯能力。如果您感興趣的是更快地執(zhí)行Hadoop MapReduce作業(yè),Spark是一個很好的選項(雖然必須考慮內(nèi)存要求)。Spark相對于hadoop MR來說,除了性能優(yōu)勢之外,還有大量豐富的API,這使得分布式編程更高效。
Spark架構(gòu)圖如下,總體結(jié)構(gòu)非常簡潔,沒什么需要多說的,這里對spark的幾個細節(jié)補充解讀如下:
每個spark應(yīng)用程序有自己的執(zhí)行進程,進程以多線程的方式執(zhí)行同一個應(yīng)用的不同任務(wù)(tasks)。
因為不同的spark應(yīng)用是不同進程,所以無論是在driver端還是executor端,不同用程序都是互相隔離的,在沒有集群外存儲的情況下,應(yīng)用之間不能共享數(shù)據(jù)。
Spark對底層集群管理器是不可知的。通常能做集群進程管理的容器,都可以管理spark程序。例如Mesos / YARN這樣的集群管理也可以用于spark。當前在各大互諒網(wǎng)公司比較常用的就是基于yarn的spark。
driver端必須在整個應(yīng)用的生命周期內(nèi)存在,并且是可尋址(固定在某個機器或者說IP上),因為executor都要跟driver建立連接并通訊。
由于是driver端來負責任務(wù)的調(diào)度(指應(yīng)用具體操作的輸入輸出控制,區(qū)別于yarn的集群管理),所以driver端最好跟executor端最好在同一個局域網(wǎng)(比如同一個機房),從而避免遠距離通信。實時上driver端即使不做大的返回集合collect的話,如果任務(wù)分片(partitions)很多,也會有大量通信開銷。
- 1 回答
- 0 關(guān)注
- 1120 瀏覽
添加回答
舉報