Ribilanciamento di un cluster Kafka

Ribilancia i cluster Kafka del servizio Big Data per definire il numero di copie dell'argomento nel cluster.

In un cluster Kafka, i broker garantiscono l'alta disponibilità per elaborare nuovi eventi. Kafka, essendo tollerante agli errori, le repliche dei messaggi vengono mantenute su ogni broker e sono rese disponibili in caso di errori. Con l'aiuto del fattore di replica, è possibile definire il numero di copie dell'argomento nel cluster.

Aggiungere nuovi broker o dischi a un broker Kafka esistente assegnando un ID broker, listener e una directory di log univoci dalle configurazioni Ambari per Kafka. Tuttavia, a questi broker/dischi non viene assegnata alcuna partizione di dati degli argomenti esistenti nel cluster. A meno che non si spostino le partizioni o si creino nuovi argomenti, i broker non faranno molto lavoro. Per risolvere questo problema, è possibile utilizzare lo strumento kafka-reassign-partitions.

Creazione del file JSON degli argomenti da spostare

Creare un file JSON topics-to-move per specificare gli argomenti da riassegnare.

topics-to-move indica allo strumento kafka-reassign-partitions quali partizioni esaminare durante la generazione di una proposta per la configurazione della riassegnazione. È necessario creare il file JSON topics-to-move da zero. Il formato del file è il seguente:

{"topics": [{"topic": "topic1"}, {"topic": "topic2"}], "version":1 }

Per ulteriori informazioni sulla creazione del file JSON topics-to-move, vedere Esecuzione della riassegnazione delle partizioni con lo strumento kafka-reassign-partitions-tool.

JSON configurazione riassegnazione

Questo file JSON è un file di configurazione che contiene i parametri utilizzati nel processo di riassegnazione. Si crea questo file, tuttavia, una proposta per il suo contenuto viene generata dallo strumento. Quando lo strumento kafka-reasssign-partitions viene eseguito con l'opzione --generate, genera una configurazione proposta che può essere ottimizzata e salvata come file JSON. La creazione del file in questo modo è la notazione JSON di configurazione della riassegnazione. Per generare una proposta, lo strumento richiede un file topics-to-move come input. Il formato del file è il seguente:

{"version":1,
 "partitions":
   [{"topic":"topic1","partition":1001,"replicas":[1001,1002],"log_dirs":["any","any"]},
    {"topic":"topic1","partition":1002,"replicas":[1002,1001],"log_dirs":["any","any"]},
    {"topic":"topic2","partition":1003,"replicas":[1002,1001],"log_dirs":["any","any"]}]
}

Per ulteriori informazioni sulla creazione del file JSON topics-to-move, vedere Esecuzione della riassegnazione delle partizioni con lo strumento kafka-reassign-partitions-tool.

Proprietà configurazione riassegnazione

La configurazione della riassegnazione contiene più proprietà.

Proprietà descrizione;
topic Specifica l'argomento.
partition Specifica la partizione.
replicas Specifica i broker a cui è assegnata la partizione selezionata. I broker sono elencati in ordine, il che significa che il primo broker nella lista è sempre il leader per quella partizione. Cambia l'ordine dei broker per risolvere eventuali problemi di bilanciamento tra i broker. Modificare gli ID broker per riassegnare le partizioni a broker diversi.
log_dirs Specifica la directory di log dei broker. Le directory di log sono elencate nello stesso ordine dei broker. Per impostazione predefinita any è specificato come directory di log, il che significa che il broker è libero di selezionare dove posizionare la replica. Per impostazione predefinita, l'implementazione del broker corrente seleziona la directory di log utilizzando un algoritmo round-robin. È possibile utilizzare un percorso assoluto che inizia con / per impostare in modo esplicito la posizione in cui memorizzare la replica della partizione.

Esecuzione della riassegnazione delle partizioni con kafka-reassign-partitions-tool

  • Per un cluster Kafka con dati di grandi dimensioni, utilizzare questo strumento con attenzione. Per spostare più partizioni, si consiglia di eseguire lo strumento in batch di tre o quattro partizioni alla volta.
  • Assicurarsi che i broker siano sani prima di eseguire questo strumento.
  • Questo strumento non può essere utilizzato per creare una replica non sincronizzata nella partizione leader.
  • Ridistribuire il carico quando il sistema ha una capacità del 70%.
  1. SSH a uno dei nodi broker nel cluster Big Data Service. kafka-reassign-partitions-tool si trova in /usr/odh/current/kafka-broker/bin.
  2. Creare un file JSON topics-to-move che specifichi gli argomenti che si desidera riassegnare. Utilizzare il formato riportato di seguito:
    {"topics":  [{"topic": "topic1"},
                 {"topic": "topic2"}],
     "version":1
    }
  3. Generare il contenuto per la notazione JSON di configurazione della riassegnazione con il seguente comando:
    kafka-reassign-partitions --topics-to-move-json-file <path to topics to move.json> --bootstrap-server <bootstrap servers> --generate

    Nell'output viene visualizzata la distribuzione delle repliche delle partizioni nei broker correnti, seguite da una configurazione proposta per la riassegnazione delle partizioni.

    Current partition replica assignment
    {"version":1,
     "partitions":
       [{"topic":"topic2","partition":1,"replicas":[1002,1003],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":0,"replicas":[1001,1002],"log_dirs":["any","any"]},
        {"topic":"topic2","partition":0,"replicas":[1001,1002],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":2,"replicas":[1003,1001],"log_dirs":["any","any"]},
        {"topic":"topic1","partition":1,"replicas":[1002,1003],"log_dirs":["any","any"]}]
    }
     
    Proposed partition reassignment configuration
     
    {"version":1,
     "partitions":
       [{"topic":"mytopic1","partition":0,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic1","partition":2,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic2","partition":1,"replicas":[1004,1005],"log_dirs":["any","any"]},
        {"topic":"mytopic1","partition":1,"replicas":[1005,1004],"log_dirs":["any","any"]},
        {"topic":"mytopic2","partition":0,"replicas":[1005,1004],"log_dirs":["any","any"]}]
    }

    In questo esempio, lo strumento ha proposto una configurazione che riassegna le partizioni esistenti sui broker 1, 2 e 3 ai broker 4 e 5.

  4. Copiare e incollare la configurazione di riassegnazione della partizione proposta in un file JSON vuoto.
  5. Rivedere e, se necessario, modificare la configurazione di riassegnazione suggerita. Salvare il file.
  6. Avviare il processo di ridistribuzione con il seguente comando:
    kafka-reassign-partitions --reassignment-json-file <path to reassignment configuration.json> --bootstrap-server <bootstrap servers> --execute
  7. Per verificare lo spostamento della partizione, eseguire
    kafka-reassign-partitions --reassignment-json-file <path to reassignment configuration.json> --bootstrap-server <bootstrap servers> --verify

    Lo strumento stampa lo stato di riassegnazione di tutte le partizioni.

    Status of partition reassignment: 
    Reassignment of partition topic2-1 completed successfully 
    Reassignment of partition topic1-0 completed successfully 
    Reassignment of partition topic2-0 completed successfully 
    Reassignment of partition topic1-2 completed successfully 
    Reassignment of partition topic1-1 completed successfully