Shark爲何被拋棄?

Shark的來歷

Shark是由Reynold Xin從2011年開始主導開發的。當時Hive幾乎是唯一的SQL-Hadoop的選擇方案,然而hive的性能受限於MapReduce,無法使用spark的計算模型。Shark的提出就是針對這種需求的,它的目標是技能達到企業數據倉庫的性能,又你能夠具有MapReduce的水平擴展能力。

Shark的實現原理

Shark建立在Hive代碼的基礎上,只修改了內存管理、物理計劃、執行3個模塊中的部分邏輯。Shark通過將Hive的部分物理執行計劃交換出來,最終將HiveQL轉換爲spark的計算模型,使之能運行在Spark引擎上,從而使得SQL查詢的速度得到10~100倍的提升。

被淘汰的原因

那麼Shark後來爲什麼會被Spark SQL所取代呢?
隨着Spark的不斷髮展,Shark對Hive的重度依賴體現在架構上的瓶頸越來越突出。一方面,Hive的語法解析和查詢優化等模塊本身針對的是MapReduce,限制了在Spark系統上的深度優化和維護;另一方面,過度依賴Hive制約了Spark的“One Stack Rule Them All” 既定方針,也制約了技術棧中各個組件的靈活集成。而Spark SQL拋棄了原有Shark的架構方式,但汲取了Shark的一些有點,如內存列存儲、Hive兼容性等,重新開發了SQL各個模塊的代碼。由於擺脫了對Hive的依賴,Spark SQL在數據兼容、性能優化、組件擴展方面都得到了極大提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章