//
云中麒麟 – Apache Kylin在微軟Azure上的實踐
http://mp.weixin.qq.com/s?__biz=MzAwODE3ODU5MA==&mid=2653077748&idx=2&sn=2a9c58e6cb59b158b548c814a81de310&chksm=80a4be05b7d33713859fd37fbca02003a80e8ebc13eac0c0cfea7a8ba9bd1c7e6810f4d58cd3&scene=21#wechat_redirect
本文中部署在Azure 上的Kylin 集群包含兩個部分:一個Hadoop 集群和一個單獨的HBase 集群。通過這種方式,我們可以實現(xiàn)構建Cube 和查詢Cube 的資源隔離。
Hadoop 集群和HBase 集群都是通過Azure HDInsight 部署的。HDInsight 是Azure上的Hadoop 解決方案,使得用戶可以在云上直接使用Hortonworks 數(shù)據(jù)平臺(HDP)。
HDInsight 和HDP 最大的不同是其使用Azure Blob 存儲作為默認的文件系統(tǒng)?,F(xiàn)在你們可能好奇應該如何把客戶端應用與Azure Blob 存儲集成,或者甚至沒有意愿或時
間來使用一個新的存儲系統(tǒng)。
不用擔心!HDInsight 也支持直接訪問本地DFS。你可以向下面那樣,在客戶端應用程序中使用和以前相同的方式訪問DFS。
hdfs://<namenodehost>/<path>
此外,HDInsight 還提供了接口用于訪問存儲在Azure Blob 中的數(shù)據(jù)。這樣就可以通過使用相同的存儲容器( 譯者注:Storage Container, Azure 中的存儲概念。
https://www.azure.cn/documentation/articles/storage-introduction/ )
,實現(xiàn)在Hadoop 集群和HBase 集群之間共享數(shù)據(jù)。
wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>
為了使Kylin 能夠運行在Azure HDInsight 上,我修改了KylinConfigBase.java 和
HadoopUtil.java 兩個文件,并在kylin.properties 中添加了如下屬性。通過這些更改,
所有在Cube 構建過程中產(chǎn)生的數(shù)據(jù)都會被存儲到Azure Blob 存儲中。
與此同時,你的客戶端應用依然可以像平常一樣在HDFS 中存儲數(shù)據(jù)。你需要做的就是像下面那樣在Hive 中創(chuàng)建一個外部表,指定本地HDFS 中的路徑作為數(shù)據(jù)源。
這樣一來數(shù)據(jù)就會在構建 Cube 的“創(chuàng)建Hive 中間平表”這一步時,從本地HDFS 寫入到Azure Blob 存儲中。
Kylin 的部署環(huán)境和上線流程
QA 環(huán)境包含一個獨立的Kylin 集群和Hadoop 集群,當需要升級底層系統(tǒng)時,我們可以先在QA 環(huán)境中進行系統(tǒng)升級、性能測試和兼容性測試。當所有測試通過后,再去升級Prod 環(huán)境。與此同時,QA 環(huán)境也用于應用程序開發(fā)。
Staging 環(huán)境和Prod 環(huán)境共享相同的底層系統(tǒng)(Hive/HBase)。所以我們可以先在Staging 環(huán)境中設計、審查和構建新的Cube,當一切順利后,再把新Cube 上線到Prod環(huán)境中。
Kylin 構建Cube 的流程
下面我會給出一個示例,演示如何通過每5 分鐘的增量構建來進行實時分析。
集群資源
Hadoop-2.7.1 集群
Hbase-0.98.4 集群
Kylin-1.5.3 構建成本
Kylin-1.5.3 查詢成本
后期會給出更為詳細的性能測試,敬請期待。