spark十分優秀,但并非銀彈

jopen 8年前發布 | 9K 次閱讀 Spark

已經有太多的文章說spark有多么的優秀了,我是非常認可的。比如:統一分析引擎,RDD抽象,dataset、df等編程接口,交互式編程的支持,穩定高效的機器學習算法庫,高效的spark sql實現,基本能跟其它所有的產品集成。每次內部宣傳spark的時候,都有人說這說那,我這次就全說了吧,那spark是不是可以解決所有的數據分析問題呢?答案是,spark也并非是銀彈。

在一個多租戶的共享集群中,如果每個用戶都去申請hold一部分資源,這會導致很多用戶的資源申請不滿,最后job不能及時完成。特別的,當hold一部分資源時,利用率一般也不會很高,這樣會導致整體的利用率不高。相反,tez每進程的每任務的模式能把利用率做到90%上下。在多租戶下,能否做到jvm可以按照執行計劃按需復用或者退出是一個比較大的考驗。

每個產品領域,可以說都不是最優的,例如:mllib沒有mpi來得快,沒有parameter支持的緯度高,graphx沒有GraphLab來得快,spark streaming沒有storm來得延遲低,spark sql需要hold一部分資源,在共享環境很難大規模使用。不過就如其官方說的是,我們是一個整體,我們兄弟多,單個力量不大,但是合起來威力無窮。可以搞流式機器學習,流式圖計算,一站式解決業務幾乎所有的問題。

在core層面,reduce沒有預起,只能stage完成后再執行下一個,如果有長尾,則利用率非常低,特別是對于迭代,長尾到底。沒有network的shuffle功能,本來就是預啟動,對于standalone是可以加速的。不過這不是設計層面的事情,很容易做的。

設計層面,flink是塊基于流的,但spark是流基于塊的,為此flink說我是4G(塊基于流),spark是3G(內存計算),tez是2g(dag),mr是1g(開拓者),我理解應該是前面是后面的疊加。理論上,在一些場景下,塊基于流的體系是隨著數據量的增多能做到時間線性增長的。在一些圖及機器學習的場景下,性能能做到更好。不過目前在社區,flink只有spark投入的十分一不到。已經有很多企業在spark投入了,阿里也有一些團隊在flink上投入了,spark底層是否可以改造呢?

不過,至少在未來2年內,spark肯定會是一個上升空間的。也祝愿spark越做越好,flink也能大放光彩。

來自: http://fengshenwu.com/blog/2016/01/24/spark十分優秀,但并非銀彈/

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