Open huoarter opened 3 years ago
#!/usr/bin/env python
#kurong.py
import json
import random
temp={"version":1,"partitions":[]}
result={}
with open('topics_leader.txt',"r") as f:
for line in f:
line_sp=line.strip().split()
topic,partition,broker,rep=line_sp[1],line_sp[3],line_sp[5],line_sp[7]
if len(rep.split(',')) == 2:
b1,b2=rep.split(',')
if b1 in result:
result[b1]+=1
else:
result.setdefault(b1,1)
if b2 in result:
result[b2]+=1
else:
result.setdefault(b2,1)
elif len(rep.split(',')) == 3:
b1,b2,b3=rep.split(',')
if b1 in result:
result[b1]+=1
else:
result.setdefault(b1,1)
if b2 in result:
result[b2]+=1
else:
result.setdefault(b2,1)
if b3 in result:
result[b3]+=1
else:
result.setdefault(b3,1)
else:
if int(broker) == 15:
paritions={"topic":topic,"partition":int(partition),"replicas":[int(broker),1]}
else:
paritions={"topic":topic,"partition":int(partition),"replicas":[int(broker),int(broker)+1]}
temp['partitions'].append(paritions)
print json.dumps(temp)
官方命令行工具
kafka-reassign-partitions --zookeeper prd-zbka-001:2181/kafka/ka --reassignment-json-file topic-reassignment.json --execute --throttle 50000000 (限速bytes/s,50MB/s)
kafka-reassign-partitions --zookeeper prd-zbka-001:2181/kafka/ka --reassignment-json-file topic-reassignment.json --verify
!/usr/bin/env python
import json import random temp={"version":1,"partitions":[]} remove_nodes=[19,18,17,16] def gen_random_node(slist): node = random.randint(1,15) if node in slist: return gen_random_node(slist) else: return node
with open('topics_leader.txt',"r") as f: result = {} for line in f: line_sp=line.strip().split() topic,partition,broker,reps=line_sp[1],line_sp[3],line_sp[5],line_sp[7] reps_l = [] for j in reps.split(","): reps_l.append(int(j)) for i in range(len(reps_l)): if reps_l[i] in remove_nodes: reps_l[i] = gen_random_node(reps_l) result.setdefault(reps_l[i],0) result[reps_l[i]] += 1 paritions={"topic":topic,"partition":int(partition),"replicas":reps_l} temp['partitions'].append(paritions) print json.dumps(temp)
{"version": 1, "partitions": [{"topic": "ItemEvent", "partition": 0, "replicas": [2, 4]}, {"topic": "ItemEvent", "partition": 1, "replicas": [9, 11]}, {"topic": "ItemEvent", "partition": 2, "replicas": [10, 6]}, {"topic": "ItemEvent", "partition": 3, "replicas": [11, 7]}, {"topic": "ItemEvent", "partition": 4, "replicas": [12, 5]}, {"topic": "ItemEvent", "partition": 5, "replicas": [12, 9]}, {"topic": "ItemEvent", "partition": 6, "replicas": [9, 10]}, {"topic": "ItemEvent", "partition": 7, "replicas": [15, 5]}, {"topic": "ItemEvent", "partition": 8, "replicas": [8, 13]}, {"topic": "ItemEventTest", "partition": 0, "replicas": [1]}, {"topic": "ItemEventTest", "partition": 1, "replicas": [3]}, {"topic": "ItemEventTest", "partition": 2, "replicas": [4]}, {"topic": "ItemEventTest", "partition": 3, "replicas": [5]}, {"topic": "ItemEventTest", "partition": 4, "replicas": [6]}, {"topic": "ItemEventTest", "partition": 5, "replicas": [7]}, {"topic": "ItemEventTest", "partition": 6, "replicas": [8]}, {"topic": "ItemEventTest", "partition": 7, "replicas": [9]}, {"topic": "ItemEventTest", "partition": 8, "replicas": [10]}, {"topic": "ItemEventTest", "partition": 9, "replicas": [11]}, {"topic": "ItemEventTest", "partition": 10, "replicas": [12]}, {"topic": "ItemEventTest", "partition": 11, "replicas": [13]}, {"topic": "ItemEventTest", "partition": 12, "replicas": [14]}, {"topic": "ItemEventTest", "partition": 13, "replicas": [15]}, {"topic": "ItemEventTest", "partition": 14, "replicas": [6]}, {"topic": "ItemEventTest", "partition": 15, "replicas": [3]}, {"topic": "ItemEventTest", "partition": 16, "replicas": [5]}]}
kafka-reassign-partitions --zookeeper prd-zbka-003:2181/kafka/ka --reassignment-json-file balance_topics.json --execute --throttle 50000000