① 大數據分析界的「神獸」Apache Kylin有多牛
1.Apache Kylin是什麼?
在現在的大數據時代,越來越多的企業開始使用Hadoop管理數據,但是現有的業務分析工具(如Tableau,Microstrategy等)
往往存在很大的局限,如難以水平擴展、無法處理超大規模數據、缺少對Hadoop的支持;而利用Hadoop做數據分析依然存在諸多障礙,例如大多數分析
師只習慣使用SQL,Hadoop難以實現快速互動式查詢等等。神獸Apache Kylin就是為了解決這些問題而設計的。
Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop動物園的重要成員。Apache
Kylin是一個開源的分布式分析引擎,最初由eBay開發貢獻至開源社區。它提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支持大
規模數據,能夠處理TB乃至PB級別的分析任務,能夠在亞秒級查詢巨大的Hive表,並支持高並發。
Apache
Kylin於2014年10月在github開源,並很快在2014年11月加入Apache孵化器,於2015年11月正式畢業成為Apache頂級項
目,也成為首個完全由中國團隊設計開發的Apache頂級項目。於2016年3月,Apache
Kylin核心開發成員創建了Kyligence公司,力求更好地推動項目和社區的快速發展。
Kyligence是一家專注於大數據分析領域創新的數據科技公司,提供基於Apache
Kylin的企業級智能分析平台及產品,以及可靠、專業、源碼級的商業化支持;並推出Apache Kylin開發者培訓,頒發全球唯一的Apache
Kylin開發者認證證書。
2.Kylin的基本原理和架構
下面開始聊一聊Kylin的基本原理和架構。簡單來說,Kylin的核心思想是預計算,即對多維分析可能用到的度量進行預計算,將計算好的結果保
存成Cube,供查詢時直接訪問。把高復雜度的聚合運算、多表連接等操作轉換成對預計算結果的查詢,這決定了Kylin能夠擁有很好的快速查詢和高並發能
力。
上圖所示就是一個Cube的例子,假設我們有4個dimension,這個Cube中每個節點(稱作Cuboid)都是這4個dimension
的不同組合,每個組合定義了一組分析的dimension(如group
by),measure的聚合結果就保存在這每個Cuboid上。查詢時根據SQL找到對應的Cuboid,讀取measure的值,即可返回。
為了更好的適應大數據環境,Kylin從數據倉庫中最常用的Hive中讀取源數據,使用
MapRece作為Cube構建的引擎,並把預計算結果保存在HBase中,對外暴露Rest
API/JDBC/ODBC的查詢介面。因為Kylin支持標準的ANSI
SQL,所以可以和常用分析工具(如Tableau、Excel等)進行無縫對接。下面是Kylin的架構圖。
說到Cube的構建,Kylin提供了一個稱作Layer Cubing的演算法。簡單來說,就是按照dimension數量從大到小的順序,從Base
Cuboid開始,依次基於上一層Cuboid的結果進行再聚合。每一層的計算都是一個單獨的Map Rece任務。如下圖所示。
MapRece的計算結果最終保存到HBase中,HBase中每行記錄的Rowkey由dimension組成,measure會保存在
column
family中。為了減小存儲代價,這里會對dimension和measure進行編碼。查詢階段,利用HBase列存儲的特性就可以保證Kylin有
良好的快速響應和高並發。
有了這些預計算的結果,當收到用戶的SQL請求,Kylin會對SQL做查詢計劃,並把本該進行的Join、Sum、Count Distinct等操作改寫成Cube的查詢操作。
Kylin提供了一個原生的Web界面,在這里,用戶可以方便的創建和設置Cube、管控Cube構建進度,並提供SQL查詢和基本的結果可視化。
根據公開數據顯示,Kylin的查詢性能不只是針對個別SQL,而是對上萬種SQL 的平均表現,生產環境下90%ile查詢能夠在在3s內返回。在上個月舉辦的Apache Kylin
Meetup中,來自美團、京東、網路等互聯網公司分享了他們的使用情況。例如,在京東雲海的案例中,單個Cube最大有8個維度,最大數據條數4億,最
大存儲空間800G,30個Cube共占存儲空間4T左右。查詢性能上,當QPS在50左右,所有查詢平均在200ms以內,當QPS在200左右,平均
響應時間在1s以內。
北京移動也在meetup上展示了Kylin在電信運營商的應用案例,從數據上看,Kylin能夠在比Hive/SparkSQL在更弱的硬體配置下獲得更好的查詢性能。 目前,有越來越多的國內外公司將Kylin作為大數據生產環境中的重要組件,如ebay、銀聯、網路、中國移動等。大家如果想了解更多社區的案例和動態,可以登錄Apache Kylin官網或Kyligence博客進行查看。
3.Kylin的最新特性
Kylin的最新版本1.5.x引入了不少讓人期待的新功能,可擴展架構將Kylin的三大依賴(數據源、Cube引擎、存儲引
擎)徹底解耦。Kylin將不再直接依賴於Hadoop/HBase/Hive,而是把Kylin作為一個可擴展的平台暴露抽象介面,具體的實現以插件的
方式指定所用的數據源、引擎和存儲。
開發者和用戶可以通過定製開發,將Kylin接入除Hadoop/HBase/Hive以外的大數據系統,比如用Kafka代替Hive作數據源,用
Spark代替MapRece做計算引擎,用Cassandra代替HBase做存儲,都將變得更為簡單。這也保證了Kylin可以隨平台技術一起演
進,緊跟技術潮流。
在Kylin
1.5.x中還對HBase存儲結構進行了調整,將大的Cuboid分片存儲,將線性掃描改良為並行掃描。基於上萬查詢進行了測試對比結果顯示,分片的存
儲結構能夠極大提速原本較慢的查詢5-10倍,但對原本較快的查詢提速不明顯,綜合起來平均提速為2倍左右。
除此之外,1.5.x還引入了Fast
cubing演算法,利用Mapper端計算先完成大部分聚合,再將聚合後的結果交給Recer,從而降低對網路瓶頸的壓力。對500多個Cube任務
的實驗顯示,引入Fast cubing後,總體的Cube構建任務提速1.5倍。
目前,社區正在著手准備Apache Kylin 1.5.2版本的發布,目前正處於Apache Mailing list投票階段,預計將會在本周在Kylin官網發布正式下載。
在本次的1.5.2版本中,Kylin帶來了總計
36個缺陷修復、33個功能改進、6個新功能。一些主要的功能改進包括對HyperLogLog計算效率的提升、在Cube構建時對Convert
data to hfile步驟的提速、UI上對功能提示的體驗優化、支持hive view作為lookup表等等。
另一個新消息是Kylin將支持MapR和CDH的Hadoop發行版,具體信息可見KYLIN-1515和KYLIN-1672。相應的測試版本是MapR5.1和CDH5.7。
UI上提供了一個重要更新,即允許用戶在Cube級別進行自定義配置,以覆蓋kylin.properties中的全局配置。如在cube中定義kylin.hbase.region.count.max 可以設置該cube在hbase中region切分的最大數量。
另
一個重要的功能是Diagnosis。用戶經常會遇到一些棘手的問題,例如Cube構建任務失敗、SQL查詢失敗,或Cube構建時間過長、SQL查詢時
間過長等。但由於運維人員對Kylin系統了解不深,很難快速定位到root cause所在地。我們在mailing
list里也經常看到很多用戶求助,由於不能提供足夠充分的信息,社區也很難給出一針見血的建議。
當用戶遇到查詢、Cube/Model管理的問題,單擊System頁面的Diagnosis按鈕,系統會自動抓取當前Project相關的信息並打包成
zip文件下載到用戶本地。這個包會包含相關的Metadata、日誌、HBase配置等。當用戶需要在mailing
list求助,也可以附上這個包。
② 100個欄位的hive大寬表kylin如何處理
在現在的大數據時代,越來越多的企業開始使用Hadoop管理數據,但是現有的業務分析工具(如Tableau,Microstrategy等) 往往存在很大的局限,如難以水平擴展、無法處理超大規模數據、缺少對Hadoop的支持;而利用Hadoop做.
③ 大數據分析界的「神獸」Apache Kylin到底有多厲害
Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop動物園的重要成員。
Apache Kylin是一個開源的分布式分析引擎,最初由回eBay開發貢獻至答開源社區。
簡而言之,Kylin的核心思想是計算在多維分析中可能使用的測量值的期望值,並保證計算結果。
存儲為多維數據集,以便在查詢期間直接訪問。將高復雜度的聚合操作、多表連接和其他操作轉換為一個預期將是這個決策的結果的查詢,使Kylin能夠具有良好的快速查詢和高並發性能力。
Kylin從數據倉庫中最常用的Hive中讀取源數據,使用MapRece作為由多維數據集構建的引擎,並將預期的結果存儲在HBase中,公開Rest API/JDBC/ODBC的查詢介面。
因為Kylin支持標准ANSI SQL,它可以無縫地連接到常見的分析工具,如Tableau、Excel等。
④ 想成為大數據開發工程師有哪些要求
大數據所需技能要求
Python語言:編寫一些腳本時會用到。
Scala語言:編寫Spark程序的最佳語言,當然也可以選擇用Python。
Ozie,azkaban:定時任務調度的工具。
Hue,Zepplin:圖形化任務執行管理,結果查看工具。
Allluxio,Kylin等:通過對存儲的數據進行預處理,加快運算速度的工具。
必須掌握的技能:
Java高級(虛擬機、並發)、Linux 基本操作、hadoop(HDFS+MapRece+Yarn )、 HBase(JavaAPI操作+Phoenix )、Hive(Hql基本操作和原理理解)、 Kafka、Storm/JStorm、Scala、Python、Spark (Core+sparksql+Spark streaming ) 、輔助小工具(Sqoop/Flume/Oozie/Hue等)
高階技能6條:
機器學習演算法以及mahout庫加MLlib、 R語言、Lambda 架構、Kappa架構、Kylin、Alluxio
大數據開發工程師除具備專業的技能外,還要有學歷(至少大專學歷),學歷是敲門磚。