开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Apache Kylin 发布新版流处理引擎

  • 2016-11-13
  • 本文字数:2027 字

    阅读完需:约 7 分钟

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 等)对数据进行并行计算 。图 1 是高层次的架构图。

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

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

上图中有三个 segment,它们的 offset 依次连续且无重叠(左包右闭),Seg[100-400] 中的消息时间跨度是 1:04 – 1:11,Seg[400 - 2000] 的时间跨度是 1:08 – 1:40;当用户要查询 1:10 的统计信息时,Kylin 发现这两个 Segment 都可能有这个时间的消息,故而会扫描这两个 Segment 然后再次做汇总计算。

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

  • 允许同时构建 / 合并多个 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。

作者介绍:

史少锋,Kyligence 技术合伙人& 资深架构师 Apache Kylin 核心开发者和项目管理委员会成员(PMC),专注于大数据分析和云计算技术。曾任eBay 全球分析基础架构部大数据高级工程师,IBM 云计算部门软件架构师;曾是IBM 公有云Bluemix dev&ops 团队核心成员,负责平台的规划、开发和运营。


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

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-13 18:003754

评论

发布
暂无评论
发现更多内容

SD-WAN组网部署需要多久?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

感谢 Fluent Editor 开源富文本首位贡献者!

OpenTiny社区

富文本 OpenTiny 开源前端

如何通过关键词搜索API接口,淘宝商品关键词搜索电商API接口揭秘

联讯数据

独享代理IP有哪些优势?

IPIDEA全球HTTP

AirBuddy 3 for mac AirPods耳机管理软件

理理

Airbuddy AirPods耳机管理工具

AI引领,驱动未来:零售企业的新质生产力革命

第七在线

智谱开源 CogVideoX-5B 视频生成模型,RTX 3060 显卡可运行;曝 OpenAI 模型「草莓」今秋推出

声网

用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略

阿里巴巴云原生

阿里云 云原生 Higress

GO语言编程工具环境 JetBrains GoLand 2020中文无限试用版

理理

GoLand 2022破解版 GoLand 2022中文版 GO语言编程

阿里巴巴中国站1688商品详情API返回值解析:应对更新与变化的策略

代码忍者

API 测试 API 策略

MES系统的八大核心功能及车间落地实现

万界星空科技

制造业 生产管理系统 mes 万界星空科技 车间管理系统

人工智能 | 清华大学ChatGLM大模型

测试人

人工智能

量化合约系统开发程序技术(源码搭建)合约量化开发逻辑方案

V\TG【ch3nguang】

OgPhone海外云手机是什么

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 海外社媒运营

高效整理,创造灵活工作空间——iCollections for Mac 🚀🌟

柠檬与橘子

重庆企业选择堡垒机需要考虑哪些因素?有没有推荐的?

行云管家

堡垒机 IT资产 重庆

推荐一款开源一站式SQL审核查询平台!功能强大、安全可靠!

EquatorCoco

sql 开源 开源数据库

DTCC2024|HashData Enterprise 4.0 正式发布:构建云原生统一数据处理平台

酷克数据HashData

轻松管理文件:2024年顶尖局域网文档管理工具

爱吃小舅的鱼

文档管理 局域网

Flink CDC 在新能源制造业的实践

Apache Flink

大数据 flink 实时计算 Flink CDC

最新ps2024软件:Photoshop 2024 (Win&Mac)直装版

你的猪会飞吗

mac软件下载 ps2024 PS2024破解

影子测试:软件测试的创新策略

FunTester

Amazon Bedrock 实践:零基础创建贪吃蛇游戏

亚马逊云科技 (Amazon Web Services)

生成式人工智能

MacCleaner Pro for Mac(系统综合清理软件) v3.2.5永久激活版

理理

2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量。 按照以下规则进行n次

福大大架构师每日一题

福大大架构师每日一题

关于告警,要想做好,从这些方面着手

巴辉特

告警降噪 oncall 告警聚合 告警排班 PagerDuty

案例研究:如何在复杂环境中增强自组织

ShineScrum

自组织

全系列ai插件合集 Astute Graphics for Mac v3.0.4永久激活版

理理

BSC发力DEX交易量超过Solana,MEME赛道王者易主?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

高效地窗口布局管理工具:Magnet for mac

理理

窗口管理工具 magnet pro 破解版 Magnet Pro中文版

Apache Kylin发布新版流处理引擎_语言 & 开发_史少锋_InfoQ精选文章