KSQL,用于Apache Kafka的流数据SQL引擎

Apache Kafka是一个分布式的、分区的、多复本的日志提交服务,使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。Kafka最初是由LinkedIn开发,并于2011年初开源,目标是为实时数据处理提供一个统一、高通量、低等待的平台。目前,越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。

Kafka拓扑结构

Kafka的设计可以帮助用户解决很多架构上的问题,其具备的高性能、低耦合、高可靠性、数据不丢失等特性,结合实际的应用系统使用场景,能够非常满足用户的需求。

8月28日,Kafka Summit大会在旧金山召开,同一天Confluent宣布Kafka新的里程碑:KSQL——用于Apache Kafka的流数据SQL引擎。KSQL(点击查看demo)是分布式、可扩展、可靠的和实时的,支持多种流式操作,包括聚合(aggregate)、连接(join)、时间窗口(window)、会话(session)等等。它为Kafka的流处理提供了一个简单而完整的SQL界面,而不需要再用编程语言(如Java或Python)编写代码。

KSQL的两个核心概念是流(Stream)和表(Table),集成流和表,允许将代表当前状态的表与代表当前发生事件的流连接在一起。

KSQL项目架构

事实上,KSQL与关系型数据库中的SQL还是有很大不同的。传统的SQL都是即时的一次性操作,不管是查询还是更新都是在当前的数据集上进行。KSQL的查询和更新是持续进行的,而且数据集可以源源不断地增加。简言之,KSQL所做的其实是转换操作,也就是流式处理。

虽然项目基于Apache 2.0协议开源,但目前还处于开发者预览阶段,不建议用于生产集群中。在可预料的条件下,KSQL在实时监控、安全检测、在线数据集成、应用开发等场景拥有极大的潜力。

实时监控:通过KSQL自定义业务层面的度量指标,可以实时获得。底层的度量指标无法告诉用户应用程序的实际行为,所以基于应用程序生成的原始事件来自定义度量指标可以更好地了解应用程序的运行状况。另外,可以通过KSQL为应用程序定义某种标准,用于检查应用程序在生产环境中的行为是否达到预期;

安全检测:KSQL把事件流转换成包含数值的时间序列数据,通过可视化工具把这些数据展示在UI上,可以检测到很多威胁安全的行为,比如欺诈、入侵等等;

在线数据集成:大部分的数据处理都会经历ETL过程,而这样的系统通常都是通过定时的批次作业来完成数据处理的,但批次作业所带来的延时在很多时候是无法被接受的。通过使用KSQL和Kafka连接器,可以将批次数据集成转变成在线数据集成;

应用开发:对于复杂应用来说,使用Kafka的原生Streams API或许更合适。不过对于简单应用,或者对于不喜欢Java编程的人来说,KSQL会是更好的选择。

未来,项目计划增加更多的特性,包括支持更丰富的SQL语法,让KSQL成为生产就绪的系统。相信KSQL为处理Kafka数据而提供的简单完整的可交互式SQL接口,能够降低流式处理的门槛。 

本文作者:佚名

来源:51CTO

时间: 2024-09-20 01:03:10

KSQL,用于Apache Kafka的流数据SQL引擎的相关文章

主流大数据SQL引擎技术博弈,谁为王?

文章讲的是主流大数据SQL引擎技术博弈,谁为王,近日,AtScale公布了第四季度主流大数据SQL引擎的测试结果,主要针对Spark.Impala.Hive/Tez以及Presto. 测试结果证实了我们早已实践出的一些事情:Impala是中等大小数据库查询的最佳选择,并且已经积累了不少用户,Presto在这方面也做得不错.Hive和Spark更适用于长时间分析查询. AtScale产品管理方面副总Joshua Klar表示,许多公司客户使用两个引擎.通常他们认为Hive更稳定,并且更习惯于使用H

【译】使用Apache Kafka构建流式数据平台(1)

前言:前段时间接触过一个流式计算的任务,使用了阿里巴巴集团的JStorm,发现这个领域值得探索,就发现了这篇文章--Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform(Part 1).在读的过程中半总结半翻译,形成本文,跟大家分享. 最近你可能听说很多技术名词,例如"流式处理"."事件数据"以及"实时"等,与之相关的技术有Kafka.S

Apache Kafka:大数据的实时处理时代

在过去几年,对于 Apache Kafka 的使用范畴已经远不仅是分布式的消息系统:我们可以将每一次用户点击,每一个数据库更改,每一条日志的生成,都转化成实时的结构化数据流,更早的存储和分析它们,并从中获得价值.同时,越来越多的企业应用也开始从批处理数据平台向实时的流数据数据平台转移.本演讲将介绍最近 Apache Kafka 添加的一些系统架构,包括 Kafka Connect 和 Kafka Streams,并且描述一些如何使用它们的实际应用体验. 注:本文由王国璋在 QCon 北京 201

Neha Narkhede: 借助Apache Kafka实现大规模流处理

在QCon纽约2016大会上,Neha Narkhede在演讲"借助Apache Kafka实现大规模流处理"中介绍了Kafka Streams,这是Kafka用于处理流式数据的新特性.据Narkhede介绍,因为"无界(unbounded)"数据集随处可见,所以流处理越来越流行.那不再是一个像机器学习那样的小众问题. Narkhede首先介绍了数据操作的基本编程范式: 请求/响应周期 批处理 流处理然后,Narkhede提供了一个来自零售领域的流处理实例:销售和发

实用 | 从Apache Kafka到Apache Spark安全读取数据

引言 随着在CDH平台上物联网(IoT)使用案例的不断增加,针对这些工作负载的安全性显得至关重要.本篇博文对如何以安全的方式在Spark中使用来自Kafka的数据,以及针对物联网(IoT)使用案例的两个关键组件进行了说明. Cloudera Distribution of Apache Kafka 2.0.0版本(基于Apache Kafka 0.9.0)引入了一种新型的Kafka消费者API,可以允许消费者从安全的Kafka集群中读取数据.这样可以允许管理员锁定其Kafka集群,并要求客户通过

Apache Kafka是分布式发布-订阅消息系统

转自: http://www.infoq.com/cn/articles/apache-kafka?utm_source=infoq&utm_medium=popular_links_homepage 简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交日志服务. Apache Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易

什么时候该用RabbitMQ ,什么时候该用 Apache Kafka

人类如何做出决策? 在日常生活中,情感总是短路因素,导致在复杂或压倒性的决定上扣动扳机.但对于做有长期影响,复杂决策,的表意识,不可能是纯粹的冲动.高性能的人通常使用断路器,"本能," "直觉," 或其他的情绪,只有一次他们的表意识,潜意识吸收了作出决定所需的所有事实. 今天有很多的消息传递技术, 数不清的 ESBs, 和近100 iPaaS供应商在市场上. 自然,这导致了有关如何为您的需要-特别是那些已经投资在一个特定的选择,选择正确的消息传递技术的问题 .我们批

Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN

前两年一直在使用Kafka, 虽说Kafka一直说可用于online分析, 但是实际在使用的时候会发现问题很多, 比如deploy, 调度, failover等, 我们也做了一些相应的工作  Samza算是把这个补全了, 可以更加简单的在Kafka上进行online分析, 所以看着比较亲切   1 Background 首先对messaging系统和stream processing系统的阐述, 很清晰  messaging系统, 数据的传递, 是比较low-level infrastructu

弹性集成Apache Mesos与Apache Kafka框架

本文讲的是弹性集成Apache Mesos与Apache Kafka框架,[编者的话]本文由Mesosphere公司的Derrick Harries和Kafka项目代码提交者Joe Stein合作撰写,介绍了如何将Mesos与Kafka集成以简化海量流数据的管理和配置工作. Kafka和Mesos是非常知名和成功的Apache项目,它们每个都获得了大型社区的支持,还有Confluent和Mesosphere这样的公司各自围着它们构筑生态系统.最近,两家公司合作使Kafka成为Mesosphere