Use Azure BlobStore offloader with Pulsar
请按照以下步骤安装 Azure BlobStore offloader。
- Pulsar:2.6.2 或更高版本
下列示例将使用 Pulsar 2.6.2。
使用下列方式下载 Pulsar 压缩包:
从 Pulsar 官网下载
使用 wget 命令下载:
下载并解压 Pulsar offloaders 程序包。
tar xvfz apache-pulsar-offloaders-2.6.2-bin.tar.gz
将 Pulsar offloaders 作为
offloaders
复制到Pulsar目录中。mv apache-pulsar-offloaders-2.6.2/offloaders apache-pulsar-2.6.2/offloaders
ls offloaders
输出
如输出所示,Pulsar使用 来支持 AWS S3 、 和 Azure 进行长期存储。
tiered-storage-file-system-2.6.2.nar
tiered-storage-jcloud-2.6.2.nar
Configuration
Note
在将数据从 BookKeeper 转移到 Azure BlobStore, 之前,你需要配置 Azure BlobStore offload 驱动程序的一些属性。
此外,你还可以配置 Azure BlobStore offloader 的自动触发和手动触发机制。
你可以在配置文件 broker.conf
或 standalone.conf
中配置 Azure BlobStore offloader driver。
以下为必选 配置。
Bucket (必选)
一个 bucket 就是一个存储数据的基本容器。 你在 Azure BlobStore 中存储的所有东西都必须包含在一个 bucket 里。 您可以使用 bucket 来管理数据并控制对数据的访问,但与目录和文件夹不同,你不能嵌套 bucket。
示例
该示例将 bucket 命名为 pulsar-topic-offload。
managedLedgerOffloadBucket=pulsar-topic-offload
身份验证 (必选)
为了能够访问 Azure BlobStore ,你需要对 Azure BlobStore 进行认证。
在
conf/pulsar_env.sh
中设置环境变量AZURE_STORAGE_ACCOUNT
和AZURE_STORAGE_ACCESS_KEY
。“export” 命令很重要,以便变量在生成进程的环境中可用。
读取/写入的数据块大小
你可以在配置文件broker.conf
或standalone.conf
中配置发送到 Azure BlobStore 或从 Azure BlobStore 读取的请求大小。
配置 | 描述 | 默认值 |—-|—-|— managedLedgerOffloadReadBufferSizeInBytes
| 从 Azure BlobStore 读回数据时,每个单独读的块大小。|1 MB managedLedgerOffloadMaxBlockSizeInBytes
| 在多部分上传至 Azure BlobStore 存储时,每一部分的最大尺寸。 它不能小于5MB。 |64 MB
命名空间策略可以配置成一旦到达阈值就自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。
阈值|动作 |—-|—-
当一个新 segment 添加到 topic 日志后会自动运行卸载。 如果你在命名空间上设置了阈值,但向该 topic 生产的消息很少,offloader 将会停止工作,直至当前 segment 达到饱和。
你可以通过命令行工具(CLI)设置阈值大小,比如 pulsar-admin。
示例
该示例使用 pulsar-admin 将Azure BlobStore offloader 的阈值大小设置为10MB。
bin/pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace
提示
关于
pulsar-admin namespaces set-offload-threshold options
命令的更多信息,包括参数、描述和默认值等,可参见。
对于每一个 topic,你可以使用下列方法来手动触发 Azure BlobStore offloader:
使用 REST endpoint。
使用命令行工具(例如 pulsar-admin)。
要想用命令行工具触发,你要指定一个 Topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续转移到 Azure BlobStore 上,直到不再超过这个阈值。 优先移动旧的 segment。
示例
该示例使用 pulsar-admin 手动触发了 Azure BlobStore offloader 的运行。
bin/pulsar-admin topics offload --size-threshold 10M my-tenant/my-namespace/topic1
输出
Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
该示例使用 pulsar-admin 检查 Azure BlobStore offloader 的状态。
bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
输出
要等待 Azure BlobStore offloader 完成任务,请添加
-w
参数。bin/pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1
输出
Offload was a success
如果卸载时出现错误,错误会返回到
pulsar-admin topics offload-status
命令。bin/pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
输出
Error in offload
null
提示
关于
pulsar-admin topics offload-status options
命令的更多信息,比如参数、描述和默认值等,可参见此处。