標籤:

Spark特點及缺點?

1.Spark的內存計算 主要體現在哪裡?

2.目前Spark主要存在哪些缺點?

謝謝!


瀉藥,Spark內存計算體現它可以將RDD常駐內存(內存不足也會溢寫到磁碟的),這樣可以減少磁碟IO。缺點的話我覺得在於1.資源調度方面,Spark和Hadoop不同,執行時採用的是多線程模式,Hadoop是多進程,多線程模式會減少啟動時間,但也帶來了無法細粒度資源分配的問題。但本質上講其實這也不能算是Spark的缺點,只不過是tradeoff之後的結果而已。2.其實Spark這種利用內存計算的思想的分散式系統你想要最大發揮其性能優勢的話對集群資源配置要求較高,比如內存(當然內存不足也能用),通俗地說就是比較燒錢。其餘的坑以後再填。


優點太多了,自己百度一下就能找到,我說說缺點吧。

1. 不穩定,集群偶爾會掛掉。只適合做計算,不適合直接提供服務。

2. 數據的partition不夠好,會導致集群中的各台機器上計算任務分配不平均。

3. 任務調度不夠好。


1.Spark的內存計算 主要體現在哪裡?

(a) spark, 相比與map reduce最大的速度提升在於做重複計算時,spark可以重複使用相關的緩存數據,而M/R則會笨拙的不斷進行disk i/o. (b) 為了提高容錯性,M/R所有的中間結果都會persist到disk, 而M/R 則默認保存在內存。

2.目前Spark主要存在哪些缺點?

(a) JVM的內存overhead太大,1G的數據通常需要消耗5G的內存 -&> Project Tungsten 正試圖解決這個問題;

(b) 不同的spark app之間缺乏有效的共享內存機制 -&> Project Tachyon 在試圖引入分散式的內存管理,這樣不同的spark app可以共享緩存的數據


Spark或者說基於JVM的大數據程序都很難避開資源管理或者內存管理這個坑,說到底,隔了一層JVM。

相對而言,kudu/impala在這方面就會有一些優勢。

當然內存玩花的副作用就是玩不好,帶來的問題要比JVM會麻煩的多的多。


優點:

1.編程模型優雅,scala美到爆

2.懶計算帥到爆

缺點:

streaming。。。


推薦閱讀:

深入淺出Spark(三)什麼是Standalone
如何使用 parquet file 建立一個 RDD 的同時讀進 case class 結構?
Spark SQL到底支持什麼SQL語句?
1.5版本的Spark自己來管理內存而不是使用JVM,這不使用JVM而是自己來管理內存是咋回事?

TAG:Spark |