Use filesystem offloader with Pulsar
本章将一步一步的指导你完成在 Pulsar 中安装和配置filesystem offloader。
安装
请按照以下步骤安装 filesystem offloader。
前提条件
Pulsar:2.4.2 或更高版本
Hadoop: 3.x.x
步骤
下列示例将使用 Pulsar 2.5.1。
使用下列方式下载 Pulsar 压缩包:
下载并解压 Pulsar offloaders 程序包。
wget https://downloads.apache.org/pulsar/pulsar-2.5.1/apache-pulsar-offloaders-2.5.1-bin.tar.gz
tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
Note
如果在一个裸机集群中运行 Pulsar,请确保
offloaders
安装包已经在 broker 的所有 pulsar 目录下解压缩。如果你在 Docker 中运行 Pulsar 或者通过 Docker 镜像 (如K8s和DCOS) 部署 Pulsar,你可以使用
apachepulsar/pulsar-all
镜像代替apachepulsar/pulsar
镜像。apachepulsar/pulsar-all
image has already bundled tiered storage offloaders.
将 Pulsar offloaders 作为
offloaders
复制到Pulsar目录中。mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
ls offloaders
输出
tiered-storage-file-system-2.5.1.nar
tiered-storage-jcloud-2.5.1.nar
Note
如果在一个裸机集群中运行 Pulsar,请确保
offloaders
安装包已经在 broker 的所有 pulsar 目录下解压缩。如果你在 Docker 中运行 Pulsar 或者通过 Docker 镜像 (如K8s和DCOS) 部署 Pulsar,你可以使用
apachepulsar/pulsar-all
镜像代替apachepulsar/pulsar
镜像。apachepulsar/pulsar-all
image has already bundled tiered storage offloaders.
Configuration
Note
在将数据从 BookKeeper 卸载到 filesystem 之前,你需要配置 filesystem offloader 驱动程序的一些属性。
此外,你还可以配置 filesystem offloader 的自动触发和手动触发机制。
配置 filesystem offloader driver
你可以在配置文件 broker.conf
或 standalone.conf
中配置f ilesystem offloader driver。
以下为必选 配置。
所需配置 | 说明 | 示例值 |—-|—-|—-
managedLedgerOffloadDriver
| Offloader driver 名称,不区分大小写。 | filesystemfileSystemURI
| Connection address | hdfs://127.0.0.1:9000fileSystemProfilePath
| Hadoop profile path | ../conf/filesystem_offload_core_site.xml以下为可选 配置。
可选配置 | 描述 | 示例值 |—-|—-|—-
<code>managedLedgerMinLedgerRolloverTimeMinutes
| 一个 Topic 的 Ledger 翻转之间的最小时间注意: 不建议你在生产环境中设置此配置。|2
managedLedgerMaxEntriesPerLedger
| 在触发翻转之前追加到 Topic ledger 的最大条目数。注意:不建议你在生产环境中设置此配置。|5000
Offloader driver (必填)
Offloader driver 名称,不区分大小写
下面的例子将 offloader driver 的名称设置为 filesystem。
managedLedgerOffloadDriver=filesystem
连接地址 (必填)
连接地址是访问默认 Hadoop 分布式文件系统的 URI。
示例
这个例子将连接地址设置为 hdfs:/127.0.0.1:9000。
fileSystemURI=hdfs://127.0.0.1:9000
Hadoop配置文件路径 (必填)
The configuration file is stored in the Hadoop profile path. 它包含了一些 Hadoop 性能调整的配置。
示例
本例将 Hadoop 配置文件路径设置为./conf/filesystem_offload_core_site.xml。
fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
你可以在 filesystem_offload_core_site.xml 文件中设置以下配置。
<property>
<name>fs.defaultFS</name>
<value></value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>pulsar</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>io.seqfile.compress.blocksize</name>
<value>1000000</value>
</property>
<property>
<name>io.seqfile.compression.type</name>
<value>BLOCK</value>
</property>
<property>
<name>io.map.index.interval</name>
<value>128</value>
</property>
提示
有关 Hadoop HDFS 的更多信息,请参阅这里。
配置 filesystem offloader 自动运行
命名空间策略可以配置成一旦到达阈值就自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。
阈值|动作 |—-|—-
0 | 如果 topic 存储达到其阈值,它就会触发 offloading 操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 < 0 | 它将禁用自动 offloading 操作。
Automatic offload runs when a new segment is added to a topic log. 如果你在命名空间上设置了阈值,但向该 topic 生产的消息很少,offloader 将会停止工作,直至当前 segment 达到饱和。
你可以通过命令行工具(CLI)设置阈值大小,比如 pulsar-admin。
示例
该示例使用pulsar-admin将 filesystem offloader 的阈值大小设置为10MB。
pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace
提示
关于
pulsar-admin topics offload-status options
命令的更多信息,包括标志、描述、默认值和速记方法,见这里。
配置 filesystem offloader 手动运行
对于每一个 topic,你可以使用下列方法来手动触发 filesystem offloader:
使用 REST endpoint。
使用命令行工具(例如 pulsar-admin)。
要想用命令行工具触发,你要指定一个主题应该保留在 Pulsar 集群中的最大数据量 (阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 就会被陆续卸载到 filesystem 上,直到不再超过这个阈值。 优先卸载旧的 segment。
示例
该示例使用 pulsar-admin 手动触发了 filesystem offloader 的运行。
pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
输出
Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
提示
关于
pulsar-admin topics offload-status options
命令的更多信息,包括标志、描述、默认值和速记方法,见这里。该示例使用 pulsar-admin 检查 filesystem offloader 的状态。
pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
输出
Offload is currently running
要等待 filesystem offloader 完成任务,请添加
-w
参数。pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1
输出
Offload was a success
如果在卸载操作中出现错误,该错误会将会在
pulsar-admin topics offload-status
命令中抛出。pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
输出
Reason: Error offloading: org.apache.bookkeeper.mledger.ManagedLedgerException: java.util.concurrent.CompletionException: com.amazonaws.services.s3.model.AmazonS3Exception: Anonymous users cannot initiate multipart uploads. Please authenticate. (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 798758DE3F1776DF; S3 Extended Request ID: dhBFz/lZm1oiG/oBEepeNlhrtsDlzoOhocuYMpKihQGXe6EG8puRGOkK6UwqzVrMXTWBxxHcS+g=), S3 Extended Request ID: dhBFz/lZm1oiG/oBEepeNlhrtsDlzoOhocuYMpKihQGXe6EG8puRGOkK6UwqzVrMXTWBxxHcS+g= `
> #### 提示
>
> 关于`pulsar-admin topics offload-status options`命令的更多信息,包括标志、描述、默认值和速记方法,见[这里](reference-pulsar-admin.md#offload-status)。
教程
有关如何在 Pulsar 中使用 filesystem offloader 的完整和分解讲解,请参阅这里。 ```