最近一个项目要使用到kafka,所以看了一些资料,总结了一下单机的安装方法。

一、1个broker

1.官网下载kafka

wget  http://mirrors.cnnic.cn/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz 
cd kafka_2.11-0.8.2.1

2.启动zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &

3.启动kafka server
bin/kafka-server-start.sh config/server.properties &

4.创建topic
bin/kafka-topics.sh --create  --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看创建topics是否成功
bin/kafka-topics.sh --list --zookeeper localhost:2181
查看topics详细信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181

5.启动producer
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
6.启动consumer
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
在producer窗口输入信息,回车后,在consumer窗口可以看到。注意到这里,启动producer时,使用的是kafka的端口;而启动consumer时,使用的是zookeeper的端口。

二、多个brokers(单机)
1.设置配置文件
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-1.properties
config/server-1.properties
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1

config/server-2.properties
broker.id=1
port=9094
log.dir=/tmp/kafka-logs-2
broker.id是每个broker唯一且永久的标识,因为当前所有broker都部署在一台机器上,所以需要修改port和log.dir。

2.启动这两台broker
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &

3.创建topic,设置replication-factor为3
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

4.通过describe命令查看topic的详细信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:test PartitionCount:1 ReplicationFactor:1 Configs:
	Topic: test	Partition: 0	Leader: 0	Replicas: 0	Isr: 0
第一行是所有partition的一个summary,下面的每一行是每个partition的具体信息。因为我们这里只有一个partition,所以只有一行。
leader:负责所有的read-write请求。
replicas:消息备份的节点(不管节点是否是leader,或者是否alive)。
isr:in-sync replicas。是replicas的一个子集。是指replicas中状态为alive的节点。

5.发布消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
6.消费消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic

7.测试容错性
在第4步中看到,leader是节点1,现在把这个进程关闭。
ps -ef | grep server-1.properties
kill -9 14576
通过describe命令再次查看,可以看到leader已经变成了节点2,isr列表中也没有了节点1。 但是这都不影响消息的消费。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐