Todos os produtos
Search
Central de documentação

E-MapReduce:Limitar o tráfego de O&M no servidor Kafka

Última atualização: Jun 27, 2026

A reatribuição de partições, a migração de réplicas entre brokers e a recuperação de brokers geram E/S de replicação que pode competir com o tráfego normal de produtores e consumidores. Aplique limitação para restringir essa E/S de manutenção e evitar impactos no tráfego de negócios.

Este documento aplica-se ao E-MapReduce (EMR) Kafka 2.4.1.

Parâmetros de limitação

Quatro parâmetros controlam a limitação de replicação. Dois são definidos no nível do tópico para selecionar quais réplicas limitar; os outros dois são configurados no nível do broker para restringir o throughput.

Parâmetro

Escopo

Descrição

leader.replication.throttled.replicas

Tópico

Réplicas líderes sujeitas à limitação de tráfego de manutenção. Formato: [PartitionId]:[BrokerId],[PartitionId]:[BrokerId],... ou * para todas as réplicas líderes do tópico.

follower.replication.throttled.replicas

Tópico

Réplicas seguidoras sujeitas à limitação de tráfego de manutenção. Mesmo formato acima.

leader.replication.throttled.rate

Broker

Limite de throughput de leitura para réplicas líderes no broker (bytes por segundo).

follower.replication.throttled.rate

Broker

Limite de throughput de gravação para réplicas seguidoras no broker (bytes por segundo).

Observações de uso

  • Decida se deve limitar o tráfego de O&M com base na composição do tráfego, nos cenários de negócios e nos cenários operacionais do Kafka.

  • Defina o limiar de limitação considerando o volume real de tráfego de negócios, a tolerância a latência, a possibilidade de interrupção breve do serviço Kafka e a largura de banda de E/S dos discos e da rede.

  • Um limiar muito baixo pode paralisar totalmente a operação de manutenção. Já um valor excessivo pode causar problemas como competição de E/S ou saturação da largura de banda, afetando o tráfego normal de negócios.

  • Sempre que possível, agende as operações de manutenção fora dos horários de pico.

Consultar a configuração atual de limitação

Use kafka-configs.sh para inspecionar os parâmetros de limitação em qualquer broker ou tópico.

Consulte um broker:

kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name <broker-id> --describe

Consulte um tópico:

kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name <topic-name> --describe

Limitar o tráfego durante a reatribuição de partições

O script kafka-reassign-partitions.sh aplica a limitação diretamente por meio do sinalizador --throttle. Após concluir a reatribuição, execute --verify para remover os parâmetros de limitação dos tópicos e brokers afetados.

Importante
  • A limitação aplica-se apenas ao tráfego de reatribuição, não às operações normais de busca de réplicas.

  • Para ajustar a limitação durante uma reatribuição em andamento, execute novamente --execute com o novo valor de --throttle.

  • Caso a reatribuição já tenha começado sem o uso de --throttle, configure leader.replication.throttled.replicas, follower.replication.throttled.replicas, leader.replication.throttled.rate e follower.replication.throttled.rate diretamente com kafka-configs.sh.

Procedimento:

  1. Faça login no nó mestre do cluster Kafka via SSH. Para mais detalhes, consulte Fazer login em um cluster.

  2. Crie um tópico de teste.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Verifique os detalhes do tópico:

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Simule a gravação de dados para gerar tráfego em segundo plano.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Elabore um plano de reatribuição de partições. Crie um arquivo chamado reassign.json com o seguinte conteúdo:

    {"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","any","any"]}]}
  5. Execute a reatribuição com limitação. Neste exemplo, a velocidade de gravação simulada é de 10 Mbit/s e a limitação está definida em 30 Mbit/s.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --throttle 30000000 --execute

    Para alterar a limitação durante a execução da reatribuição, execute novamente o comando com o novo valor:

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --throttle <new-rate-in-bytes> --execute
  6. (Opcional) Verifique se os parâmetros de limitação foram aplicados. Consulte o broker 2:

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 2 --describe

    Verifique o tópico:

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name test-throttled --describe
  7. Valide a reatribuição e remova a limitação.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verify

    Após a conclusão do job, execute o comando anterior novamente para remover os parâmetros de limitação.

Limitar o tráfego ao mover réplicas entre diretórios

Use kafka-reassign-partitions.sh com --replica-alter-log-dirs-throttle para limitar a E/S intra-broker durante a migração de diretórios de réplicas. A limitação reflete-se no parâmetro de nível de broker replica.alter.log.dirs.io.max.bytes.per.second.

Procedimento:

  1. Faça login no nó mestre do cluster Kafka via SSH. Para mais detalhes, consulte Fazer login em um cluster.

  2. Crie um tópico de teste.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Verifique os detalhes do tópico:

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Simule a gravação de dados.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Crie o plano de reatribuição com o diretório de destino. Crie um arquivo chamado reassign.json com o seguinte conteúdo:

    {"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","/mnt/disk1/kafka/log","any"]}]}
  5. Execute a movimentação de réplicas com limitação.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --replica-alter-log-dirs-throttle 30000000 --execute
  6. Confirme se o parâmetro de limitação foi aplicado no broker.

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --describe --entity-name 0
  7. Verifique se a movimentação foi concluída e remova a limitação.

    Nota

    Execute

    --verify

    novamente após a conclusão do job para remover os parâmetros de limitação.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verify

Limitar o tráfego durante a recuperação de brokers

Após reiniciar, um broker ressincroniza os dados das réplicas a partir das réplicas líderes. Em cenários como migração de brokers ou reparo de discos, esse tráfego de sincronização pode ser significativo. Configure a limitação antes de parar o broker para impedir que o tráfego de recuperação afete o tráfego de negócios.

Importante
  • A limitação aplica-se apenas à replicação de manutenção, não às operações normais de busca de réplicas.

  • Depois que o broker se recuperar e suas réplicas retornarem à lista de réplicas sincronizadas (ISR), remova os parâmetros de limitação com kafka-configs.sh. Se você pular esta etapa, a limitação continuará a ser aplicada a todo o tráfego de replicação.

Procedimento:

  1. Faça login no nó mestre do cluster Kafka via SSH. Para mais detalhes, consulte Fazer login em um cluster.

  2. Crie um tópico de teste.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Verifique os detalhes do tópico:

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Grave dados de teste.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Configure a limitação no tópico e em cada broker antes de parar o Broker 1. Aplique a limitação a todas as réplicas do tópico:

    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type topics --entity-name test-throttled --alter --add-config "leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*"

    Aplique as taxas de limitação a cada broker. Repita para todos os brokers do cluster:

    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 0
    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 1
    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 2
    ......
  5. Pare o Broker 1 no console EMR.

  6. Exclua os dados da réplica no Broker 1 para simular perda de dados.

    rm -rf /mnt/disk2/kafka/log/test-throttled-0/
  7. Inicie o Broker 1 no console EMR e confirme se os parâmetros de limitação estão ativos. Use os comandos em Consultar a configuração atual de limitação para verificar.

  8. Após a recuperação das réplicas do Broker 1 e seu retorno à lista ISR, remova os parâmetros de limitação. Remova do tópico:

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas' --entity-name test-throttled

    Remova de cada broker:

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas,leader.replication.throttled.rate,follower.replication.throttled.rate' --entity-name 0
    ......