安装篇
环境介绍
项目 | 说明 |
---|---|
操作系统 | CentOS7 任意版本均可 |
JDK版本 | jdk1.8 (小版本不作要求,jdk-8u65-linux-x64.rpm) |
kafak版本 | 2.11(其他版本应该也行,kafka_2.11-2.4.1.tgz) |
zookeeper版本 | 3.4.14(其他版本应该也行,zookeeper-3.4.14.tar.gz) |
安装jdk
百度安装即可,参考:
CentOS 7.2 安装JDK1.8(rpm版): https://blog.csdn.net/lpch0825/article/details/79542049.
安装之后,验证一下环境变量已经生效,如图
安装zookeeper服务
百度即可,很多教程,参考
https://blog.csdn.net/u012430402/article/details/82694473
启动ZooKeeper服务器
cd zookeeper安装目录
$ cd /你的路径/zookeeper/
$ bin/zkServer.sh start
停止Zookeeper服务器
cd zookeeper安装目录
$ bin/zkServer.sh stop
安装Kafka
去官网下载安装包,进行下述操作
tar zxvf kafka_2.11-2.4.1.tgz
mv kafka_2.11-2.4.1 kafka 改名为了好记,不改也行
cd kafka
启动服务器
$ bin/kafka-server-start.sh config/server.properties
注意:配置文件中listeners=PLAINTEXT://x.x.x.x:9092,默认是localhost,导致外界程序无法连接到kafak
创建topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181 test
使用ip创建(推荐)
bin/kafka-topics.sh --create --zookeeper 192.168.24.129:2181/kafka100 --topic topic-test3 --replication-factor 2 --partitions 4 --config key=value
进入生产者CLI
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
进入消费者CLI
bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.90:9092 --topic test --from-beginning
停止服务器
$ bin/kafka-server-stop.sh config/server.properties
python简单操作kafak
使用pycharm,进行操作
【生产者】
import json
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='192.168.24.129')
# producer = KafkaProducer(bootstrap_servers='192.168.24.129:9092')
msg_dict = {
"sleep_time": 10,
"db_config": {
"database": "test_1",
"host": "host ip",
"user": "root",
"password": "root"
},
"table": "msg",
"msg": "Hello World"
}
msg = json.dumps(msg_dict).encode('utf-8') # # 发送内容,必须是bytes类型
producer.send('test', msg, partition=0) # topic
producer.close()
此处若遇到错误:pykafka的NoBrokersAvailableError
原因是,kafak的配置文件,server.properties ,中没有手动修改为IP,修改一下,重启kafak服务就行了,如下图
【消费者】
from kafka import KafkaConsumer
consumer = KafkaConsumer('test', bootstrap_servers=['192.168.24.129'])
for msg in consumer:
recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
print(recv)
效果图:
生产者:执行生产者代码,会产生一条消息,可以只用linux命令行快速生产消息
消费者: