Kafka 使用

Kafka 需要搭配 zookeeper 使用。
下载 kafka http://mirror.bit.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
 
下载 zookeeper
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
 
环境
Linuxmint 64bit
 
1.  搭建 zookeeper
1.1 上传 zookeeper 到服务器目录
1.2 解压缩 tar -xvf zookeeper-3.4.10.tar.gz
1.3 进入目录 cd zookeeper-3.4.10
1.4 进入 conf 目录,复制 conf-sample.cfg conf.cfg  cp conf-sample.cfg conf.cfg
1.5 启动 zookeeper ../bin/zkServer.sh start &
2.  搭建 kafka
2.1  上传 kafka 到服务器目录
2.2  解压缩 tar -xvf kafka_2.11-1.1.0.tgz
2.3  进入目录 cd kafka_2.11-1.1.0
2.4  修改 config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=$HOME/kafka-server/log
zookeeper.connect=XXX.XXX.XXX.xxx:2181,XXX.XXX.XXX.xxx:2181
2.5    启动 kafka ./bin/kafka-server-start.sh config/server.properties &
 
3. kafka 的使用
3.1  创建 Topic
bin/kafka-topics.sh --zookeeper ZOOKEEPER_SERVER:2181 --create --topic TOPIC_NAME --partitions 1 --replication-factor 2
3.2  查看 Topic
 bin/kafka-topics.sh --list --zookeeper ZOOKEEPER_SERVER1:2181, ZOOKEEPER_SERVER2:2181

3.3  查看 Topic 属性
bin/kafka-topics.sh --zookeeper ZOOKEEPER_SERVER1:2181,ZOOKEEPER_SERVER2:2181 --describe --topic TOPIC_NAME

3.4  创建一个消费者
bin/kafka-console-consumer.sh --bootstrap-server KAFKA_SERVER1:9092 --topic TOPIC_NAME--from-beginning

3.5  创建一个生成者
另起一个终端,执行
bin/kafka-console-producer.sh --broker-list  KAFKA_SERVER1:9092 --topic TOPIC_NAME

输入,在消费者终端中查看结果
 
 
4.  出现的问题和解决方式
4.1 启动 kafka 时出现错误:
 
在连接的 zookeeper 上,已经在运行一个 brokerids=2 kafka 服务进程了。需要修改 brokerids 为其他的数字。
修改的时候后,需要注意同时修改 $(log.dirs)/meta.properties 中的 borkerids
查看哪个运行了 bokerids=2 ,使用命令
bin/zookeeper-shell.sh localhost:2181 <<< "get /brokers/ids/2"
 
4.2 启动 kafka 时出现错误: 【未解决】
zookeper和kafka的版本不匹配,会出现这样的问题。尽量用kafka带的哪个zookeeper,就不会这样了
 
 
[2018-05-29 16:08:19,010] ERROR Closing socket for 10.124.142.169:9093-10.124.142.169:15480 because of error (kafka.network.Processor)
org.apache.kafka.common.errors.InvalidRequestException: Error getting request for apiKey: 6 and apiVersion: 4
Caused by: java.lang.IllegalArgumentException: Invalid version for API key UPDATE_METADATA_KEY: 4
 
4.3 启动 kafka 时出现错误:
[2018-05-29 15:35:37,274] ERROR Processor got uncaught exception. (kafka.network.Processor)
java.lang.ArrayIndexOutOfBoundsException: 18
        at org.apache.kafka.common.protocol.ApiKeys.forId(ApiKeys.java:68)
 
[2018-05-29 15:46:59,599] ERROR Closing socket for 10.124.142.169:9093-10.124.142.169:61197 because of error (kafka.network.Processor)
org.apache.kafka.common.errors.InvalidRequestException: Error getting request for apiKey: 6 and apiVersion: 4
Caused by: java.lang.IllegalArgumentException: Invalid version for API key 6: 4
 
4.4 查看 Topic ,Leader 错误: 【不知道怎么解决的,自己好了】
leader为-1,说明对应的kafka或者zookeeper服务死掉了,这个时候需要去重新启动zookeeper或者kafka服务。
 
Topic:34_53     PartitionCount:1        ReplicationFactor:2     Configs:
        Topic: 34_53    Partition: 0     Leader: -1       Replicas: 2,0   Isr: 2,0
 
Topic:34_53     PartitionCount:1        ReplicationFactor:2     Configs:
        Topic: 34_53    Partition: 0     Leader: none       Replicas: 2,0   Isr:
 
 
为避免在注销或者屏保的时候,脚本停止运行,需要使用nohup运行脚本程序;单纯的加&只是让程序后台运行,在注销或者屏保的时候,脚本仍然会停止:
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > zookeeper-server.out 2>&1 &
nohup bin/kafka-server-start.sh config/server.properties > kafka-server.out 2>&1 &

你可能感兴趣的:(kafka,C++,Ubuntu)