写点什么

Pulsar 分级存储 -- S3 演示

作者:Apache Pulsar
  • 2021 年 11 月 24 日
  • 本文字数:1692 字

    阅读完需:约 6 分钟

本文会首先介绍 Pulsar 的分级存储。然后通过一个示例,演示在分级存储中怎样使用 Amazon S3 作为二级存储。


介绍


Pulsar 中的每个 Topic 由一列有序的的段(Segment)列表组成。Pulsar 只会写入其中的最后一段。 除最后一段之外,之前的所有段都已经被密封了,不能再往其中追加数据,这就是 Pulsar 的基于段(Segment)的存储结构。


Pulsar 的基于 Segment 的存储架构,支持一个 Topic 的空间大小存储满整个存储集群。但是随着要保存的 Partition 的数据的逐渐增多,会让存储变的昂贵。解决这个问题的一种策略就是使用分级存储(Tiered Storage)。


使用分级存储的一个场景是用户希望对一个比较大的 Topic 的数据保存比较长的时间。比如一个 Topic 中包含所有客户的点击记录,我们可以用这个 topic 中的数据来训练推荐系统。如果这个 Topic 的数据被一直保存着,当训练的算法改变后,我们就可以重新利用这些历史数据来训练新的推荐系统。


Pulsar 的分级存储功能允许将较旧的积压数据卸载到二级存储中做长期存储,从而释放 BookKeeper 中的空间,进而降低存储成本。使用分级存储,我们可以将一个 Topic 中的老的数据段(Segment)自动从 BookKeeper 搬出到更便宜的二级存储。对 Client 来说,整个过程是透明无缝的。



当 Offload 被手动或者自动触发之后,Broker 会一个接一个地将一级存储中的段,搬移到二级存储中。


Pulsar 目前支持使用 S3,Google-Cloud-Storage 作为二级存储。用户可以灵活配置 Topic 想要保留在 BookKeeper(一级存储)中的大小,和数据在搬移到二级存储后多久(默认 4 小时)从 BookKeeper 中删除。


我们在这篇文章中会使用 S3 作为一个例子,来演示怎么使用 Pulsar 的这个特性。


Operations With S3


在这个示例中使用的是 Pulsar-2.1.1 版本,主要包含 3 个步骤:


  • 在 Amazon S3(https://s3.console.aws.amazon.com)中创建一个 bucket;

  • 下载 Pulsar 包,为 Pulsar 的 Broker 配置 Offload,用 Standalone 模式启动 Pulsar;

  • 用 Pulsar 的 producer 并产生数据,触发 Offload,并验证。


一, 在 S3 中创建 Bucket


  1. 登陆 AWS console,选择 S3 服务:



  1. 创建一个 bucket,点击“Create bucket”, 填上 Bucket 的名字,然后点击 next 并一直点击确认。



  1. 经过上面的操作,可以看到一个新的 Bucket 已经被创建了。



  1. 确认在本机上配置好了 aws 的 access



二, 下载 Pulsar 包,并配置


  1. 从 Pulsar 的官网(http://pulsar.apache.org/en/download/)下载最新的 Pulsar Binary 文件(apache-pulsar-x.x.x-bin.tar.gz) ,解压,准备修改配置文件 conf/standalone.conf。



  1. 修改配置文件 conf/standalone.conf 中关于 Offload 的选项,设置第一步中创建的 bucket:



managedLedgerOffloadDriver=S3
s3ManagedLedgerOffloadBucket=offload-test-aws
s3ManagedLedgerOffloadRegion=us-east-1
复制代码



修改配置文件 conf/standalone.conf 中每个 segment 的大小配置,这使得每个 Segment 更小,更容易产生新的 segment。



  1. 在终端用 standalone 模式启动 Pulsar:


运行命令 bin/pulsar standalone



三, 在 Pulsar 中产生数据,触发 Offload,并验证


  1. 在终端中启动一个消费者,保证将要产生数据不会因为没有消费者被丢弃掉:


bin/pulsar-client consume -s “my-sub-name“ my-topic-for-offload


  1. 开一个新的终端窗口,运行下面命令 2 次,产生 2000 条 message,保证在 topic 中有两个 Segment,这样第一个 segment 可以被搬移到 S3 上。


bin/pulsar-client produce my-topic-for-offload --messages "hello pulsar this is the content for each message" -n 1000


  1. 用命令行手动触发 Offload:


bin/pulsar-admin topics offload --size-threshold 10K public/default/my-topic-for-offload



  1. 使用命令等待 offload 成功:


bin/pulsar-admin topics offload-status public/default/my-topic-for-offload



  1. 验证在第一个 Segment 已经被搬移到 S3 中:


在 s3 的终端可以看到 ledger-31 已经被存储。



使用命令行,同样可以看到这个 Topic 中有两个 Segment,第一个 Segment -- ledger-31 的 offloaded 状态为 true。



以上的步骤就是我们使用 S3 作为二级存储的整个过程。


如果想要了解更多的分级存储的内容,欢迎参考 Pulsar 的官网:

http://pulsar.apache.org/docs/en/concepts-tiered-storage/

http://pulsar.apache.org/docs/en/cookbooks-tiered-storage/

用户头像

Apache Pulsar

关注

下一代云原生分布式消息流平台 2017.10.17 加入

Apache 软件基金会顶级项目,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展流数据存储特性。

评论

发布
暂无评论
Pulsar 分级存储 -- S3 演示