㈠ 大數據分析界的「神獸」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求助,也可以附上這個包。
㈡ 大數據學習入門規劃
大數據方向的工作目前分為三個主要方向:
01.大數據工程師
02.數據分析師
03.大數據科學家
04.其他(數據挖掘本質算是機器學習,不過和數據相關,也可以理解為大數據的一個方向吧)
一、大數據工程師的技能要求
二、大數據學習路徑
三、學習資源推薦(書籍、博客、網站)
一、大數據工程師的技能要求總結如下:
必須技能10條:01.Java高級編程(虛擬機、並發)02.Linux 基本操作03.Hadoop(此處指HDFS+MapRece+Yarn )04.HBase(JavaAPI操作+Phoenix )05.Hive06.Kafka 、07.Storm08.Scala09.Python10.Spark (Core+sparksql+Spark streaming )進階技能6條:11.機器學習演算法以及mahout庫加MLlib12.R語言13.Lambda 架構14.Kappa架構15.Kylin16.Aluxio
二、學習路徑
第一階段:
01.Linux學習(跟鳥哥學就ok了)
02.Java 高級學習(《深入理解Java虛擬機》、《Java高並發實戰》
第二階段:
03.Hadoop (董西成的書)04.HBase(《HBase權威指南》)05.Hive(《Hive開發指南》)06.Scala(《快學Scala》)07.Spark (《Spark 快速大數據分析》)08.Python (跟著廖雪峰的博客學習就ok了)
第三階段:對應技能需求,到網上多搜集一些資料就ok了,我把最重要的事情(要學什麼告訴你了),剩下的就是你去搜集對應的資料學習就ok了當然如果你覺得自己看書效率太慢,你可以網上搜集一些課程,跟著課程走也OK 。這個完全根據自己情況決定,如果看書效率不高就上網課,相反的話就自己看書。
三,學習資源推薦:01.Apache 官網02.Stackoverflow04.github03.Cloudra官網04.Databrick官網05.過往的記憶(技術博客)06.CSDN,51CTO 07.至於書籍當當、京東一搜會有很多,其實內容都差不多
那麼如何從零開始規劃大數據學習之路!
大數據的領域非常廣泛,往往使想要開始學習大數據及相關技術的人望而生畏。大數據技術的種類眾多,這同樣使得初學者難以選擇從何處下手。本文將為你開始學習大數據的征程以及在大數據產業領域找到工作指明道路,提供幫助。
㈢ 大數據主要學習什麼知識
首先是基礎階段。這一階段包括:關系型資料庫原理、LINUX操作系統原理及應用。在掌握了這些基礎知識後,會安排這些基礎課程的進階課程,即:數據結構與演算法、MYSQL資料庫應用及開發、SHELL腳本編程。在掌握了這些內容之後,大數據基礎學習階段才算是完成了。
接下來是大數據專業學習的第二階段:大數據理論及核心技術。第二階段也被分為了基礎和進階兩部分,先理解基礎知識,再進一步對知識內容做深入的了解和實踐。基礎部分包括:布式存儲技術原理與應用、分布式計算技術、HADOOP集群搭建、運維;進階內容包括:HDFS高可靠、ZOOKEEPER、CDH、Shuffle、HADOOP源碼分析、HIVE、HBASE、Mongodb、HADOOP項目實戰。
完成了這部分內容的學習,學員們就已經掌握了大數據專業大部分的知識,並具有了一定的項目經驗。但為了學員們在大數據專業有更好的發展,所學知識能更廣泛地應用到大數據相關的各個崗位,有個更長遠的發展前景。
第三階段叫做數據分析挖掘及海量數據高級處理技術。基礎部分有:PYTHON語言、機器學習演算法、FLUME+KAFKA;進階部分有:機器學習演算法庫應用、實時分析計算框架、SPARK技術、PYTHON高級語言應用、分布式爬蟲與反爬蟲技術、實時分析項目實戰、機器學習演算法項目實戰。