日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Kafka Rebalancer工具介紹

本文為您介紹使用Kafka Rebalancer工具的注意事項(xiàng)、常用參數(shù)以及使用示例。本文以EMR Kafka 2.4.1版本為例。

背景信息

在使用Kafka集群過程中,常常會(huì)碰到以下問題:

  • leader分區(qū)不均衡:導(dǎo)致各個(gè)Broker負(fù)載不均衡,讀寫吞吐下降。

  • Borker分區(qū)數(shù)據(jù)量的不均衡:導(dǎo)致部分機(jī)器的磁盤利用率明顯高于集群平均值,增加Broker宕機(jī)的風(fēng)險(xiǎn)。

  • 節(jié)點(diǎn)內(nèi)磁盤間的利用率不均衡:部分磁盤的利用率明顯高于節(jié)點(diǎn)磁盤的平均利用率,增加了副本offline甚至Broker宕機(jī)的風(fēng)險(xiǎn)。

  • 熱點(diǎn)Topic:導(dǎo)致相應(yīng)地磁盤load不均衡。

當(dāng)出現(xiàn)上述問題時(shí),通常需要進(jìn)行負(fù)載均衡操作。進(jìn)行負(fù)載均衡通常需要進(jìn)行l(wèi)eader的重新分配和分區(qū)reassign等操作。Kafka提供的kafka-preferred-replica-election.sh和kafka-reassign-partitions.sh等工具可以進(jìn)行此類負(fù)載均衡操作,但是這些工具需要進(jìn)行較多配置操作,增加了運(yùn)維工作量和難度。

EMR Kafka提供的Rebalancer工具封裝了kafka-preferred-replica-election.sh和kafka-reassign-partitions.sh等工具,簡(jiǎn)化了運(yùn)維工作量和難度,不會(huì)影響相應(yīng)被封裝工具的使用,您仍然可以使用相關(guān)工具進(jìn)行運(yùn)維工作。

注意事項(xiàng)

  • 在使用工具的時(shí)候,需要對(duì)運(yùn)維流量進(jìn)行限制。

  • 由于Rebalancer工具根據(jù)相應(yīng)的選項(xiàng)生成reassignment的JSON文件,需要對(duì)生成的文件進(jìn)行確認(rèn)以確保與預(yù)期的分配結(jié)果一致。

  • 對(duì)于較多的分區(qū)副本復(fù)制和移動(dòng)操作,您應(yīng)該評(píng)估運(yùn)維時(shí)長(zhǎng)以決定是否使用該工具進(jìn)行運(yùn)維。如果運(yùn)維時(shí)間過長(zhǎng),您可以直接使用kafka-reassign-partitions.sh工具對(duì)運(yùn)維任務(wù)進(jìn)行拆分以便分時(shí)段進(jìn)行運(yùn)維。

  • 需要借助kafka-reassign-partitions.sh工具對(duì)運(yùn)維的過程進(jìn)行監(jiān)控,因此需要注意手工保存reassignment的JSON文件,該文件將用作kafka-reassign-partitions.sh的verify輸入?yún)?shù)。

Rebalancer工具功能

在EMR集群Broker的ECS實(shí)例上,可以直接輸入kafka-rebalancer.sh來查看該腳本工具的功能。

  • preferred-election:均衡leadership,需要輸入Topic參數(shù)、對(duì)指定的Topic進(jìn)行preferred election,詳情請(qǐng)參見preferred-election

    該功能對(duì)kafka-preferred-replica-election.sh工具進(jìn)行了封裝。

  • balance-disks:基于磁盤空間使用率均衡節(jié)點(diǎn)內(nèi)的磁盤分區(qū)副本分配,詳情請(qǐng)參見balance-disks。

  • rebalance:基于磁盤空間使用率均衡集群節(jié)點(diǎn)之間的磁盤分區(qū)副本分配,詳情請(qǐng)參見rebalance。

  • remove-broker-ids:移除指定Broker列表的所有分區(qū)副本。移除副本后,可以對(duì)Broker進(jìn)行下線操作,詳情請(qǐng)參見remove-broker-ids。

preferred-election

當(dāng)分區(qū)副本leader不在preferred的Broker節(jié)點(diǎn)上時(shí),有可能造成節(jié)點(diǎn)負(fù)載不均衡,此時(shí)需要均衡leadership。

重要參數(shù)

參數(shù)

描述

topics

待preferred election的topics。

zookeeper

Kafka使用的ZooKeeper地址。EMR 5.x系列版本,由于不再直接支持以ZooKeeper地址方式與Kafka集群連接,因此無需使用--zookeeper參數(shù),直接使用--bootstrap-server即可。

示例

觸發(fā)preferred-election操作:

  1. 創(chuàng)建測(cè)試Topic。

    kafka-topics.sh --create --topic elelction-topic --bootstrap-server core-1-1:9092 --replication-factor 2 --partitions 50
  2. 對(duì)測(cè)試Topic進(jìn)行選舉操作。

    kafka-rebalancer.sh --zookeeper master-1-1:2181/emr-kafka --preferred-election --bootstrap-server core-1-1:9092 --topics elelction-topic

balance-disks

該功能用于均衡節(jié)點(diǎn)內(nèi)的磁盤分區(qū)副本分配,是對(duì)kafka-reassign-partitions.sh相應(yīng)功能的封裝。與kafka-reassign-partitions.sh不同的地方在于,Rebalancer工具會(huì)基于磁盤空間使用率自動(dòng)生成同一Broker節(jié)點(diǎn)內(nèi)的分區(qū)副本分配文件。

重要參數(shù)

參數(shù)

描述

replica-alter-log-dirs-throttle

限流參數(shù),用來限制Broker內(nèi)副本log目錄遷移過程的遷移流量。

說明

您在使用該功能時(shí),請(qǐng)?jiān)O(shè)置合理的限流參數(shù),避免因?yàn)橘Y源爭(zhēng)搶導(dǎo)致正常業(yè)務(wù)流量受到影響。

threshold

磁盤使用率偏移閾值,只有當(dāng)Broker內(nèi)部的各個(gè)磁盤使用率的差異大于該閾值時(shí),才會(huì)觸發(fā)實(shí)際的副本Broker內(nèi)部磁盤遷移操作,默認(rèn)值為0.1。

zookeeper

Kafka使用的ZooKeeper地址。EMR 5.x系列版本,由于不再直接支持以ZooKeeper地址方式與Kafka集群連接,因此無需使用--zookeeper參數(shù),直接使用--bootstrap-server即可。

示例

  1. 使用kafka-rebalancer.sh觸發(fā)balance disks操作。

    1. 創(chuàng)建測(cè)試Topic。

      kafka-topics.sh --create --topic balance-disks-topic --bootstrap-server core-1-1:9092 --replication-factor 2 --partitions 50
    2. 移動(dòng)Broker 0 Topic分區(qū)副本在磁盤的位置,模擬磁盤不均衡的場(chǎng)景。

      mv /mnt/disk1/kafka/log/balance-disks-topic-* /mnt/disk2/kafka/log/
      mv /mnt/disk3/kafka/log/balance-disks-topic-* /mnt/disk4/kafka/log/

      執(zhí)行完上述模擬命令后,您需要重啟對(duì)應(yīng)節(jié)點(diǎn)以使模擬操作生效。

    3. 寫入測(cè)試數(shù)據(jù)。

      kafka-producer-perf-test.sh --producer-props bootstrap.servers=core-1-1:9092 --num-records 70000000 --throughput 200000 --record-size 1000 --topic balance-disks-topic
    4. 均衡Broker 0上的磁盤。

      kafka-rebalancer.sh --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --balance-disks 0 --replica-alter-log-dirs-throttle 50000000 --threshold 0.1

      保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中。

      重要
      • 需要保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中,用作之后校驗(yàn)過程的reassignment-json-file的參數(shù)值。

      • 由于使用了限流參數(shù),遷移完成后,需要用kafka-reassign-partitions.sh工具verify選項(xiàng)去除設(shè)置在Topic以及Broker上的限流config參數(shù)。

  2. 監(jiān)控檢查balance disk過程。

    您可以使用kafka-configs.sh工具進(jìn)行限流參數(shù)確認(rèn),使用kafka-reassign-partitions.sh工具對(duì)遷移的進(jìn)度進(jìn)行確認(rèn)。

    1. 查看限流參數(shù)是否生效。

      kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 0 --describe
    2. 查看balance disk任務(wù)。

      kafka-reassign-partitions.sh --verify --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --reassignment-json-file move.json
      說明

      輸入的參數(shù)move.json步驟1中保存的move.json文件。

rebalance

該功能基于磁盤空間使用率,均衡集群節(jié)點(diǎn)之間的磁盤分區(qū)副本分配,是對(duì)kafka-reassign-partitions.sh相應(yīng)功能的封裝。與kafka-reassign-partitions.sh不同的地方在于,Rebalancer會(huì)基于磁盤的空間使用率自動(dòng)生成分區(qū)副本的節(jié)點(diǎn)間分配文件。

重要參數(shù)

參數(shù)

描述

throttle

限流參數(shù),用來限制reassign過程的遷移流量。

說明

您在使用該功能時(shí),請(qǐng)?jiān)O(shè)置合理的限流參數(shù),避免因?yàn)橘Y源爭(zhēng)搶導(dǎo)致正常業(yè)務(wù)流量受到影響。

threshold

磁盤使用率偏移閾值,只有當(dāng)Broker內(nèi)部的各個(gè)磁盤使用率的差異大于該閾值時(shí),才會(huì)觸發(fā)實(shí)際的rebalance操作,默認(rèn)值為10%。

zookeeper

Kafka使用的ZooKeeper地址。EMR 5.x系列版本,由于不再直接支持以ZooKeeper地址方式與Kafka集群連接,因此無需使用--zookeeper參數(shù),直接使用--bootstrap-server即可。

示例

  1. 使用kafka-rebalancer.sh觸發(fā)rebalance操作。

    1. 創(chuàng)建測(cè)試Topic。

      kafka-topics.sh --create --topic rebalance-topic  --bootstrap-server core-1-1:9092 --replica-assignment 0:1,0:1,0:1,0:1,0:1,0:1,0:1,0:1,0:1,0:1
    2. 寫入測(cè)試數(shù)據(jù)。

      kafka-producer-perf-test.sh --topic rebalance-topic --num-records 7000000 --throughput 200000 --producer-props bootstrap.servers=core-1-1:9092 --record-size 1000
    3. 執(zhí)行rebalance任務(wù)。

      kafka-rebalancer.sh --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --rebalance --throttle 100000000 --threshold 0.1

      保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中。

      重要
      • 需要保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中,用作之后校驗(yàn)過程的reassignment-json-file的參數(shù)值。

      • 由于使用了限流參數(shù),遷移完成后,需要用kafka-reassign-partitions.sh工具verify選項(xiàng)去除設(shè)置在Topic以及Broker上的限流config參數(shù)。

  2. 監(jiān)控檢查rebalance過程。

    您可以使用kafka-configs.sh工具進(jìn)行限流參數(shù)確認(rèn),使用kafka-reassign-partitions.sh工具對(duì)遷移的進(jìn)度進(jìn)行確認(rèn)。

    1. 查看限流參數(shù)是否生效。

      kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 0 --describe
      kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name rebalance-topic --describe
    2. 查看reassign任務(wù)。

      kafka-reassign-partitions.sh --verify --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --reassignment-json-file move.json
      說明

      輸入的參數(shù)move.json步驟1中保存的move.json文件。

remove-broker-ids

該功能用于移除指定Broker列表的所有分區(qū)副本。當(dāng)您想要下線某個(gè)節(jié)點(diǎn)的時(shí)候,可以使用該功能,先將該節(jié)點(diǎn)上的所有分區(qū)副本移到其他Broker節(jié)點(diǎn)上。

通常Topic分區(qū)會(huì)被設(shè)置成3副本,因此一個(gè)集群通過需要保留3個(gè)Broker節(jié)點(diǎn),不建議您在4個(gè)以下Broker節(jié)點(diǎn)規(guī)模的Kafka集群上執(zhí)行下線Broker節(jié)點(diǎn)的操作。

重要參數(shù)

參數(shù)

描述

throttle

限流參數(shù),用來限制reassign過程的遷移流量。

說明

您在使用該功能時(shí),請(qǐng)?jiān)O(shè)置合理的限流參數(shù),避免因?yàn)橘Y源爭(zhēng)搶導(dǎo)致正常業(yè)務(wù)流量受到影響。

zookeeper

Kafka使用的ZooKeeper地址。EMR 5.x系列版本,由于不再直接支持以ZooKeeper地址方式與Kafka集群連接,因此無需使用--zookeeper參數(shù),直接使用--bootstrap-server即可。

示例

  1. 使用kafka-rebalancer.sh觸發(fā)remove Broker操作。

    1. 創(chuàng)建測(cè)試Topic。

      kafka-topics.sh --create --topic decommission-topic --partitions 50 --replication-factor 2 --bootstrap-server core-1-1:9092
    2. 寫入測(cè)試數(shù)據(jù)。

      kafka-producer-perf-test.sh --topic decommission-topic --num-records 70000000 --throughput 200000 --producer-props bootstrap.servers=core-1-1:9092 --record-size 1000
    3. 將Broker 1上的分區(qū)副本都移除掉。

      kafka-rebalancer.sh --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --remove-broker-ids 1 --throttle 50000000

      保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中。

      重要
      • 需要保存打印在“Current partition replica movement”之后的JSON字符串到文件move.json中,用作之后校驗(yàn)過程的reassignment-json-file的參數(shù)值。

      • 由于使用了限流參數(shù),遷移完成后,需要用kafka-reassign-partitions.sh工具verify選項(xiàng)去除設(shè)置在Topic以及Broker上的限流config參數(shù)。

  2. 監(jiān)控檢查remove過程。

    您可以使用kafka-configs.sh工具進(jìn)行限流參數(shù)確認(rèn),使用kafka-reassign-partitions.sh工具檢查分區(qū)副本遷移過程,使用kafka-log-dirs.sh工具查看待remove的Broker節(jié)點(diǎn)上的分區(qū)副本是否已經(jīng)都遷移到其他節(jié)點(diǎn)。

    1. 查看限流參數(shù)是否生效。

      kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 0 --describe
      kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name decommission-topic --describe
    2. 查看reassign任務(wù)。

      kafka-reassign-partitions.sh --verify --bootstrap-server core-1-1:9092 --zookeeper master-1-1:2181/emr-kafka --reassignment-json-file move.json
      說明

      輸入的參數(shù)move.json步驟1中保存的move.json文件。

    3. remove完成后,確保對(duì)應(yīng)Broker上已經(jīng)沒有分區(qū)副本。

      kafka-log-dirs.sh --bootstrap-server core-1-1:9092 --broker-list 1 --describe