Hadoop的誕生是劃時代的數據變革,但關系數據庫時代的存留也為Hadoop真正占領數據庫領域埋下了許多的障礙。對SQL(尤其是PL/SQL)的支持一直是Hadoop大數據平臺在接手舊數據時代時亟待解決的問題。Hadoop對SQL數據庫的支持度一直是企業用戶最關心的訴求點之一,也是他們選擇的Hadoop平臺的重要標準。
本次的中國Hadoop技術峰會在SQL on Hadoop領域設有專門的分論壇,表示出了主辦方及業界對這一問題的重視。幸運的是,在七月二十三日下午的分論壇上,我們也的確看到了當前中國Hadoop技術在這方面已取得了突破性的進展。
此次的分論壇,Facebook、惠普、MapR、星環科技等多家業內巨頭在SQL on Hadoop領域進行業內的分享與比拼,這也是這些公司首次在SQL領域的研究上同臺競技。
當日下午,星環科技首席工程師陳振強博士題為《 A comparison study of SQL on Hadoop engines》對當前五種SQL on Hadoop引擎進行了性能與兼容性各方面的比較,一時間高下立判,引來眾多關注。
陳博士比較的五種引擎分別是Cloudera的Impala、Hontonworks的Tez、星環科技的Inceptor、Spark SQL和Pivotal的Greenplum。
首先在對SQL的支持上,Inceptor和Greenplum對于SQL的支持都超過了其余三種引擎,星環的Inceptor引擎則是達到了SQL2003和PL/SQL的全面兼容。
隨后他又展示了在TPC-DS系統測試基準的99個測試案例中,星環Inceptor與Pivotal Greenplum理論通過數都是99個,處于領先地位。但在實際運行中,Inceptor全數通過,Pivotal Greenplum則有4個出錯,實際通過數為95個。星環Inceptor引擎改進了內存計算引擎Spark,內存的使用更加合理,所以穩定性高,TPC-DS 99個SQL的連續測試中都能夠正確運行,而不會象其它引擎一樣出現Out of memory的情況。
在性能優化方面,星環Inceptor引擎實現了CBO(基于代價的優化),并為之添加了幾百種優化規則,如Join順序優化、過濾條件前置等等,通過這些優化規則Inceptor引擎可以得到非常高率的邏輯執行計劃。陳博士以TPC-DS中的Query3為例介紹了CBO的優化效果,Query3的原始的Join順序為date_dim(小表),store_sales(大表),item(小表)。store_sales與date_dim的過濾率為1/6左右,store_sales與item的過濾率為1/1000左右。通過CBO優化后的Join順序為store_sales, item,date_dim,比沒有CBO優化性能提升5倍以上。
星環Inceptor引擎還實現了代碼生成器(Code Generator),其中實現了Constant folding、loop unrolling、loop invariant host、CSE等傳統編譯器中的優化方法,使得表達式的計算更加高效。在TPC-DS測試中,Inceptor引擎表達式的計算性能與基于C++實現的Impala引擎相當,有些SQL性能甚至更好。
此外,星環Inceptor引擎基于Spark的DAG進行了減少shuffle的優化,使得計算的stage更少、效率更高。
正是有了如此多的優化,在TPC-DS基準測試中,星環Inceptor引擎的性能比類MPP引擎Impala提升2.7倍,比Map/Reduce改進引擎Tez提升4.7倍,比開源的SparkSQL提升5.5倍,比MPP引擎GP提升3.3倍。
領軍去IOE時代,自主研發先行者
總結來說,在SQL支持上,星環Inceptor遙遙領先,而計算引擎框架漸漸趨同,優化效果各有不同。最后,陳振強博士還提到,國內政策目前對中國IT行業去IOE有著迫切的要求,但在技術和引擎上的弱勢或者極差的兼容性都將對去IOE造成阻礙。而星環科技自主研發Inceptor,在兼容效果和性能表現上的優異都可與國外同行比肩,可以說,為國內IT業去IOE的自主化研發帶來的希望與成功的曙光。