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 &