kafka 的zk启动
bin/zookeeper-server-start.shconfig/zookeeper.properties &
Kafka配置多个zookeeper IP
#设置zookeeper,可连接多个zookeeper服务器
zookeeper.connect=192.168.1.100:2182,192.168.1.100:2183192.168.1.100:2184
创建topic
sh kafka-topics.sh --create --zookeeper 192.168.1.100:2182 --replication-factor 1 --partitions 5 --topic skyguo.test
replication-factor表示该topic需要在不同的broker中保存几份,这里replication-factor设置为2,
运行生产者
sh kafka-console-producer.sh --broker-list 192.168.1.100:9093 --topic skyguo.test
其中--broker-list为broker列表
--broker-list <broker-list> REQUIRED: The broker list stringin
theform HOST1:PORT1,HOST2:PORT2.
运行消费者
sh kafka-console-consumer.sh --zookeeper 192.168.1.100:2182 --from-beginning --topicskyguo.test
创建topic
sh kafka-topics.sh --create --zookeeper 192.168.1.100:2182 --replication-factor 2 --partitions 5 --topicguojunjie
注意 --replication-factor 为备份因子,个数需要小于等于broker个数
同一个topic下的不同parthon的数据是不一样的
查看topic在broker的运行情况(需要上报 每个broker的ip)
sh kafka-topics.sh --zookeeper 192.168.1.100:2182 --describe --topic newjun
Topic:newjun PartitionCount:4 ReplicationFactor:2 Configs:
Topic: newjun Partition: 0 Leader: 2 Replicas: 2,0 Isr: 2,0
Topic: newjun Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1
Topic: newjun Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: newjun Partition: 3 Leader: 2 Replicas: 2,1 Isr: 2,1
这是上面输出的说明。第一行给出了所有分区的总结,此外每一行都是一个分区的信息。因为我们现在在这个topic上只有两个分区,所以就只有两行。
"leader" 负责给定分区中所有的读和写的任务。分区将随即选取一个节点作为leader。
“replicas” 列出了所有当前分区中的副本节点。不论这些节点是否是leader或者是否处于激活状态,都会被列出来。
“isr” 是表示“在同步中”的副本节点的列表。是replicas列表的一个子集,包含了当前处于激活状态的节点,并且leader节点开头。
注意在我们的例子中,节点1该topic仅有的一个分区中的leader节点。
如何对机器上的kafka程序进行监控处理。
查看所有的topic
bin/kafka-topics.sh –list –zookeeper 192.168.1.100:2182
kafka扩容、迁移
shkafka-reassign-partitions.sh --zookeeper 192.168.1.100:2182 --reassignment-json-file comm_partitions-to-move.json -execute comm_partitions-to-move.json是个json文件,文件内容指定了topic,需要的迁移分区及目标分区。
sh kafka-topics.sh --describe --zookeeper 192.168.1.100:2182 --topic 20170320 Topic:20170320 PartitionCount:5 ReplicationFactor:3 Configs:
Topic: 20170320 Partition: 0 Leader: 1 Replicas: 1,3,0 Isr: 1,3,0
Topic: 20170320 Partition: 1 Leader: 3 Replicas: 3,0,1 Isr:3,0,1
Topic: 20170320 Partition: 2 Leader: 0 Replicas: 0,1,3 Isr:0,1,3
Topic: 20170320 Partition: 3 Leader: 1 Replicas: 1,0,3 Isr:1,0,3
Topic: 20170320 Partition: 4 Leader: 3 Replicas: 3,1,0 Isr:3,1,0
格式如下: comm_partitions-to-move.json
{
"version":1,
"partitions":
[
{"topic":"20170320","partition":1,"replicas":[3,4,1]}
]
}
说明将partion1 从 3,0,1,迁移为3,4,1
运行如下命令,查看迁移过程bin/kafka-reassign-partitions.sh --zookeeper host:2181--reassignment-json-file reassignment-node.json --verify
迁kafka 迁移过程中,会出现磁盘io的突增,对机器负载有所影响,建议一次迁移的topic 分区数量不要太多,分批次迁移较为稳妥。
kafka 迁移完成后,需要同时使用verify 命令和describe验证。确保对涉及迁移的分区,leader 是Replicas的其中一个,并且Replicas是迁移后的目标节点,同时,Isr也必须是Replicas的子集。
kafka增加partitions
sh kafka-topics.sh --zookeeper 10.209.24.21:2180 --alter--partitions 6 --topic 20170320
./kafka-topics.sh --zookeeper 10.235.21.169:2182 --describe --topic device.info.new