同样不能结束服务,为了执行其他命令,再开启一个终端;也可以nohup ‘command’ &执行,不过这样看日志方便点
再另一个终端的解压目录下执行bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
上面的命令指定了副本因子为1,暂时不知道有什么用
该命令只是创建一个主题,不会一直输出log,所以可以执行bin/kafka-topics.sh --list --zookeeper localhost:2181
来查看创建的主题;
为了直观看到生产者和消费者之间的关系,这里再开启一个终端,执行bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
;然后会进入交互环境,每输出的一句话,都会进入一个队列中;
再开启一个终端,执行bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
,会看到生产者终端输入的内容,实时在生产者输入的内容,在消费者的终端都能立马看到;
以上的几步建立了一个单节点的kafka服务,如果要实现多节点(最好是3个,因为zookeeper需要三个才能选主);
集群建立与上面操作类似,不过多了几个broker的配置:
cp server.properties ./server-1.properties
cp server.properties ./server-2.properties
然后再修改他们各自id、端口和日志输出log:
```shell config/server-1.properties: broker.id=1 listeners=PLAINTEXT://:9093 log.dir=/tmp/kafka-logs-1
config/server-2.properties: broker.id=2 listeners=PLAINTEXT://:9094 log.dir=/tmp/kafka-logs-2 ``` 启动server、server-1、server-2 执行kafka-server-start.sh脚本并传入服务配置文件:./kafka-server-start.sh ../config/server_name.properties &
记得先重启zookeeper服务;
然后添加一个新主题:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
指定了副本因子为3,正好是broker节点的个数;
通过bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
命令查看刚刚创建的主题; leader是server.properties的broker.id,随机选举的;
replicas是broker节点记录的副本,不管他们是否还可用;
isr是in-sync的副本集合,也就是replicas的子集,这里面的节点都是可用的;
我本地上的这三项的值和例子里面的就不一样;是随机的
当杀死leader对应broker进程后,在看该topic下的信息,发现leader易主并且replicas没变,而Isr变少了缺少了杀死的brokerId;
然而该主题还是可以生产和消费,666
除了通过生产者将数据写到主题,还可以通过将文本文件导入主题……
你看那个人好像一条狗啊