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. Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)

    1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...

  2. Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)

    工具介绍 [centos7安装influxDB] Influxdata官网下载路径:https://portal.influxdata.com/downloads/ 1.直接执行以下命令安装 2.安装 ...

  3. OS_页面置换算法:C++实现

    一.实验目的: 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种页面置换算法的基本思想和实现过程,并比较它们的效率. 二.实验内容: 本实 ...

  4. vscode启动vue项目出错,给了管理员权限没用

    今天在安装vue环境测试项目的时候, 发现vscode调用终端异常,语句无法运行,百度上给的解决方法是给管理员权限 给了以后发现没用,怎么试都没用,然后想到了,重启大法,然后问题就完美解决了

  5. VulnHub CengBox2靶机渗透

    ​本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...

  6. SpringBoot--使用Mybatis分页插件

    1.导入分页插件包和jpa包 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...

  7. webstorm 调试 typescript

    { "compilerOptions": { "target": "es5", "outFile": "bin ...

  8. Double值保留两位小数的四种方法

    public class DoubleTest { //保留两位小数第三位如果大于4会进一位(四舍五入) double f = 6.23556; /** *使用精确小数BigDecimal */ pu ...

  9. Python数据结构-树与树的遍历

    树:是一种抽象的数据类型 树的作用:用来模拟树状结构性质的数据集合 树的特点: 每个节点有零个或者多个节点 没有父节点的节点,叫做根节点 每一个根节点有且只有一个父节点 除了根节点外,每个节点可以分成 ...

  10. 转载--gulp入门

    关于gulp的入门文章,先转载了 http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/