kafka安装部署
1、准备
kafka 依赖 zookeeper,要运行kafka,需要先部署zk.(所以先部署好zk先吧)
2、下载 kafka
官网:https://kafka.apache.org/downloads.html
可以下载最新的稳定版本就行
3、
二、kafka 部署
1、单机部署
安装目录为:/home/bigdata/middleware/kafka/kafka_2.13-3.1.0
1、创建几个目录备用(logs & data)
mkdir logs
mkdir data
2、修改配置文件
vim config/server.properties
(注: config 目录下面有很多配置文件,也有 zk 的配置文件,kafka 对应的是这个 server.properties 不小心会弄混)
这儿有一个地方要注意一下:(个人感觉这儿最好是写明确的ip,或明确的 hostname。。。一开始的时候,写的是默认的:listeners=PLAINTEXT://:9092,然后就报了一个错:Kafka 创建topic 超时异常: Timed out waiting for a node assignment 搞了挺久,不熟悉部署,确实会浪费一些时间)
listeners=PLAINTEXT://127.0.0.1:9092
(后续:这个项,注释掉,不要显式提供就可以了。一旦放开注释,就只能指定一个了,不打开这个项的注释,就不会有这样的问题了
3、启动
创建个脚本,方便后续使用:vim start-kafka.sh
启动脚本: ./bin/kafka-server-start.sh config/server.properties >> logs/kafka.log 2>&1 &
4、启动成功:
有这样的字样,表示启动成功:INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
5、试一下,创建一个 topic
一些部署过程中的错误记录:
1、Timed out waiting for a node assignment
报这个错,是因为在配置文件 server.conf 中有一个项 listeners=PLAINTEXT://:9092
刚开始的时候,只放开了这个注释,然后使用默认,
后来发现,这个最好还是指定一下IP,写成: listeners=PLAINTEXT://127.0.0.1:9092,再重启kafka,就好了。
获取 topic 列表:
./bin/kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092 这样是能查得到的了。
2、只能ping通配置的listers的 ip
配置文件中,listeners=PLAINTEXT://127.0.0.1:9092 配置启动后,
在服务器本地执行: telnet 127.0.0.1 9092 成功,但执行 telnet 10.12.xx.xx 9092 就连不通了。
就有点疑惑。
但本地就必须得通过内网ip的方式去访问kafka啊,于是只能把 listeners=PLAINTEXT://10.12.xx.xx:9092 去启动,
于只也只能通过10.12.xx.xx 去连接了, 127.0.0.1 也连不通了,相当奇怪。
一些指令:
创建topic: ./kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --replication-factor 1 --partitions 1 --topic test1
生产者指令:bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --broker-list 127.0.0.1:9092 --topic test
消费者指令:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
消费者指令(指定topic):bin/kafka-console-consumer.sh --bootstrap-server 10.9.13.78:9092 --topic test --group test1
如果消息者指令不指定topic,开启多个,它会按不同groupid 去启动