Apache Kylin发布新版流处理引擎

Apache Kylin在 1.5.0 推出了从流数据进行准实时(Near Real Time)处理功能,可以直接从Apache Kafka的主题(Topic)中消费数据来构建Cube。Apache Kylin 1.5.0的流处理是一次实验性的探索,它打破了以往只能从Apache Hive表构建Cube的局限,将数据从产生到可查询的延迟从小时级降低到了分钟级,满足了一些对实时性要求比较高的场景;但它在实现上存在一些局限︰

不可扩展︰ 由于是利用单个 Java 进程(而不是利用某种计算框架)对数据做处理,当遇到流数据高峰时,可能由于资源不足而导致构建失败;可能会丢失数据︰ 由于使用一个起始时间+结束时间在Kafka队列中使用二分查找近似地寻找消息的偏移量(offset),过早或过晚到达的消息将会被遗漏,从而使得查询结果有误差 ; 难以监控︰ 用于构建的任务是单独通过shell脚本执行的,而不是像其它Cube那样由任务引擎统一调度和执行,所以这些任务是在Web界面和REST API上都无法查询到的,使得用户无法方便地使用工具进行监控和管理;其它︰ 必须持续执行,如果有系统宕机将会造成某些时间窗口的任务没有被执行,从而必须依靠管理员手动恢复;如果宕机时间较长,管理员不得不将长时间窗口切成多个小时间窗口依次来恢复,非常繁琐 。
为了克服这些限制,Apache Kylin团队基于Kafka 0.10的API,开发了新版的准实时流式处理,它已经在内部测试了一些时间,目前正在公开测试中。

新版流式构建是在Kylin v1.5的"可插拔 "架构下的一个完美实现︰ 将Kafka主题视为一种数据源,实现相应的适配器,将数据先抽取、转换和保存到 HDFS,接下来使用各种Kylin的构建引擎(MR/Spark等)对数据进行并行计算 。

Kylin的Kafka适配器参考了kafka-hadoop-loader的思路和部分代码, 将Kafka主题抽象成Hadoop输入文件格式(InputFileFormat),为主题的每个分区(partition)分配一个Mapper消费数据; 之后Kylin将利用现有框架进行并行处理,从而使得方案变得可扩展且具有容错性。

要解决"数据丢失"问题,Kylin将开始/结束消息的偏移量(offset)计入了每个Cube segment,并使用偏移量作为分区值 ,offset是顺序递增的且不能有重叠和遗漏(如果主题有多个分区,使用各分区偏移量之和作分区值);这将确保没有数据丢失,一个消息只会被消费一次。晚到达的消息会被稍后的segment统计进来;每个Segment 有"最早时间”和"最晚时间"; 当用户按时间条件查询时,Kylin将扫描与查询时间范围相匹配的所有段。图 2解释了这个设计。

新版流计算引擎也进行其它一些更改和增强︰

允许同时构建/合并多个segment,前后的构建任务都是独立的自动从前一个segment或从Kafka寻找消息的开始及结束的offset 支持嵌入格式(结构化)的JSON消息 增加了触发流式构建的REST API 增加了来检查和部分填补segment空洞的REST API
内部的集成测试结果初步验证了当初的目标 ︰

可伸缩︰ 它能够在一次构建中轻松处理上亿条消息;灵活︰ 可以在任何时候,以你期望的频率触发构建,例如︰ 在白天每隔 5 分钟触发一次, 在夜间将频率降低到每个小时,在需要做的维护可以随时暂停; 由于是Kylin管理所有主题的offset,再恢复时它可以自动从上一次的结束位置继续;稳定︰ 稳定性大大提高,在上一版中经常发生的OutOfMemory错误再没有出现过; 易于管理︰ 用户可通过Kylin的"Monitor"页面或 REST API检查所有构建任务的状态; 构建性能︰相比于前一版构建时间略长(因为有Hadoop任务的调度),但延迟依然在可接受的分钟级别。
在一个小规模的测试群集 (8台 AWS实例,消费 Twitter Sample 消息流) 中,创建一个有9个 维度和3个度量的Cube,每秒约一万条消息,当构建间隔是 2 分钟的时候,平均每次构建需 3 分钟; 当构建间隔是 5 分钟的时候,平均每次构建需要 4 分钟; 这里是几个测试中的截图 ︰

总结,这是比前一版本相比更加健壮和完善的流数据OLAP 解决方案。现在你可以从Apache Kylin的下载页面下载到 1.6.0-SNAPSHOT 的二进制包,然后按照此教程生成第一个流式Cube。
作者介绍:

史少锋,Apache Kylin PMC 成员,核心开发人员之一,eBay高级软件工程师,2014年加入eBay Kylin 团队并转向大数据分析领域,参与了Kylin一系列优化和新功能的开发,并致力为Kylin社区用户提供支持和帮助。史少峰硕士毕业于上海交通大学计算机系,在IBM从事多年软件全球化和云计算等方面的设计和开发。

感谢杜小芳对本文的审校。

本文转自d1net(转载)

时间: 2024-10-22 00:16:02

Apache Kylin发布新版流处理引擎的相关文章

Apache Kylin:基于Hadoop的OLAP引擎

传统上,Hadoop(包括MapReduce,Pig以及Hive)通常用于外部私有OLAP Cube引擎准备数据.如今,Zaloni的客户基于Apache Kylin的OLAP技术实现了实时查询的能力,这些Cube的事实表包含了400亿条以上的原始数据.我们正在帮助客户统一归集来自于多个独立系统的账单数据,并构建OLAP Cube以支持实时分析,这是以前系统所无法实现的.现在,Hadoop集群都可以做到了. 基于Hadoop的分析演化 Hadoop已经从通用计算能力(MapReduce)的分布式

Apache Kylin权威指南导读

前 言 "麒麟出没,必有祥瑞." --中国古谚语 "于我而言,与Apache Kylin团队一起合作使Kylin通过孵化成为顶级项目是非常激动人心的,诚然,Kylin在技术方面非常振奋人心,但同样令人兴奋的是Kylin代表了亚洲国家,特别是中国,在开源社区中越来越高的参与度." --Ted Dunning Apache孵化项目副总裁,MapR首席应用架构师 今天,随着移动互联网.物联网.AI等技术的快速兴起,数据成为了所有这些技术背后最重要,也是最有价值的"

Yahoo的流计算引擎基准测试

原文链接  译者:andy huang  Yahoo的流计算引擎对比测试 (雅虎Storm团队排名不分先后) Sanket Chintapalli, Derek Dagit, Bobby Evans, Reza Farivar, Tom Graves, Mark Holderbaugh, Zhuo Liu, Kyle Nusbaum, Kishorkumar Patil, Boyang Jerry Peng and Paul Poulosky. 免责声明:2015年12月17日的数据,数据团队已

Apache 基金会宣布 Apache Kylin 成为顶级项目

Apache Kylin 是可扩展到PB规模的开源分布式大数据分析引擎,已被应用在eBay,Exponential, 京东,美团,明略数据,网易及其他公司. 马里兰州 Forest Hill - 2015年12月8日 -由超过350个开源项目及创新计划,全部由开发志愿者,治理志愿者及孵化志愿者组成的 Apache软件基金会(ASF),今天宣布Apache Kylin已经从Apache孵化器项目毕业,正式升级成为顶级项目(TLP),这标志着该项目的社区和产品依照ASF精英管理的流程和原则顺利运作.

Apache Kylin权威指南2.6 SQL参考

2.6 SQL参考 Apache Kylin支持标准SQL作为查询语言,但是SQL有很多变体,Kylin支持的只是SQL所有变体中的一个子集,并不是支持所有现存的SQL语句和语法.用户在使用Kylin之前,需要对Kylin所支持的SQL有一个了解,以避免走弯路. 首先,Kylin作为OLAP引擎,只支持查询,而不支持其他操作,如插入.更新等,即所有的SQL都必须是SELECT语句,否则Kylin会报错. 第二,查询Kylin中SQL语句的表名.列名.度量.连接关系时,需要至少跟一个Cube的模型

Apache Kylin 首批入驻微软 Azure 镜像市场

微软和世纪互联宣布在中国推出认知服务和 Azure 镜像市场,为中国Azure客户和软件开发商搭建起了一站式门户,方便中国Azure客户直接搜索.选择.部署使用,从而满足客户在云端的多样化业务需求. 作为领先的智能大数据分析技术公司,Kyligence此次受邀在该镜像市场上发布了Apache Kylin的企业级产品:Kyligence Analytics Platform(简称KAP),值得关注的是Kyligence是首批入驻的大数据公司之一.作为Azure镜像市场的首批合作伙伴,面向中国Azu

Apache Kylin权威指南1.4 Apache Kylin的技术架构

1.4 Apache Kylin的技术架构 Apache Kylin系统可以分为在线查询和离线构建两部分,技术架构如图1-4所示,在线查询的模块主要处于上半区,而离线构建则处于下半区.   图1-4 Kylin的技术架构 我们首先来看看离线构建的部分.从图1-4可以看出,数据源在左侧,目前主要是Hadoop Hive,保存着待分析的用户数据.根据元数据的定义,下方构建引擎从数据源抽取数据,并构建Cube.数据以关系表的形式输入,且必须符合星形模型(Star Schema)(更复杂的雪花模型在成文

Apache Kylin权威指南1.6 与其他开源产品比较

1.6 与其他开源产品比较 与Apache Kylin一样致力于解决大数据查询问题的其他开源产品也有不少,比如Apache Drill.Apache Impala.Druid.Hive.Presto(Facebook).SparkSQL等.本节试图将Kylin与它们做一个简单的比较. 从底层技术的角度来看,这些开源产品有很大的共性,一些底层技术几乎被所有的产品一致采用,Kylin也不例外. 大规模并行处理:可以通过增加机器的方式来扩容处理速度,在相同的时间里处理更多的数据. 列式存储:通过按列存

Apache Kylin权威指南3.5 小结

3.5 小结 增量构建是使用Apache Kylin的关键步骤.因为对于大多数使用场景,数据都是日积月累逐渐增长的.如何合理地安排增量构建,保证用户在Cube中可以及时查询到最新的数据,是Apache Kylin运行维护的日常.第4章将延续本章的内容,继续探讨流式构建,将Apache Kylin的数据延迟缩短到分钟级别.