swsrl 发表于 2017-5-23 17:25:03

kafka Reassign Partitions Tool

kafka 0.8增加了重新分配partition功能,进行扩容,增加减少replica,移动partition
kafka-reassign-partitions.sh脚本
 
Option                                  Description                            
------                                  -----------                            
--broker-list <brokerlist>              The list of brokers to which the       
                                          partitions need to be reassigned in  
                                          the form "0,1,2". This is required   
                                          if --topics-to-move-json-file is     
                                          used to generate reassignment        
                                          configuration                        
--execute                               Kick off the reassignment as specified 
                                          by the --reassignment-json-file      
                                          option.                              
--generate                              Generate a candidate partition         
                                          reassignment configuration. Note     
                                          that this only generates a candidate 
                                          assignment, it does not execute it.  
--reassignment-json-file <manual        The JSON file with the partition       
  assignment json file path>              reassignment configurationThe format 
                                          to use is -                          
                                        {"partitions":                         
                                                [{"topic": "foo",                     
                                                  "partition": 1,                     
                                                  "replicas": }],             
                                        "version":1                            
                                        }                                      
--topics-to-move-json-file <topics to   Generate a reassignment configuration  
  reassign json file path>                to move the partitions of the        
                                          specified topics to the list of      
                                          brokers specified by the --broker-   
                                          list option. The format to use is -  
                                        {"topics":                             
                                                [{"topic": "foo"},{"topic": "foo1"}], 
                                        "version":1                            
                                        }                                      
--verify                                Verify if the reassignment completed   
                                          as specified by the --reassignment-  
                                          json-file option.                    
--zookeeper <urls>                      REQUIRED: The connection string for    
                                          the zookeeper connection in the form 
                                          host:port. Multiple URLS can be      
                                          given to allow fail-over.   
 
 
narkhed$ cat partitions-to-move.json  
 {"partitions":
                                            [{"topic": "foo",
                                              "partition": 1,
                                              "replicas": }],
                                        "version":1
                                        }
    
    
    
bin/kafka-reassign-partitions.sh --topics-to-move-json-file dirk_topic_move.json  --zookeeper host34/kafka-dirktest --broker-list "0341,0361" --generate
生成将topic dirkzhang放到341和361上的json,用json执行execute就可以了
Current partition replica assignment
 
{"version":1,"partitions":[{"topic":"dirkzhang","partition":6,"replicas":},{"topic":"dirkzhang","partition":0,"replicas":},{"topic":"dirkzhang","partition":5,"replicas":},{"topic":"dirkzhang","partition":4,"replicas":},{"topic":"dirkzhang","partition":3,"replicas":},{"topic":"dirkzhang","partition":7,"replicas":},{"topic":"dirkzhang","partition":1,"replicas":},{"topic":"dirkzhang","partition":2,"replicas":}]}
 
Proposed partition reassignment configuration
 
{"version":1,"partitions":[{"topic":"dirkzhang","partition":6,"replicas":},{"topic":"dirkzhang","partition":5,"replicas":},{"topic":"dirkzhang","partition":0,"replicas":},{"topic":"dirkzhang","partition":4,"replicas":},{"topic":"dirkzhang","partition":3,"replicas":},{"topic":"dirkzhang","partition":1,"replicas":},{"topic":"dirkzhang","partition":7,"replicas":},{"topic":"dirkzhang","partition":2,"replicas":}]}                                        
                                        
 -----------------------------------------------------------------                                       
                                        
bin/kafka-reassign-partitions.sh --zookeeper host34/kafka-dirktest --reassignment-json-file dirk_move_partition.json --execute
将partition0,1的replica放到341,371上(brokerid前边不能有零,是int)
dirk_move_partition.json:
{"version":1,"partitions":
[{"topic":"dirkzhang",
  "partition":0,
  "replicas":
},
{"topic":"dirkzhang",
"partition":1,
"replicas":
}]
}
 
------------------------------------------------
用verify检查是否迁移成功
  bin/kafka-reassign-partitions.sh --reassignment-json-file dirk_move_partition.json  --zookeeper host34/kafka-dirktest --verify
  Status of partition reassignment:
  Reassignment of partition completed successfully
  ----------------------------------------------------
  收集replica迁移,选leader的日志
  bin/kafka-run-class.sh kafka.tools.StateChangeLogMerger
  --end-time <end timestamp in the        The latest timestamp of state change   
  format java.text.                       log entries to be merged (default:   
  SimpleDateFormat@f17a63e7>              9999-12-31 23:59:59,999)             
  --logs <file1,file2,...>                Comma separated list of state change   
  logs or a regex for the log file     
  names                                
  --logs-regex <for example: /tmp/state-  Regex to match the state change log    
  change.log*>                            files to be merged                   
  --partitions <0,1,2,...>                Comma separated list of partition ids  
  whose state change logs should be    
  merged                               
  --start-time <start timestamp in the    The earliest timestamp of state change 
  format java.text.                       log entries to be merged (default:   
  SimpleDateFormat@f17a63e7>              0000-00-00 00:00:00,000)             
  --topic <topic>                         The topic whose state change logs      
  should be merged 
  bin/kafka-run-class.sh kafka.tools.StateChangeLogMerger --topic dirkzhang --partition 0,1,2 --start-time "2015-07-02 00:00:00,000" --end-time "2015-07-03 00:00:00,000" --logs /data/kafka_2.10-0.8.2.1/logs/state-change.log
 
 
 
页: [1]
查看完整版本: kafka Reassign Partitions Tool