Use GCS offloader with Pulsar

    请按照以下步骤安装 GCS offloader。

    • Pulsar:2.4.2 或更高版本

    下列示例将使用 Pulsar 2.5.1。

    1. 使用下列方式下载 Pulsar 压缩包:

      • 从 Pulsar 官网 下载页 下载

      • 使用 命令下载:

    2. 下载并解压 Pulsar offloaders 程序包。

      1. tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
    3. 将 Pulsar offloaders 作为offloaders复制到Pulsar目录中。

      1. mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
      2. ls offloaders

      输出

      如下中所示,Pulsar 使用 Apache jclouds 来支持 GCS 和AWS S3 进行长期存储。

    1. ```
    2. tiered-storage-file-system-2.5.1.nar
    3. tiered-storage-jcloud-2.5.1.nar
    4. ```

    Note

    在将数据从 BookKeeper 卸载到 GCS 之前,你需要配置 GCS offloader driver 的一些属性。

    此外,你还可以配置 GCS offloader 的自动触发和手动触发机制。

    你可以在配置文件 broker.confstandalone.conf 中配置 GCS offloader driver。

    • 以下为必选 配置。

      必填 配置 | 描述 | 示例值 |—-|—-|—- managedLedgerOffloadDriver|Offloader driver 名称,不区分大小写|google-cloud-storage |Offloader 目录|offloaders gcsManagedLedgerOffloadBucket|Bucket|pulsar-topic-offload gcsManagedLedgerOffloadRegion|Bucket 区域|europe-west3 gcsManagedLedgerOffloadServiceAccountKeyFile|认证 |/Users/user-name/Downloads/project-804d5e6a6f33.json

    • 以下为可选 配置。

      可选配置|描述|示例值 |—-|—-|—- gcsManagedLedgerOffloadReadBufferSizeInBytes|读取数据块的大小|1 MB gcsManagedLedgerOffloadMaxBlockSizeInBytes|写数据块的大小|64 MB managedLedgerMinLedgerRolloverTimeMinutes|一个 Topic 的 Ledger 翻转之间的最小时间|2 managedLedgerMaxEntriesPerLedger|在触发翻转之前追加到 Topic ledger 的最大条目数。|5000

    Bucket (必选)

    一个 bucket 就是一个存储数据的基本容器。 你存储在 GCS 中的所有东西必须包含在一个 bucket 中。 您可以使用 bucket 来管理数据并控制对数据的访问,但与目录和文件夹不同,你不能嵌套 bucket。

    示例

      Bucket 区域 (必填)

      Bucket 区域是指 Bucket 所处的区域。 如果没有指定 Bucket 区域,则使用默认区域 (us multi-regional location)。

      示例

      本示例将 Bucket 的区域设置为_ europe-west3 _。

      身份验证 (必选)

      为了使 broker 访问GCS,你需要在配置文件broker.conf中配置gcsManagedLedgerOffloadServiceAccountKeyFile

      gcsManagedLedgerOffloadServiceAccountKeyFile 是一个JSON文件,它包含一个服务账户的GCS凭证。

      示例

      要生成服务帐户凭据或查看你已经生成的公共凭据,请遵循以下步骤:

      1. 打开 服务账户页面

      2. 选择一个项目或创建一个新项目。

      3. Click Create service account.

      4. Create service account 窗口中,输入服务账户的名称并选择 Furnish a new private key

        如果你想给服务账号 ,选择 Enable G Suite Domain-wide Delegation

      5. Click Create.

        Note

        确保你创建的服务账号拥有操作 GCS 的权限,你需要在 给你的服务账号指定Storage Admin 权限。

      6. 你可以获得以下信息,并在broker.conf中设置。

        1. gcsManagedLedgerOffloadServiceAccountKeyFile="/Users/user-name/Downloads/project-804d5e6a6f33.json"

      读取/写入的数据块大小

      你可以在配置文件 broker.conf 中配置发送到 GCS 或从 GCS 读取的请求大小。

      配置|描述 |—-|—- gcsManagedLedgerOffloadReadBufferSizeInBytes| 当从GCS读回数据时,每个数据块大小。

      默认值是1 MB。 |在向GCS上传多部分时,”部分 “的最大尺寸。

      不能小于5MB。

      命名空间策略可以配置成一旦到达阈值就自动卸载数据。 该阈值基于一个 topic 在 Pulsar 集群的数据存储大小而定。 一旦 topic 到达阈值,就自动触发卸载操作。

      阈值|动作 |—-|—-

      0 | 如果 topic 存储达到其阈值,它就会触发 offloading 操作。 = 0| 它使 broker 竭尽全力地 offload 数据。 < 0 | 它将禁用自动 offloading 操作。

      当一个新 segment 添加到 topic 日志后会自动运行卸载。 如果你在命名空间上设置了阈值,但向该 topic 生产的消息很少,offloader 将会停止工作,直至当前 segment 达到饱和。

      你可以通过命令行工具(CLI)设置阈值大小,比如 pulsar-admin。

      broker.confstandalone.conf 中的卸载配置文件,主要适用于没有命名空间级别卸载策略的命名空间中。 每个命名空间可以有自己的卸载策略。 If you want to set offload policy for each namespace, use the command command.

      示例

      该示例使用 pulsar-admin 将 GCS offloader 的阈值大小设置为10MB。

      1. pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace

      对于每一个 topic,你可以使用下列方法来手动触发 GCS offloader:

      • 使用 REST endpoint。

      • 使用命令行工具(例如 pulsar-admin)。

        要想用命令行工具触发 GCS,你需要指定一个 Topic 应该保留在 Pulsar 集群中的最大数据量(阈值)。 如果 Pulsar 集群上 topic 的数据大小超过了这个阈值,那么该 topic 下的 segment 将会被陆续被卸载到 GCS 上,直到不再超过这个阈值。 优先移动旧的 segment。

      示例

      • 此示例使用 pulsar-admin 命令 pulsar-admin topics offload (topic-name) (threshold) 手动触发了 GCS offloader 运行。

        1. pulsar-admin topics offload persistent://my-tenant/my-namespace/topic1 10M

        输出

        1. Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1

        提示

        关于pulsar-admin topics offload-status options命令的更多信息,包括标志、描述、默认值和速记方法,见。

      • 这个例子使用 pulsar-admin 检查 GCS offloader 的状态,命令是 pulsar-admin topics offload-status options

        输出

        1. Offload is currently running

        要等待 GCS 完成任务,请添加 -w 参数。

        1. pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1

        输出

        1. Offload was a success

        如果卸载时出现错误,错误会返回到 pulsar-admin topics offload-status 命令。

        1. pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
      1. > #### 提示

      有关如何在 Pulsar 中使用 GCS offloader 的完整和分解讲解,请参阅这里。 ```