怎么用Apache Pulsar SQL查询数据流

发布时间:2021-08-17 14:15:22 作者:chen
来源:亿速云 阅读:113

这篇文章主要介绍“怎么用Apache Pulsar SQL查询数据流”,在日常操作中,相信很多人在怎么用Apache Pulsar SQL查询数据流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Apache Pulsar SQL查询数据流”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!



Apache Pulsar 越来越受欢迎,尤其在成为 Apache 软件基金会的顶级项目后。

用户不仅将 Pulsar 用于发布/订阅消息,还利用其可扩展的存储架构和分层存储的特性来存储数据流。存储数据后,用户需要对存储在 Pulsar 中的数据进行查询。

另外,一些用户希望可以在数据存储到 Pulsar 后立即进行查询,而无需等待直至数据移入数据库等外部系统。

这一需求促成了 Pulsar SQL 的开发。Apache Pulsar 2.2.0 中首次发布 Pulsar SQL 这一新框架,通过 Pulsar SQL,用户可以使用 SQL 接口高效查询存储在 Pulsar 中的数据流。

本文从技术层面介绍 Pulsar SQL 的架构、实现、功能等,以及促成 Pulsar SQL 开发的背景和用例。


背 景 介 绍

Apache Pulsar 最初是作为下一代发布/订阅消息系统而开发的,旨在改善现有消息系统和流系统的不足,与传统的发布/订阅消息系统相比,Apache Pulsar 能够处理更多的用例。

Pulsar 拥有将服务/计算与存储分离的创新型架构,用户因此可以轻松地独立扩展计算或存储资源,添加附加存储资源也更容易。

由于这一架构的优势,用户不仅将 Pulsar 用作一个发布/订阅系统,还将其用作存储新、旧流数据的存储平台。Pulsar 中增加了分层存储后,“流存储”和“事件存储”的实用性也变得越来越重要。

借助分层存储,用户可以通过云存储(例如:Amazon S3、Google Cloud Storage 等)扩展现有 Pulsar 集群,从而以极低的单位成本在云中存储近乎无限量的流数据。

Pulsar 同时具有存储、归档与处理数据流的能力,这使得在单个系统中同时访问实时数据与历史数据成为可能。直到现在,在单个系统中同时访问实时数据与历史数据仍然需要多个系统和工具。

而 Apache Pulsar 支持在一个系统中同时访问这两类数据。Schema registry 的实现为支持 SQL 的查询提供了更加容易的方法。

怎么用Apache Pulsar SQL查询数据流
数据流以结构化的方式在 Pulsar 中被生产,消费和存储  

Pulsar SQL 是基于 Apache Pulsar 建立的查询层,用户可以在 Pulsar SQL 中动态查询存储在 Pulsar 内部的所有新、旧流,用户可以通过查询单个系统中的新数据流和历史数据流来进一步理解 Pulsar SQL。

Pulsar SQL 的另一个重要用例在于它可以在很大程度上简化某些数据管道。传统的 ETL 管道(例如:用于输出数据到数据湖),需要从一组外部系统提取数据,并对数据进行一系列转换,以在加载到目标系统前清除旧格式、添加新格式。

格式转换一般作为独立步骤按顺序进行,任一步骤中出现故障,整个过程都会停止。这种方法有两个致命缺点:


借助 Pulsar SQL,Apache Pulsar 可以实现在同一系统上提取、清除格式、转换格式、查询数据流等操作,从而更好地应对上述问题。  

Pulsar 的存储层可扩展(因为Pulsar 使用 Apache BookKeeper 作为其事件存储层),因此 Pulsar 可以实现在单一系统中对数据的操作,并对所有数据(流数据和历史数据)一视同仁。

Pulsar SQL 利用 Presto 和 Pulsar 独特的架构以高度可扩展的方式进行查询,而无需考虑组成流的 topic 分区的数量。接下来我们将讨论一下 Pulsar SQL 的架构。



架 构

Presto Pulsar connector   是 Pular 和 Presto 的集成,该 connector 在 Presto 集群中的 Presto worker 上运行。Presto worker 借助 connector 来读取 Pulsar 集群中的数据,并对读取的数据进行查询。

Presto Pulsar connector 如何高效地从 Pulsar 读取数据?

在 Pulsar 中,producer 向 Pulsar 写入消息,写入的消息被放入不同的通道,这些通道又称 为 topic。Pulsar 中的 topic 以分片形式存储在 Apache BookKeeper 中,并复制每个 topic 分片到 Bookie 中,Bookie 是数量可配置(默认值为 2 个)的 BookKeeper 节点。

怎么用Apache Pulsar SQL查询数据流
Pulsar SQL 架构概览  

Pulsar SQL 旨在最大化数据扫描速度,因此 Presto Pulsar connector 可以直接从 Bookie 读取数据(而不是从 Pulsar Consumer API 读取),以利用 Pulsar 分片架构的优势。Consumer API 适用于在发布/订阅用例中消费消息,但不一定能优化批量读取。

为了保证排序,Pulsar 中仅由一个 Broker 为单个 topic 提供服务,由此将读取吞吐量限制为一个 Broker 的读取吞吐量。用户可以利用 topic 分区来提高读取吞吐量,但是 Pulsar 希望用户可以在不修改现有 topic 的条件下,以高性能的方式查询 topic。对于查询用例,我们不关心排序,只需读取全部数据即可。

直接从组成 topic 的分片读取数据是一个更优方案。因为分片及其副本散布在多个 BookKeeper Bookie 之间,Presto worker 可以并发地从多个 BookKeeper 节点上读取分片数据,,以实现高吞吐量。用户还可以通过配置更大的 topic 副本数来实现更高的吞吐量,这一操作简便易行。

怎么用Apache Pulsar SQL查询数据流
Worker 从多个副本并行读取以实现高吞吐量  

Pulsar SQL 不仅可以查询 Bookie 中的数据,还可以查询卸载到云存储中的数据。通过分层存储,用户不仅可以存储超出物理集群实际容量的数据,还可以对这些数据进行查询,获取更多有价值的信息。



用 例

下面是一些常见的 Pulsar SQL 用例。Pulsar 简化了用例中的架构,原本需要多个系统才能实现的任务,在添加了 Pulsar SQL 之后,用户就可以使用 Pulsar 进行日志提取与查询。


到此,关于“怎么用Apache Pulsar SQL查询数据流”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. apache flink指的是什么
  2. Apache Kafka、Apache Pulsar和RabbitMQ性能测试对比是怎么进行的

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

apache sql

上一篇:javascript常用工具类如何封装

下一篇:ES6中Map结构怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》