kafka拡張とパーティション再割り当て

2645 ワード

拡張:マシンを増やし、例えば元の3台のサーバのkafkaクラスタを2台増やして5台のマシンのkafkaクラスタになり、構築と差が少ない
パーティション再割り当て:元のマシン上のトピックパーティションは自動的に新しいマシンに均等化されません.パーティション再割り当てツールを使用して均等化する必要があります.
公式ドキュメントアドレスの再割り当て:クリックしてリンクを開く
公式のドキュメントの中国語の住所を訳します:クリックしてリンクを開けます
上記の2つのリンクのドキュメントは詳細に説明されています.ここで重要なステップを記録し、実際に操作した後の問題と新しい知識の理解を総括する.
主な手順
1、割り当てパーティションを再起動するテーマを確定し、topics-to-moveを新規作成する.json jsonファイル
 
{
  "topics": [
    {"topic": "foo1"},
    {"topic": "foo2"}
  ],
  "version":1
}
// foo1 foo2          
、bin/kafka-reassign-partitionsを使用する.sh再割当ツールは割当ルールを生成するjson文を5,6マシンに割り当てる
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file topics-to-move.json --broker-list "5,6"  –generate
3、割当ルールのあるjson文をコンソールに出力し、新しいjsonファイルexpand-cluster-reassignmentにコピーする.jsonでは、次のようになります.
{"version":1,
  "partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},
 		{"topic":"foo1","partition":1,"replicas":[5,6]},
                {"topic":"foo1","partition":2,"replicas":[5,6]},
                {"topic":"foo2","partition":0,"replicas":[5,6]},
                {"topic":"foo2","partition":1,"replicas":[5,6]},
                {"topic":"foo2","partition":2,"replicas":[5,6]}]
}

//             
4、コマンドを実行し、パーティション再割り当てを開始する
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json –execute
5、検証が完了したかどうか
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json –verify
//       completed successfully        .

操作の3つのテクニック:
1、最初のステップと2番目のステップを必要とせずに、割り当てられたjsonファイルを手動で新規作成できます.
2、テーマの量が多いのは、一つ一つコピーして貼らないことです.excelの綴り関数を使うと、やはり便利です
3、最終的な検証では、トピックが多い場合、未完了の出力文に混在することが多い.文の後ろに|grep-c「progress」を付けると、どのくらいのパーティションが完了していないかがわかり、出力が0のときに完了します.
総括と知識点の理解
1、kafkaがトピックを新規作成するときのパーティション割り当てポリシー:最初のパーティションノードをランダムに選択し、その後、順次追加します.例えば、1番目のパーティションが1である、2番目のパーティションが2であり、3番目のパーティションが3である.1,2,3はbrokeridです.ロードバランシングはしないので、パーティション操作を手動で再割り当てし、できるだけバランシングします.
2、生産と同時にデータ移行を行うと重複データが発生する.したがって、移行時に重複生産データを回避するには、移行トピックの生産を停止する必要があります.同時に消費できないし、同時に消費した後に短いリーダーの報告ミスが発生し、自動的に回復する.
3、brokerノードが追加されました.テーマのパーティションが追加されたノードにある場合、生産と消費のクライアントはhostsプロファイルに追加のbrokerノードを追加する必要があります.そうしないと、生産消費はできませんが、エラーも報告されません.