【大数据】KSQL初体验

浏览: 3199

     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的适用场景,核心对象,以及与传统数据库对比的最大区别。

KSQL的适用场景:

  • 实时监控
  • 安全检测
  • 在线数据集成
  • 应用开发

KSQL的核心抽象:

     流(Stream) 流是没有边界的结构化数据,数据可以被源源不断地添加到流当中,但流中已有的数据是不会发生变化的,即不会被修改也不会被删除。

     表(Table) 表就是流的视图,或者说它代表了可变数据的集合。它与传统的数据库表类似,只不过具备了一些流式语义,比如时间窗口,而且表中的数据是可变的。KSQL将流和表集成在一起,允许将代表当前状态的表与代表当前发生事件的流连接在一起。

Kafka+KSQL要颠覆传统数据库:

     Image1.png

     传统关系型数据库以表为核心,日志只不过是实现手段。而在以事件为中心的世界里,情况却恰好相反。日志成为了核心,而表几乎是以日志为基础,新的事件不断被添加到日志里,表的状态也因此发生变化。将Kafka作为中心日志,配置KSQL这个引擎,这样无论是公司中的各种数据库、搜索索引,还是其他数据服务系统 ,以往我们需要的丰富数据和ETL都可以通过创建物化视图来实现,而且视图也会持续不断地得到更新。诸如监视、安全、异常和威胁检测、分析和对故障的响应等应用场景都可以在实时的情况下进行,而不会有延迟。这一切都是可以基于Kafka数据通过KSQL来实现

     LinkedIn在2010年左右随着Kafka的兴起,有了建设以Kafka为中心的流式数据中心的构想,Kafka作为全局数据管道,每个系统都向这个中心管道发送或者获取数据,下图是“流数据平台”架构图。相信随着KSQL的正式推出,会有更多的基于Kafka的流式数据中心的架构在实践中应用,建设和使用成本也会大大降低。随着大家对数据实时性的要求越来越高,流数据中心架构会逐步替代以往以ETL过程为核心的离线数据中心架构。

Image2.png

     安装过程按照quick-start上的步骤即可,主要在编译源码过程中遇到的几个问题:

1、源码编译过程首先遇到无法找到tools.jar,原因是centos7自带的JDK和jre安装在同一个目录,被替换掉了,建议卸载自带的jdk,重新安装

2、遇到下载一些maven仓库jar包被拒或者超时的问题,建议多试几次。

3、建议对几个项目分开进行编译,但之间有依赖关系,按照如下顺序进行。

编译源码成功!

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] ksql-parent ........................................ SUCCESS [  8.540 s]
[INFO] ksql-core .......................................... SUCCESS [ 39.683 s]
[INFO] ksql-rest-app ...................................... SUCCESS [ 26.033 s]
[INFO] ksql-cli ........................................... SUCCESS [ 18.749 s]
[INFO] ksql-examples ...................................... SUCCESS [ 16.924 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:51 min
[INFO] Finished at: 2017-09-13T09:31:26+08:00
[INFO] Final Memory: 164M/442M
[INFO] ------------------------------------------------------------------------
[root@bogon ksql]# ./bin/ksql-cli local
                       ======================================
                       =      _  __ _____  ____  _          =
                       =     | |/ // ____|/ __ \| |         =
                       =     | ' /| (___ | |  | | |         =
                       =     |  <  \___ \| |  | | |         =
                       =     | . \ ____) | |__| | |____     =
                       =     |_|\_\_____/ \___\_\______|    =
                       =                                    =
                       =   Streaming SQL Engine for Kafka   =
Copyright 2017 Confluent Inc.
CLI v0.1, Server v0.1 located at http://localhost:9098
Having trouble? Type 'help' (case-insensitive) for a rundown of how things work!
ksql> SHOW QUERIES;
 Query ID | Kafka Topic       | Query String
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1        | PAGEVIEWS_FEMALE  | CREATE STREAM pageviews_female AS SELECT users_original.userid AS userid, pageid, regionid, gender FROM pageviews_original LEFT JOIN users_original ON pageviews_original.userid = users_original.userid WHERE gender = 'FEMALE';
 2        | PAGEVIEWS_REGIONS | CREATE TABLE pageviews_regions AS SELECT gender, regionid , COUNT(*) AS numusers FROM pageviews_female WINDOW TUMBLING (size 30 second) GROUP BY gender, regionid HAVING COUNT(*) > 1;

点击流分析的demo暂未体验。

总结:KSQL的推出对与我来说同样是兴奋的。首先,降低开发人员与数据人员之间的耦合性,当前很多大数据处理技术都是基于编码来对数据进行加工和处理,使不同技术偏好的人员更专注于处理业务;其次,流数据中心的流行会更进一步,KSQL降低了准入成本。

推荐 3
本文由 w卫东 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

4 个评论

KSQL,好像看起来可以呀。
不错,小伙子继续加油
KSQL启动成功那部分文字怎么显示成彩色的?
这个不影响

要回复文章请先登录注册