前提:
centos7.2
已安装了zookeeper,版本为3.4.4 端口号为2181
已安装jdk1.8
1、安装kafka
下载地址
http://kafka.apache.org/downloads.html
我的scale是2.11.6版本,所以我现在饿kafka_2.11-1.1.1
解压安装包
tar -zxvf kafka_2.11-2.1.1.tgz
2、启动kafka
kafka自带zookeeper,可以使用自带的zookeeper,也可以使用外置的zookeeper
如果使用自带的zookeeper,那么要先启动zookeeper
1)启动自带zookeeper
进入bin目录
cd bin
启动zookeeper
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
2)启动外置的zookeeper(zookeeper已经集群)
./zkServer.sh start
如果采用外置zookeeper,就要修改kafka中的配置文件
进入kafka安装目录
vim config/server.properties
修改成下面配置(master,slave1,slave2可以换成ip地址)
zookeeper.connect=master:2181,slave1:2181,slave2:2181
3)配置kafka
进入到config目录
(1)vim server.properties
broker.id=0 每台服务器的broker.id都不能相同 我这里 broker.id 是 0,1,2
host.name=172.16.193.175
zookeeper.connect=master:2181(集群用,号隔开,比如master:2181,slave1:2181,slave2:2181)
advertised.listeners=PLAINTEXT://172.16.193.175:9092
listeners=PLAINTEXT://0.0.0.0:9092
(2)vim consumer.properties
bootstrap.servers=172.16.193.175:9092
(3)vim consumer.properties
bootstrap.servers=172.16.193.175:9092
4)启动kafka
进入bin目录
(1)启动kafka
./kafka-server-start.sh ../config/server.properties
(2)启动kafka,让kafka在后台运行
nohup ./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &
或者
./kafka-server-start.sh -daemon ../config/server.properties
命令说明:
1>/dev/null 2>&1:是将错误2从重定向到标准输出1输入到空设备,也就是不输出的意思。
/dev/null:代 表空设备
nohup:不挂断地运行命令
&:在后台运行
内存不足,kafka默认需要的内存太大,kafka启动不起来
修改kafka启动所需要分配的内存
vim kafka-server-start.sh
改成-Xmx256M -Xms128M
再次启动kafka
5)操作kafka
(1)创建主题
./kafka-topics.sh --create --zookeeper 172.16.193.175:2181 --replication-factor 1 --partitions 1 --topic topic001
(2)查看主题
./kafka-topics.sh --list --zookeeper 172.16.193.175:2181
(3)查看主题详情
./kafka-topics.sh --describe --zookeeper 172.16.193.175:2181 --topic topic001
(4)删除主题
在server.properties文件中加入配置
delete.topic.enable=true
然后删除主题
./kafka-topics.sh --delete --zookeeper 172.16.193.175:2184 --topic topic002-0
(5)生产消息
./kafka-console-producer.sh --broker-list 172.16.193.175:9092 --topic topic001
(6)消费消息
重新打开一个终端
./kafka-console-consumer.sh --bootstrap-server 172.16.193.175:9092 --topic topic001 --from-beginning
异常处理:
1)启动异常
org.apache.kafka.common.KafkaException: Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in another process or thread is using this directory
解决:
(1)关闭kafka
如果是非后台启动直接ctrl+C 或者 ./kafka-server-stop.sh
如果是后台启动 直接 kill -9 进程号
(2)删除/tmp/kafka-logs
(3)重新启动