//
云中麒麟 – 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 集群。通过这种方式,我们可以实现构建Cube 和查询Cube 的资源隔离。
Hadoop 集群和HBase 集群都是通过Azure HDInsight 部署的。HDInsight 是Azure上的Hadoop 解决方案,使得用户可以在云上直接使用Hortonworks 数据平台(HDP)。
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 分钟的增量构建来进行实时分析。
集群资源
Hadoop-2.7.1 集群
Hbase-0.98.4 集群
Kylin-1.5.3 构建成本
Kylin-1.5.3 查询成本
后期会给出更为详细的性能测试,敬请期待。