Como mudo o número de fragmentos abertos em Kinesis Data Streams?

6 minuto de leitura
0

Quero mudar o número de fragmentos abertos no Amazon Kinesis Data Streams e saber o que fazer depois de compartilhar novamente.

Breve descrição

Um fragmento pode estar em um estado: ABERTO, FECHADO ou EXPIRADO. Quando ele está no estado ABERTO, você pode adicionar e recuperar registros de dados desse fragmento.

Para mudar o número de fragmentos abertos no Kinesis Data Streams, conclua uma das seguintes tarefas:

  • Atualizar o número total de fragmentos. Essa ação altera o número de fragmentos no fluxo.
  • Divida um único fragmento.
  • Mescle dois fragmentos em um só.

Observação: se você mudar o número de fragmentos abertos no seu fluxo de dados do Kinesis, essa alteração afetará os fragmentos principais e os valores do intervalo de chaves de hash.

Resolução

Atualize o número total de fragmentos

Use o console do Kinesis ou as operações da API para atualizar o número de fragmentos abertos. Quando você usa o Console de Gerenciamento da AWS, o Data Streams usa a API UpdateShardCount para refragmentar os fluxos. Reveja os seguintes pontos sobre a API UpdateHardCount:

  • A API divide ou mescla fragmentos individuais em segundo plano para atualizar a contagem de fragmentos do fluxo especificado para o número especificado de fragmentos. UpdateHardCount é uma chamada de API em nível de fluxo.
  • UpdateHardCount apenas oferece suporte para ajuste de escala uniforme. O ajuste de escala uniforme cria fragmentos de igual porcentagem para o intervalo de chaves de hash.
  • A operação UpdateShardCount reajusta o número de fragmentos para um valor alvo específico de mesmo tamanho.

Divida um único fragmento

Você pode dividir um fragmento “quente” ou “frio” em dois

Observação: você pode dividir ou mesclar fragmentos somente por meio de operações de API.

Os fragmentos que recebem mais dados do que o esperado são chamados de fragmentos “quentes”. Use a API SplitShard para dividir seletivamente os fragmentos quentes de forma a aumentar a capacidade das chaves de hash direcionadas a eles. Para obter mais informações sobre como gerenciar fragmentos quentes, consulte Estratégias para refragmentação.

Você também pode monitorar o serviço Amazon Kinesis Data Streams com o Amazon CloudWatch. Para usar as métricas do CloudWatch para determinar fragmentos “quentes” ou “frios”, ative métricas em nível de fragmento, como IncomingRecords e IncomingBytes.

Mescle dois fragmentos em um só

Você pode dividir um fragmento “quente” ou “frio” em dois.

Observação: você pode dividir ou mesclar fragmentos somente por meio de operações de API.

Os fragmentos que recebem muito menos dados do que o esperado são chamados de fragmentos “frios”. Use a API MergeShards para mesclar fragmentos frios e usar sua capacidade total. Essa é uma chamada de API em nível de fragmento. Observe que você pode mesclar somente dois fragmentos adjacentes, em que a união de seus intervalos de chaves de hash forma um conjunto contíguo sem lacunas.

Você também pode monitorar o serviço Amazon Kinesis Data Streams com o Amazon CloudWatch. Use métricas do CloudWatch para determinar fragmentos “quentes” ou “frios” ativando métricas em nível de fragmento, como IncomingRecords e IncomingBytes.

Considerações adicionais

O fragmento ou par de fragmentos em que a operação de refragmentação atua são chamados de fragmentos principais. Os fragmentos criados após a operação de refragmentação são chamados de fragmentos secundários. Um fragmento principal também passa de um estado ABERTO para um estado FECHADO e, eventualmente, para um estado EXPIRADO, após o período de retenção do fluxo. Isso pode resultar na atribuição de um estado ABERTO a fragmentos secundários. Para obter mais informações sobre transições de fragmentos principais, consulte Roteamento de dados, persistência de dados e estado do fragmento após uma refragmentação.

Após o refragmentação, continue lendo os dados dos fragmentos FECHADOS até que estes últimos se esgotem. Isso ajuda a preservar a ordem dos dados lidos pelas aplicações consumidoras. Depois de esgotar todos os fragmentos FECHADOS, leia os dados dos fragmentos secundários abertos. A biblioteca cliente do Amazon Kinesis (KCL) foi projetada para se adaptar a operações de refragmentação. Os dados existentes nos fragmentos antes da refragmentação são processados primeiro. Para obter mais informações sobre operações de refragmentação, consulte Refragmentação, ajuste de escala e processamento paralelo.

Se você mudar o número de fragmentos abertos, também poderão ocorrer alterações nos intervalos de chaves de hash de alguns fragmentos. Um intervalo de chaves de hash é o intervalo de valores possíveis de chaves de hash para um fragmento, um conjunto de números inteiros positivos contíguos ordenados. Esse intervalo consiste em valores de chaves iniciais e finais. Por exemplo, se você criar um fluxo de dados do Kinesis com cinco fragmentos abertos, o fluxo será dividido em 5 partes iguais com base no intervalo de chaves de hash. Portanto, todos os fragmentos têm 20% como valor do keyspace de hash.

Por exemplo, suponha que você tenha um intervalo de chaves de hash de X fragmentos, de Shard-1 a Shard-X. É possível modificar os intervalos dividindo ainda mais os fragmentos ou mesclando os fragmentos:

Console ou API UpdateShardCount

Se você mudar o número de fragmentos abertos de 5 para 10, o keyspace resultante dos fragmentos secundários será de 10%. O intervalo de chaves de hash é dividido igualmente em todos os fragmentos abertos com um valor de 10%.

API SplitShard

Divida o último fragmento (Shard-5) em dois (Shard-6 e Shard-7). Antes de dividir um fragmento, o keyspace do fragmento principal é 20%. Depois de dividir um fragmento, o keyspace dos fragmentos secundários (Shard-6 e Shard-7) é de 10%. O intervalo de chaves de hash para os fragmentos principais é dividido igualmente em ambos os fragmentos secundários com um valor de 10%. Portanto, o keyspace de hash é dividido em 20%-20%-20%-20%-10%-10%.

API MergeShards

Mescle os dois últimos fragmentos (Shard-4 e Shard-5) em um só (Shard-6). O keyspace de hash dos fragmentos principais (Shard-4 e Shard-5) é de 20%. Depois de mesclar um fragmento, o espaço chave do fragmento secundário (Shard-6) é de 40%. O intervalo de chaves de hash dos fragmentos principais é adicionado a ambos os fragmentos secundários para ser igual a 40%. Portanto, o keyspace de hash de hash é dividido em 20%-20%-20%-40%.

AWS OFICIAL
AWS OFICIALAtualizada há um ano