apache kylin 是什麼?
apache kylin™是乙個開源的分布式分析引擎,提供hadoop之上的sql查詢介面及多維分析(olap)能力以支援超大規模資料,最初由ebay inc. 開發並貢獻至開源社群。它能在亞秒內查詢巨大的hive表。
apache kylin框架介紹
apache kylin 能提供低延遲(sub-second latency)的秘訣就是預計算,即針對乙個星型拓撲結構的資料立方體,預計算多個維度組合的度量,然後將結果儲存在hbase中,對外暴露jdbc、odbc、rest api的查詢介面,即可實現實時查詢。
kylin 框架
如上圖所示,kylin從hadoop hive中獲取資料,然後經過cube build engine,將hive中的資料build成乙個olap cube儲存在hbase中。使用者執行sql查詢時,通過query引擎,將sql語句解析成olap cube查詢,然後將結果返回給使用者。
apache kylin核心概念
1.表(table):this is definition of hive tables as source of cubes,在build cube 之前,必須同步在 kylin中。
2.模型(model):模型描述了乙個星型模式的資料結構,它定義了乙個事實表(fact table)和多個查詢表(lookup table)的連線和過濾關係。
cube 描述:描述乙個cube例項的定義和配置選項,包括使用了哪個資料模型、包含哪些維度和度量、如何將資料進行分割槽、如何處理自動合併等等。
4.cube例項:通過cube描述build得到,包含乙個或者多個cube segment。
5.分割槽(partition):使用者可以在cube描述中使用乙個data/string的列作為分割槽的列,從而將乙個cube按照日期分割成多個segment。
6.立方體段(cube segment):它是立方體構建(build)後的資料載體,乙個 segment 對映hbase中的一張表,立方體例項構建(build)後,會產生乙個新的segment,一旦某個已經構建的立方體的原始資料發生變化,只需重新整理(fresh)變化的時間段所關聯的segment即可。
7.聚合組:每乙個聚合組是乙個維度的子集,在內部通過組合構建cuboid。
8.作業(job):對立方體例項發出構建(build)請求後,會產生乙個作業。該作業記錄了立方體例項build時的每一步任務資訊。作業的狀態資訊反映構建立方體例項的結果資訊。如作業執行的狀態資訊為running 時,表明立方體例項正在被構建;若作業狀態資訊為finished ,表明立方體例項構建成功;若作業狀態資訊為error ,表明立方體例項構建失敗!
3.1 dimension & measure的種類
mandotary:強制維度,所有cuboid必須包含的維度。
hierarchy:層次關係維度,維度之間具有層次關係性,只需要保留一定層次關係的cuboid即可。
derived:衍生維度,在lookup 表中,有一些維度可以通過它的主鍵衍生得到,所以這些維度將不參加cuboid的構建。
count distinct(hyperloglog) :直接進行count distinct是很難去計算的,乙個近似的演算法hyperloglog可以保持錯誤率在乙個很低的範圍內。
count distinct(precise):將基於roaringbitmap進行計算,目前只支援int和bigint。
3.2 cube action種類
build:給定乙個分割槽列指定的時間間隔,對cube進行build,建立乙個新的cube segment。
refresh:這個操作,將在一些分期週期內對cube segment進行重新build。
merge:這個操作將合併多個cube segments。這個操作可以在構建cube時,設定為自動完成。
purge:清理乙個cube例項下的segment,但是不會刪除hbase表中的tables。
3.3 job狀態
*new:表示乙個job已經被建立。
*pending:表示乙個job已經被job scheduler提交,等待執行資源。
*running:表示乙個job正在執行。
*finished:表示乙個job成功完成。
*error:表示乙個job因為錯誤退出。
*discarded:表示乙個job被使用者取消。
3.4 job執行
*resume:這個操作將從失敗的job的最後乙個成功點繼續執行該job。
*discard:無論工作的狀態,使用者可以結束它和釋放資源。
apache kylin cube 的儲存
簡單的說cuboid的維度會對映為hbase的rowkey,cuboid的指標會對映為hbase的value。
cube對映成hbase儲存:
如上圖原始表所示:hive表有兩個維度列year和city,有乙個指標列price。如上圖預聚合表所示:我們具體要計算的是year和city這兩個維度所有維度組合(即4個cuboid)下的sum(priece)指標,這個指標的具體計算過程就是由mapreduce完成的。
如上圖字典編碼所示:為了節省儲存資源,kylin對維度值進行了字典編碼。圖中將beijing和shanghai依次編碼為0和1。
如上圖hbase kv儲存所示:在計算cuboid過程中,會將hive表的資料轉化為hbase的kv形式。rowkey的具體格式是cuboid id + 具體的維度值(最新的rowkey中為了併發查詢還加入了shardkey),以預聚合表內容的第2行為例,其維度組合是(year,city),所以cuboid id就是00000011,cuboid是8位,具體維度值是1994和shanghai,所以編碼後的維度值對應上圖的字典編碼也是11,所以hbase的rowkey就是0000001111,對應的hbase value就是sum(priece)的具體值
apache kylin 如何將sql轉換成hbase scan查詢
還是以上面的例子進行解釋,假
設查詢sql如下:
sql 轉換成 scan
這個sql涉及維度year和city,所以其對應的cuboid是00000011,又因為city的值是確定的beijing,所以在scan hbase時就會scan rowkey以00000011開頭且city的值是beijing的行,取到對應指標sum(price)的值,返回給使用者。
Kylin基本介紹
apache kylin 是乙個開源的分布式分析引擎,提供hadoop spark之上的sql查詢介面及多維分析 olap 能力以支援超大規模資料,最初由ebay inc.開發並貢獻至開源社群。它能在亞秒內查詢巨大的hive表。摘自官網 1 可擴充套件超快olap引擎 為減少在hadoop spar...
Kylin基本介紹
apache kylin 是乙個開源的分布式分析引擎,提供hadoop spark之上的sql查詢介面及多維分析 olap 能力以支援超大規模資料,最初由ebay inc.開發並貢獻至開源社群。它能在亞秒內查詢巨大的hive表。摘自官網 1 可擴充套件超快olap引擎 為減少在hadoop spar...
kylin的基本介紹
kylin簡介 kylin 中國團隊研發的,是第乙個真正由中國人自己主導 從零開始 自主研發 並成為apache頂級開源專案 kylin的定位 對資料進行預計算 預處理,主要出現在輔助hive元件 查詢效率比較慢 提高查詢效率。hive的效能比較慢,支援sql,hbase的效能快,原生不支援sql。...