2、Kafka安装部署
2.1 kafka的环境配置
安装步骤:后面会讲到,此处只是安装和使用
安装kafka,需要先安装Zookeeper
1,下载zookeeper-3.4.5-cdh5.7.0,配置ZK_HOME
2,进入conf目录
conf目录下默认没有zoo.cfg,需要把zoo_sample.cfg改为zoo.cfg文件
zk启动的时候会加载zoo.cfg
修改dataDir=/xxx(默认为系统tmp目录下,重启后数据会丢失)
3,启动zookeeper
zkServer.sh start #启动zookeeper的服务端
4,利用zkClient连接服务端
zkCli.sh #启动zookeeper的客户端
安装kafka
注:kafka内置了zookeeper,但是一般使用外面的zookeeper不要使用内置的
1,下载Kafka-2.11-1.10.tgz,解压
2,配置KAFKA_HOME
3,config目录下server.properties
broker.id=0 在集群中需要设置为唯一的
zookeeper.connect=localhost:2181
4,启动kafka
kafka-server-start.sh config/server.properties
看到started,说明启动成功
2.2 Kafka的单节点单broker的环境部署
5,创建topic
kafka-topics.sh:创建topic的脚本文件
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
replication-factor:副本数量
partitions:分区数量
出现Created topic "test",说明创建成功
6,显示所有topic
注:查看topic是通过连接zookeeper得到的信息
kafka-topics.sh --list --zookeeper localhost:2181
7,通过生产者发送消息
kafka-console-producer.sh:控制台生产的脚本,生产的数据可以用于测试topic
注:生产者生产信息是交给broker进程的
kafka-console-producer.sh --broker-list localhost:9092 --topic test
8,通过消费者消费消息
kafka-console-consumer.sh:消费者脚本,为了测试topic
注:消费者消费信息也是从broker进程中获取的
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
-from-beginning:从最开始生产队的数据开始消费
9,查看所有topic的详细信息
kafka-topics.sh --describe --zookeeper localhost:2181
10,查看单个topic的详细信息
kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
除了生产者,消费者使用的端口是9092,其余的都是通过连接zookeeper,使用端口2181
2.3 Kafka的单节点多broker的环境部署
1,拷贝server.properties文件
直接复制一份server.properties,在此基础修改,得到一个新的properties配置文件
cp config/server.properties config/server-1.properties
启动多个实例,需要多个properties
2,修改broker.id,为0,1,2
3,修改listeners端口为9092,9093,9094
4,修改log.dirs
5,启动kafka
kafka-server-start.sh -daemon config/serverxxx.properties &
通过不同的配置文件启动多个kafka
6,创建多副本的topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
7,查看多副本topic的详细信息
kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
由于创建了多副本的topic,数据保存在不同的kafka进程中,那么多个kafka进程存在master和slave关系。
以下为详细解释:
Topic: my-replicated-topic Partition: Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
Leader:主broker
Replicas:所有的副本
lsr:保持活动的副本
8,发送消息
注:对接到三个位置,kafka会记录可能接受信息的三个位置,底层只是leader来接收,其他follower会根据对leader的观察,如果发现数据变动了,我会去leader拷贝。
kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic my-replicated-topic
9,消费消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
2.4 Kafka容错性测试
1,查看单节点多broker主题的详细信息
kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
发现三个broker中有一个主broker,两个从broker
2,杀死其中一个从broker的进程
3,继续观察broker主题的详细信息
发现主broker没有改变,存活的broker缺少了一个
4,杀死主broker的进程
5,利用生产者发送消息
6,消费者仍然能收到信息
7,查看broker主题的详细信息
主broker改变为最后存活的那个broker,存活的broker只剩下一个