Apache Kylin v3.1.0 重点功能推介
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 部署能够带来以下收益:
- 提高系统可用性,并实现部署的运维过程的自动化;
- 扩容(scale up/scale out)更加方便;
- 可维护性得到显著提高;
- 借助 Kubernetes 带来的高度可移植性,使得在不同环境之间的迁移,变得逻辑简单而且结果可靠;
- 系统资源的管理和监控有了简便而且统一的方式,可以进一步提升资源使用率。
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 的实现,已经能够满足以下要求:
- 分布式构建全局字典
- 突破基数限制
- 提升构建速度
- 降低单节点所需内存
在滴滴的内部测试中,使用 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 增强了如下功能:
- 引入了一系列规则对 Cube 质量及 Hive 元数据兼容性进行后端校验,比如生产环境下的目标项目是否存在,生产环境下的 Hive 表是否与测试环境下的一致,Cube 膨胀率和查询效率是否符合预期值(可通过配置项设置合理的值)等;
- 通过邮件形式来发送 Cube 迁移申请给管理员,由管理员审核后进行迁移,同时将迁移结果以邮件形式发送给请求者;
- 支持通过工具类 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)并备注您的 “所在城市-公司-岗位-昵称”。
Apache Kylin v3.1.0 重点功能推介的更多相关文章
- Apache Kylin v3.0.0-alpha 发布
Apache Kylin v3.0.0-alpha 发布 Apr 19, 2019 • Shaofeng Shi 近日 Apache Kylin 社区很高兴地宣布,Apache Kylin v3.0. ...
- 【转】Apache Kylin 2.0为大数据带来交互式的BI
本文转载自:[技术帖]Apache Kylin 2.0为大数据带来交互式的BI 编者注:Kyligence的联合创始人兼CEO Luke Han在上做题为“”的演讲. 基于Hadoop的SQL一直在被 ...
- 浅淡 Apache Kylin 与 ClickHouse 的对比
作者简介 周耀,Kyligence 解决方案架构师,Apache Kylin.Apache Superset Contributor. Apache Kylin 和 ClickHouse 都是目前市场 ...
- Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)
Apache Kylin远程代码执行(CVE-2020-1956) 简介 Apache Kylin 是美国 Apache 软件基金会的一款开源的分布式分析型数据仓库.该产品主要提供 Hadoop/Sp ...
- 【大数据安全】Apache Kylin 安全配置(Kerberos)
1. 概述 本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin. Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spa ...
- Apache Kylin大数据分析平台的演进
转:http://mt.sohu.com/20160628/n456602429.shtml 我是来自Kyligence的李扬,是上海Kyligence的联合创始人兼CTO.今天我主要来和大家分享一下 ...
- Apache Flink 1.9.0版本新功能介绍
摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...
- Apache kylin 入门
本篇文章就概念.工作机制.数据备份.优势与不足4个方面详细介绍了Apache Kylin. Apache Kylin 简介 1. Apache kylin 是一个开源的海量数据分布式预处理引擎.它通过 ...
- Apache Kylin在4399大数据平台的应用
来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...
随机推荐
- pip超时问题解决
阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban ...
- css在 IE8下的兼容性
常用伪类选择器 IE7 IE8 IE9 :hover √ √ √ :focus × √ √ :first-child √ √ √ :last-child × × √ :first-of-type ...
- OO第二单元——兜兜转转之神秘电梯
一.设计策略及程序结构分析 1.第一次作业 第一次作业是需要我们用多线程模拟一个实时电梯系统,功能比较简单正常,但要有捎带功能,我采用的调度策略便是指导书上提供的ALS调度策略,采用消费者-生产者模式 ...
- 07.DRF-序列化
Serializer序列化器 序列化器的作用: 进行数据的校验 对数据对象进行转换 一.定义Serializer 1.1 定义方法 Django REST framework中的Serializer使 ...
- 挖洞入门_显错型SQL注入
简介:在漏洞盒子挖洞已经有一段时间了,虽说还不是大佬,但技术也有所进步,安全行业就是这样,只有自己动手去做,才能将理论的知识变为个人的经验.本篇文章打算分享一下我在挖显错型SQL注入漏洞过程中的一些个 ...
- 寓教于乐!一款游戏让你成为 Vim 高手!
我们都知道,Vim 是 Linux 下一种非常重要的文本编辑器,我们可以用它来看代码.改代码,很多高手直接将 Vim 打造成一款强大的 IDE 用来写代码. 但是,对于新手而言,Vim 相对于其它编辑 ...
- 深入浅出PyTorch(算子篇)
Tensor 自从张量(Tensor)计算这个概念出现后,神经网络的算法就可以看作是一系列的张量计算.所谓的张量,它原本是个数学概念,表示各种向量或者数值之间的关系.PyTorch的张量(torch. ...
- .NET Core请求控制器Action方法正确匹配,但为何404?
前言 有些时候我们会发现方法名称都正确匹配,但就是找不到对应请求接口,所以本文我们来深入了解下何时会出现接口请求404的情况. 匹配控制器Action方法(404) 首先我们创建一个web api应用 ...
- Office2019 相关激活秘钥
零售版 W8W6K-3N7KK-PXB9H-8TD8W-BWTH9 批量板 N9J9Q-Q7MMP-XDDM6-63KKP-76FPM
- NPM 配置文件修改
NPM 配置文件修改 几乎每一门语言都有配套的包管理器,比如 Ruby 有 RubyGems,Go 有 go modules,npm 作为 node 的包管理器,你有想过全局安装的 node 包都放在 ...