<b>1.5 apache kylin的主要特點</b>
<b></b>
apache kylin的主要特點包括支援sql接口、支援超大資料集、秒級響應、可伸縮性、高吞吐率、bi工具內建等。
1.5.1 标準sql接口
apache kylin以标準sql作為對外服務的主要接口。因為sql是絕大多數分析人員最熟悉的工具,同時也是大多數應用程式使用的程式設計接口。盡管kylin内部以cube技術為核心,對外卻沒有選用mdx(multidimensional expressions)作為接口。雖然mdx作為olap查詢語言,從學術上來說,它是更加适合kylin的選擇,然而實踐表明,sql簡單易用,代表了絕大多數使用者的第一需求,這也是kylin能夠快速推廣的一個關鍵。
sql需要以關系模型作為支撐。kylin使用的查詢模型是資料源中的關系模型表,一般而言,也就是指hive表。終端使用者隻需要像原來查詢hive表一樣編寫sql,就可以無縫地切換到kylin,幾乎不需要額外的學習,甚至原本的hive查詢也因為與sql同源,大多都無須修改就能直接在kylin上運作。
apache kylin在将來也可能會推出mdx接口。事實上已經有方法可以通過mdx轉sql的工具,讓kylin也能支援mdx。
1.5.2 支援超大資料集
apache kylin對大資料的支撐能力可能是目前所有技術中最為領先的。早在2015年ebay的生産環境中kylin就能支援百億記錄的秒級查詢,之後在移動的應用場景下又有了千億記錄秒級查詢的案例。這些都是實際場景的應用,而非實驗室中的理論資料。
因為使用了cube預計算技術,在理論上,kylin可以支撐的資料集大小沒有上限,僅受限于存儲系統和分布式計算系統的承載能力,并且查詢速度不會随資料集的增大而減慢。kylin在資料集規模上的局限性主要在于次元的個數和基數。它們一般由資料模型來決定,不會随着資料規模的增長而線性增長,這也意味着kylin對未來資料的增長有着更強的适應能力。
如今(截至2016年5月),對于apache kylin,除了ebay将其作為孵化公司有廣泛應用之外,國内外一線的網際網路公司對此幾乎都有大規模的使用,包括百度、網易、京東、美團、唯品會、expedia等。此外,其在傳統行業中也有非常多的實際應用,包括中國移動、銀聯、國美等。據不完全統計,真實上線的apache kylin使用者已經超過了一百多家,在開源後一年多一點的時間内能有如此大的全球使用者基礎,足見kylin在處理超大規模資料集上的能力和優勢。
1.5.3 亞秒級響應
apache kylin擁有優異的查詢響應速度,這點得益于預計算,很多複雜的計算,比如連接配接、聚合,在離線的預計算過程中就已經完成,這大大降低了查詢時刻所需要的計算量,提高了響應速度。
根據可查詢到的公開資料可以得知,apache kylin在某生産環境中90%的查詢可以在3s内傳回結果。這并不是說一小部分sql相當快,而是在數萬種不同sql的真實生産系統中,絕大部分的查詢都非常迅速;在另外一個真實的案例中,對1000多億條資料建構了立方體,90%的查詢性能都在1.18s以内,可見kylin在超大規模資料集上表現優異。這與一些隻在實驗室中,隻在特定查詢情況下采集的性能資料不可同日而語。當然并不是使用kylin就一定能獲得最好的性能。針對特定的資料及查詢模式,往往需要做進一步的性能調優、配置優化等,性能調優對于充分利用好apache kylin至關重要。
1.5.4 可伸縮性和高吞吐率
在保持高速響應的同時,kylin有着良好的可伸縮性和很高的吞吐率。圖1-5是來自網易的性能分享。圖1-5中左側是kylin查詢速度與mondrian/oracle的對比,可以看到在3個測試查詢中,kylin分别比mondrian/oracle快147倍、314倍和59倍。
同時,圖1-5中右側展現了kylin的吞吐率及其可伸縮性。在隻有1個kylin執行個體的情況下,kylin每秒可以處理近70個查詢,已經遠遠高于每秒20個查詢的一般水準。更為理想的是,随着伺服器的增加,吞吐率也呈線性增加,存在4個執行個體時可達到每秒230個查詢左右,而這4個執行個體僅部署在一台機器上,理論上添加更多的應用伺服器後可以支援更大的并發率。
圖1-5 kylin的可伸縮性和吞吐率
這主要還是歸功于預計算降低了查詢時所需的計算總量,令kylin可以在相同的硬體配置下承載更多的并發查詢。
1.5.5 bi及可視化工具內建
apache kylin提供了豐富的api,以與現有的bi工具內建,具體包括如下内容。
odbc接口,與tableau、excel、power bi等工具內建。
jdbc接口,與saiku、birt等java工具內建。
rest api,與javascript、web網頁內建。
分析師可以沿用他們最熟悉的bi工具與kylin一同工作,或者在開放的api上做二次開發和深度定制。
另外,kylin核心開發團隊也貢獻了apache zeppelin的插件,現在已經可以用zeppelin來通路kylin服務。