Apache Kylin v3.1.0 已于上周正式发布,其中包含了许多值得一试的新功能,本文选择了 Presto 查询下压引擎、Flink 构建引擎、Kylin on Kubernetes 解决方案、新版 Hive 全局字典、增强的 Cube 迁移服务这五项重点功能进行介绍。

Presto 查询下压引擎

之前版本的 Kylin 提供了查询下压功能,该功能对于 Hive 数据源的下压有比较好的支持,但是对 Hive 以外的具有不兼容语法的数据源,用户就容易遇到因为种种方言不兼容而导致查询下压失败的问题。

为了解决这个问题,Kyligence 贡献了基于 Data Source SDK 开发的 Presto 查询下压引擎,该功能通过 Calicte 完成了Kylin 和 Presto 方言翻译,大大提升了查询下压的成功率。

Presto 下压引擎的使用文档请参考 : 
http://kylin.apache.org/docs/tutorial/query_pushdown.html

崭新的 Flink 构建引擎

Flink Engine 由腾讯贡献到 Kylin 社区(KYLIN – 3758)。在过去版本中,Kylin 只支持 MapReduce 和  Spark 两种构建引擎,为了扩大 Kylin 生态,进一步提升构建速度,Kylin v3.1.0引入了 Flink 作为构建引擎,用户可以很容易的使用 Flink 构建,只需要配置 FLINK_HOME,然后在创建 Cube 时选择 Build Engine 为 Flink,就可以体验这一功能。Flink 基于 Google 的  DataFlow 模型以及 Streaming First 的设计理念要比  Spark 在流处理领域拥有先天的优势。

Flink Cube 引擎基于 Kylin 原先的插件化的架构,是一个相对独立的模块,继承 IBatchCubingEngine 接口实现了 FlinkBatchCubingEngine2,跟 Kylin 其他部件没有产生太多的耦合。它整体上延续了 Spark Engine 的设计与实现,但由于 Spark 跟 Flink 的 DataSet API 存在着一定程度的差异,所以开发过程中需要进行一些适配工作。

Flink Engine 开发完成后,我们对它进行了测试。测试环境为 CDH5 集群,包括 4 个物理节点,每个物理节点 32 Core,125G 内存,数据源是基于 SSB 数据集,事实表包含 6 千万记录,通过分析 “Build Cube With Spark”/”Build Cube With Flink” 步骤的日志发现,使用  Spark 构建使用了 15.36 分钟,使用 Flink 构建使用了 12.64 分钟,Flink Engine 构建用时减少了 17.7%。

Flink Engine 的使用文档可以参考:
http://kylin.apache.org/docs/tutorial/cube_flink.html

初步的 Kylin on Kubernetes 解决方案 [1]

Kylin on Kubernetes 方案由 eBay 实现并贡献到 Kylin 社区(KYLIN-4445)。Kylin 在 eBay 已经运行了 超过 5 年,起初直接运行在物理服务器上。由于 Data Center 的迁移和 Tech Refresh 的需求,eBay 于 2019 年初开始了把 Kylin 迁移到云上的计划,并于上半年把  Kylin  整体迁移到了 eBay 的 Kubernetes 平台 Tess 上,开启了 Kylin on Kubernetes 的时代。

Kylin on Kubernetes 使用 Kubernetes 推荐的 Docker 作为镜像,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。Kylin 的 Docker 镜像分为两个 Dockerfile: Hadoop-client 和 Kylin,Kylin 的 Dockerfile 是基于 Hadoop-client 的。

相对于原来的部署方案,使用 Kylin on Kubernetes 部署能够带来以下收益:

  1. 提高系统可用性,并实现部署的运维过程的自动化;
  2. 扩容(scale up/scale out)更加方便;
  3. 可维护性得到显著提高;
  4. 借助 Kubernetes 带来的高度可移植性,使得在不同环境之间的迁移,变得逻辑简单而且结果可靠;
  5. 系统资源的管理和监控有了简便而且统一的方式,可以进一步提升资源使用率。

Kylin on Kubernetes 部署文档可以参考:
http://kylin.apache.org/cn/docs/install/kylin_on_kubernetes.html

性能提升显著的新版Hive全局字典 [2]

Hive Global Dictionary 的第二版(KYLIN-4342)由滴滴贡献到 Kylin 社区,并在 Kylin v3.1.0 正式发布。在此之前,滴滴已经向 Kylin 社区贡献过 Hive Global Dictionary 第一版。

实际上,Kylin 从 1.5.3 版本开始就支持全局字典功能,对于基数不大(一亿以内)的情况能够起到很好的支持,当时的版本有两个比较明显的缺陷,一是全局字典是在 Job Server 上通过单线程的方式构建,随着数据的增多构建时长变得不可控;另外,随着数据的累积,字典构建对 Job Server 的内存需求也不断增多,其性能基本不能满足我们当时更高基数全局字典构建的需求。

基于这样的背景,滴滴内部对 Hive Global Dictionary 进行了 3 版迭代,最终的这一版就是 Kylin 社区称之为 Hive Global Dictionary V2 的实现,已经能够满足以下要求:

  1. 分布式构建全局字典
  2. 突破基数限制
  3. 提升构建速度
  4. 降低单节点所需内存

在滴滴的内部测试中,使用 Hive Global Dictionary V2,字典编码(MR Job部分)基本可以恒定在 15 分钟内完成,并且可以在不同的 Cube 之间实现字典复用。

Hive Global Dictionary V2的使用文档可以参考:
http://kylin.apache.org/docs/howto/howto_use_hive_mr_dict.html

增强的 Cube 迁移服务 [3]

Kylin v3.1.0 中发布的增强的 Cube 迁移服务由 eBay 贡献给 Kylin 社区。在过去版本中,Cube 迁移前的质量及兼容性验证完全是靠人工校验,出现的质量问题及兼容问题都需要人工沟通和修改。针对上述不足,Kylin v3.1.0 增强了如下功能:

  1. 引入了一系列规则对 Cube 质量及 Hive 元数据兼容性进行后端校验,比如生产环境下的目标项目是否存在,生产环境下的 Hive 表是否与测试环境下的一致,Cube 膨胀率和查询效率是否符合预期值(可通过配置项设置合理的值)等;
  2. 通过邮件形式来发送 Cube 迁移申请给管理员,由管理员审核后进行迁移,同时将迁移结果以邮件形式发送给请求者;
  3. 支持通过工具类 CubeMigrationCrossClusterCLI 进行跨  Hadoop 集群的 Cube 迁移。之前的版本中,Cube 迁移的一个前置条件是两个 Kylin 实例必须使用同一个 Hadoop 集群,而本次发布的 Cube 迁移功能则支持跨 Hadoop 集群进行迁移,同时支持迁移 Cube 数据。

Cube 迁移服务的使用文档可以参考:
http://kylin.apache.org/docs/tutorial/cube_migration.html

特别感谢

在文末特别对贡献这些功能代码到 Kylin 以及参与本文编写的杨华,王小静,李凡凡,allenma,kyotoYaho,mingmwang,sanjulian,俞霄翔,张亚倩,张智超等同学表达一下感谢~

参考链接

[1] https://mp.weixin.qq.com/s/LdyGjXRj8KkrnGgpIdEVjA
[2] https://mp.weixin.qq.com/s/jK-nAOAxaI0k3_Yrt_KlLA
[3] http://kylin.apache.org/cn/docs/tutorial/cube_migration.html


*如果想第一时间获得 Kylin 的资讯和活动信息,请添加 K 小助 (微信号:uncertainly5)并备注您的 “所在城市-公司-岗位-昵称”。

了解更多大数据资讯,点击进入 Kyligence 官网

Apache Kylin v3.1.0 重点功能推介的更多相关文章

  1. Apache Kylin v3.0.0-alpha 发布

    Apache Kylin v3.0.0-alpha 发布 Apr 19, 2019 • Shaofeng Shi 近日 Apache Kylin 社区很高兴地宣布,Apache Kylin v3.0. ...

  2. 【转】Apache Kylin 2.0为大数据带来交互式的BI

    本文转载自:[技术帖]Apache Kylin 2.0为大数据带来交互式的BI 编者注:Kyligence的联合创始人兼CEO Luke Han在上做题为“”的演讲. 基于Hadoop的SQL一直在被 ...

  3. 浅淡 Apache Kylin 与 ClickHouse 的对比

    作者简介 周耀,Kyligence 解决方案架构师,Apache Kylin.Apache Superset Contributor. Apache Kylin 和 ClickHouse 都是目前市场 ...

  4. Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)

    Apache Kylin远程代码执行(CVE-2020-1956) 简介 Apache Kylin 是美国 Apache 软件基金会的一款开源的分布式分析型数据仓库.该产品主要提供 Hadoop/Sp ...

  5. 【大数据安全】Apache Kylin 安全配置(Kerberos)

    1. 概述 本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin. Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spa ...

  6. Apache Kylin大数据分析平台的演进

    转:http://mt.sohu.com/20160628/n456602429.shtml 我是来自Kyligence的李扬,是上海Kyligence的联合创始人兼CTO.今天我主要来和大家分享一下 ...

  7. Apache Flink 1.9.0版本新功能介绍

    摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...

  8. Apache kylin 入门

    本篇文章就概念.工作机制.数据备份.优势与不足4个方面详细介绍了Apache Kylin. Apache Kylin 简介 1. Apache kylin 是一个开源的海量数据分布式预处理引擎.它通过 ...

  9. Apache Kylin在4399大数据平台的应用

    来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...

随机推荐

  1. os模块查看系统数据

    >>> import os >>> os.name # 操作系统类型 'posix' 如果是posix,说明系统是Linux.Unix或Mac OS X,如果是nt ...

  2. Ubuntu U盘启动出现“Failed to load ldlinux.c32”解决

    最后用ultraISO软碟通,刻录映像时写入方式选择”RAW”,成功解决!!!

  3. Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?

    在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途. 这些语言的使 ...

  4. Git执行"git rebase -i HEAD~xxx"报错:git rebase fatal: Needed a single revision invalid upstream –i

    一.问题"git rebase -i HEAD~xxx"是修改git 历史记录的一个很有用的命令. 但是有时在执行该命令时会出现以下错误:$ git rebase –i HEAD~ ...

  5. 动态追踪技术之SystemTap

    SystemTap SystemTap是一个深入检查Linux系统活动的工具,使用该工具编写一些简单的代码就可以轻松的提取应用或内核的运行数据,以诊断复杂的性能或者功能问题.有了它,开发者不再需要重编 ...

  6. python基础扩展(二)

    python基础扩展(二) 常用操作 1.startswith(以什么开始) endswith(y)什么结束 s='taiWanw39dd' print(s.startswith('t')) #意思是 ...

  7. 前端基础:深入浅出 TCP/IP 协议栈

    一个主机的数据要经过哪些过程才能发送到对方的主机上 参考:https://www.cnblogs.com/onepixel/p/7092302.html 首先我们梳理一下每层模型的职责: 链路层:对0 ...

  8. Shader专题:卡通着色(一)控制颜色的艺术

    什么是 Shader? 关于什么是 Shader ,各种百科各种教程都有说过,但是今天我们就从一个另一个角度去试着理解什么是 Shader? 我们先看下 Shade 的英文意思,如下: v.给...遮 ...

  9. java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  10. 搭建nginx服务器nginx-1.6.2.tar.gz

    2016-06-17 09:06:52   一.实验环境 CentOS6.5 软件:nginx-1.6.2.tar.gz 二.实验步骤 1)安装nginx所依赖的软件 yum -y install p ...