Kyligence Copilot - AI 数智助理,以 AI 变革企业经营与管理! 立即了解更多

云中麒麟 – Apache Kylin在微软Azure上的实践

朱德璐
2016年 11月 30日

本文来自微软Bing工程师朱德璐的实践,讲述了如何把Apahce Kylin(一款基于Hadoop 的开源OLAP 解决方案,能够处理超大规模数据集)运行在Microsoft Azure(一个云计算平台)上并利用HDInsight来进行构建,值得那些希望将Apache Kylin运行在云上的朋友们参考。
感谢Kyligence工程师刘凯哥的翻译。
Azure HDInsight
本文中部署在Azure 上的Kylin 集群包含两个部分:一个Hadoop 集群和一个单独的HBase 集群。通过这种方式,我们可以实现构建Cube 和查询Cube 的资源隔离。
Hadoop 集群和HBase 集群都是通过Azure HDInsight 部署的。HDInsight 是Azure上的Hadoop 解决方案,使得用户可以在云上直接使用Hortonworks 数据平台(HDP)。
详情可参见https://azure.microsoft.com/en-us/documentation/learning-paths/hdinsight-self-guided-hadoop-training/
HDInsight 和HDP 最大的不同是其使用Azure Blob 存储作为默认的文件系统。现在你们可能好奇应该如何把客户端应用与Azure Blob 存储集成,或者甚至没有意愿或时间来使用一个新的存储系统。
不用担心!HDInsight 也支持直接访问本地DFS。你可以向下面那样,在客户端应用程序中使用和以前相同的方式访问DFS。
hdfs://<namenodehost>/<path>
此外,HDInsight 还提供了接口用于访问存储在Azure Blob 中的数据。这样就可以通过使用相同的存储容器( 译者注:Storage Container, Azure 中的存储概念。
https://www.azure.cn/documentation/articles/storage-introduction/ )
,实现在Hadoop 集群和HBase 集群之间共享数据。
wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>
为了使Kylin 能够运行在Azure HDInsight 上,我修改了KylinConfigBase.java 和
HadoopUtil.java 两个文件,并在kylin.properties 中添加了如下属性。通过这些更改,所有在Cube 构建过程中产生的数据都会被存储到Azure Blob 存储中。
与此同时,你的客户端应用依然可以像平常一样在HDFS 中存储数据。你需要做的就是像下面那样在Hive 中创建一个外部表,指定本地HDFS 中的路径作为数据源。
这样一来数据就会在构建 Cube 的“创建Hive 中间平表”这一步时,从本地HDFS 写入到Azure Blob 存储中。

Kylin 的部署环境和上线流程
QA 环境包含一个独立的Kylin 集群和Hadoop 集群,当需要升级底层系统时,我们可以先在QA 环境中进行系统升级、性能测试和兼容性测试。当所有测试通过后,再去升级Prod 环境。与此同时,QA 环境也用于应用程序开发。
Staging 环境和Prod 环境共享相同的底层系统(Hive/HBase)。所以我们可以先在Staging 环境中设计、审查和构建新的Cube,当一切顺利后,再把新Cube 上线到Prod环境中。

Kylin 构建Cube 的流程
下面我会给出一个示例,演示如何通过每5 分钟的增量构建来进行实时分析。

后期会给出更为详细的性能测试,敬请期待。

添加企微

kyligence
关注我们

kyligence