如何更改 Kinesis Data Streams 中打开的分片数量?

1 分钟阅读
0

我想更改 Amazon Kinesis Data Streams 中打开的分片数量,还想了解重新分片后该怎么做。

简短描述

分片可以处于“打开”、“关闭”或“过期”状态。当分片处于“打开”状态时,您可以添加和检索分片中的数据记录。

要更改 Kinesis Data Streams 中打开的分片数量,请完成以下任一任务:

  • 更新分片总数。此操作会更改数据流中的分片数量。
  • 拆分单个分片。
  • 将两个分片合并为一个分片。

**注意:**如果您更改 Kinesis Data Streams 中打开的分片数量,此更改会影响父分片和哈希键范围的值。

解决方法

更新分片总数

使用 Kinesis 控制台或 API 操作来更新打开的分片数量。当您使用 AWS 管理控制台时,Data Streams 会使用 UpdateShardCount API 对您的数据流进行重新分片。关于 UpdateShardCount API,请确认以下几点:

  • API 会在后台拆分或合并单个分片,将指定流的分片数更新为指定的分片数量。UpdateShardCount 是一个数据流级的 API 调用。
  • UpdateShardCount 仅支持均匀缩放。均匀缩放会为哈希键范围创建等百分比的分片。
  • UpdateShardCount 操作会将分片数量重新调整为大小相等的特定目标值。

拆分单个分片

您可以将“热”分片或“冷”分片分成两个分片

**注意:**只能通过 API 操作来拆分或合并分片。

如果分片收到的数据量超出预期,则称为“热”分片。使用 SplitShard API 选择性地拆分热分片,以增加针对这些分片的哈希键的容量。有关热分片管理的更多信息,请参阅重新分片策略

您还可以使用 Amazon CloudWatch 监控 Amazon Kinesis Data Streams 服务。要使用 CloudWatch 指标来确定“热”分片或“冷”分片,请开启分片级别的指标,例如 IncomingRecordsIncomingBytes

将两个分片合并为一个分片

您可以将“热”分片或“冷”分片分成两个分片。

**注意:**只能通过 API 操作来拆分或合并分片。

如果分片收到的数据量远低于预期,则称为“冷”分片。使用 MergeShards API 合并冷分片以使用其全部容量。这是一个分片级的 API 调用。请注意,您只能合并两个相邻的分片,其哈希键范围的并集会形成一个没有间隙的连续集合。

您还可以使用 Amazon CloudWatch 监控 Amazon Kinesis Data Streams 服务。请开启分片级别的指标,例如 IncomingRecordsIncomingBytes,以便使用 CloudWatch 指标来确定“热”分片或“冷”分片。

其他注意事项

重新分片操作所对应的分片或一对分片称为父分片。在重新分片操作之后创建的分片称为子分片。父分片还会从“打开”状态过渡到“关闭”状态,并在数据流保留期结束后最终转换为“过期”状态。这可能会导致子分片被指定为“打开”状态。有关父分片转换的更多信息,请参阅数据路由、数据保留和重新分片后的分片状态

重新分片后,继续从处于“关闭”状态的分片中读取数据,直到处于“关闭”状态的分片耗尽。这有助于保持消费者应用程序读取的数据顺序。用尽所有处于“关闭”状态的分片后,从打开的子分片中读取数据。Amazon Kinesis 客户端库(KCL)专为支持重新分片操作而设计。会首先处理在重新分片之前就存在于分片中的数据。有关重新分片操作的更多信息,请参阅重新分片、缩放和并行处理

如果更改打开的分片的数量,则某些分片的哈希键范围也可能会发生变化。哈希键范围是分片的哈希键值的可能范围,是一组有序的连续正整数。该范围由起始和结束键值组成。例如,假设您创建了一个包含 5 个打开分片的 Kinesis 数据流,则该数据流会根据哈希键范围进行五等分。因此,所有分片的哈希键空间值均为 20%。

例如,假设哈希键范围为 X 个分片,即从分片 1分片 X,则可以通过进一步拆分分片或合并分片来修改范围:

控制台或 UpdateShardCount API

如果将打开分片的数量从 5 更改为 10,则带来的子分片键空间为 10%。哈希键范围会在所有打开的分片之间等分,值为 10%。

SplitShard API

将最后一个分片(分片 5)拆分为两个分片(分片 6 和分片 7)。在拆分分片之前,父分片的键空间为 20%。拆分分片后,子分片(分片 6 和分片 7)的键空间为 10%。父分片的哈希键范围会在两个子分片之间等分,值为 10%。因此,哈希键空间被拆分 20%-20%-20%-20%-10%-10%。

MergeShards API

将最后两个分片(分片 4 和分片 5)合并为一个分片(分片 6)。父分片(分片 4 和分片 5)的哈希键空间为 20%。合并分片后,子分片(分片 6)的键空间为 40%。父分片的哈希键范围会添加到子分片中,使之等于 40%。因此,哈希键空间被拆分为 20%-20%-20%-40%。

AWS 官方
AWS 官方已更新 5 个月前