2017年8月28日,Kafka的作者Neha Narkhede在Confluent上发表了名为《Introducing KSQL: Open Source Streaming SQL for Apache Kafka》的博文,介绍了Kafka新引入的KSQL引擎——一个基于kafka数据的流处理SQL。KSQL降低了流式处理的门槛,为处理Kafka数据提供简单而完整的可交互式SQL接口。ksql是开源的(Apache 2许可)、分布式、可扩展的、可靠的、实时的;目前可以支持多种流式操作,包括聚合、连接、时间窗口、会话等等,相信随着时间的推移,会支持更多操作。在博文中,作者用了兴奋一词,对于不擅编程的我来说,同样兴奋不已。直接引用网络一篇博文内容的翻译,《重磅开源KSQL:用于Apache Kafka的流数据SQL引擎》(注:若有侵权,请作者联系删除),博文的核心是向大家解释了KSQL的适用场景,核心对象,以及与传统数据库对比的最大区别。
1
KSQL的适用场景
实时监控
安全检测
在线数据集成
应用开发
2
KSQL的核心抽象
流(Stream):流是没有边界的结构化数据,数据可以被源源不断地添加到流当中,但流中已有的数据是不会发生变化的,即不会被修改也不会被删除。
表(Table):表就是流的视图,或者说它代表了可变数据的集合。它与传统的数据库表类似,只不过具备了一些流式语义,比如时间窗口,而且表中的数据是可变的。KSQL将流和表集成在一起,允许将代表当前状态的表与代表当前发生事件的流连接在一起。
3
Kafka+KSQL要颠覆传统数据库
传统关系型数据库以表为核心,日志只不过是实现手段。而在以事件为中心的世界里,情况却恰好相反。日志成为了核心,而表几乎是以日志为基础,新的事件不断被添加到日志里,表的状态也因此发生变化。将Kafka作为中心日志,配置KSQL这个引擎,这样无论是公司中的各种数据库、搜索索引,还是其他数据服务系统,以往我们需要的丰富数据和ETL都可以通过创建物化视图来实现,而且视图也会持续不断地得到更新。诸如监视、安全、异常和威胁检测、分析和对故障的响应等应用场景都可以在实时的情况下进行,而不会有延迟。这一切都是可以基于Kafka数据通过KSQL来实现。
LinkedIn在2010年左右随着Kafka的兴起,有了建设以Kafka为中心的流式数据中心的构想,Kafka作为全局数据管道,每个系统都向这个中心管道发送或者获取数据,下图是“流数据平台”架构图。相信随着KSQL的正式推出,会有更多的基于Kafka的流式数据中心的架构在实践中应用,建设和使用成本也会大大降低。随着大家对数据实时性的要求越来越高,流数据中心架构会逐步替代以往以ETL过程为核心的离线数据中心架构。
安装过程按照quick-start上的步骤即可,主要在编译源码过程中遇到的几个问题:
1、源码编译过程首先遇到无法找到tools.jar,原因是centos7自带的JDK和jre安装在同一个目录,被替换掉了,建议卸载自带的jdk,重新安装
2、遇到下载一些maven仓库jar包被拒或者超时的问题,建议多试几次。
3、建议对几个项目分开进行编译,但之间有依赖关系,按照如下顺序进行。
编译源码成功!
点击流分析的demo暂未体验。
总结:KSQL的推出对与我来说同样是兴奋的。首先,降低开发人员与数据人员之间的耦合性,当前很多大数据处理技术都是基于编码来对数据进行加工和处理,使不同技术偏好的人员更专注于处理业务;其次,流数据中心的流行会更进一步,KSQL降低了准入成本。
领取专属 10元无门槛券
私享最新 技术干货