基本操做 java
本節將列一下在Kafka集羣上的最經常使用的操做。全部在本節被提到的工做均可以$KAFKA_HOME/bin目錄下找到;而且每一個工具都會較詳細的打印命令的全部可能的選項。 shell
添加和移除Topic 工具
你能夠手動建立一個Topic也能夠在第一次向某個Topic發送消息的時候由Kafka自動建立。若是Topic是被自動建立的話,你能夠須要手動對一些配置項進行調優。 spa
添加和修改Topic工具: 命令行
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name --partitions 20 --replication-factor 3 --config x=y
replication factor控制有多少個server將會複製各條被寫入Topic的消息。若是該值爲3,那麼能夠有2臺server中止工做的狀況下,消費端以訪問到消息。咱們建議你設置該值爲2或者3,這樣就能夠在重啓服務時而不影響消費端消費數據。 code
partition count控制該Topic會有多少個分片。首先每一個parition應該在單獨的一臺server上。因此若是你有20個partions,那麼這個Topic的整個數據集針會被很少於20個server去處理(不考慮數據備份)。最終partition count會影響消費端的最大並行數。將會在後臺詳細討論這個參數。 server
跟在命令行後面的參數將會覆蓋掉Kafka配置的默認參數。 kafka
修改Topic hash
你能夠經過一樣的命令修改Topic的配置的partition。 it
添加partition命令以下:
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --partitions 40
請注意當按必定的語義來區分partion的狀況,添加partion並不會修改當前partition中已經存在的值,這可能使依賴某個partion進行消費消息的消費端。也就是說若是數據被經過 hash(key)%number_of_partitions 進行分區的話,那麼在添加partion後,數據將會被按key進行從新放入不一樣的partion,不過Kafka將不會嘗試去自動從新分佈已經存在的數據。
添加配置項: bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --config x=y 刪除配置項: bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --deleteConfig x 刪除Topic bin/kafka-topics.sh --zookeeper zk_host:port/chroot --delete --topic my_topic_name
默認狀況下是不能刪除Topic,若是須要刪除Topic的話,請在配置文件裏設置以下屬性
delete.topic.enable=true
Kafka當前不支持減小partition和修改replication factor的操做