1、首先安装Java 1.8版本,配置环境变量
2、下载kafka文件,在官网下载即可,下载地址如下:
http://kafka.apache.org/downloads.html
3、解压完成后进行properties文件配置:
1)找到config/server.properties,在文件中
#listeners=PLAINTEXT://:9092下添加
advertised.listeners = PLAINTEXT://localhost:9092
advertised.listeners = PLAINTEXT://127.0.0.1:9092(重点标注,后面详解)
注:一般场景下只配置listeners即可,在IaaS场景下,比如Kafka集群内部通讯走内网,而对外提供服务的是公网或者隔离网络,则需要配置advertised.listeners。
其他如log.dirs=/tmp/kafka-logs日志文件路径可改可不改
2)找到config/zookeeper.properties对dataDir=/tmp/zookeeper修改为自定义日志路径,也可不修改;至于端口clientPort=2181可自行修改,也可不修改
4、配置完成后,下面针对Windows系统下起服务:
zookeeper与kafka使用的端口是不同的,在步骤3中有体现。
1)启动zookeeper,默认端口使用2181:目的通过集群架构来提供服务
C:\kafka_2.12-2.3.0\bin\windows\zookeeper-server-start.bat C:\kafka_2.12-2.3.0\config\zookeeper.properties
2)启动kafka,默认端口使用9092:一种高吞吐量的分布式发布/订阅消息系统
C:\kafka_2.12-2.3.0\bin\windows\kafka-server-start.bat C:\kafka_2.12-2.3.0\config\server.properties
3)创建topic为test,并查看topic
C:\kafka_2.12-2.3.0\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
C:\kafka_2.12-2.3.0\bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic test
4)创建生产者Producer:
C:\kafka_2.12-2.3.0\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
5)创建消费者Consumer
C:\kafka_2.12-2.3.0\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
5、测试消息的传输:
在Producer输入消息,在相应Consumer控制台即时显示消息:
以上就是kafka的配置全过程,相对来说简单一些,严格按照步骤操作基本没有问题。
利用python操作kafka需要安装相应包,本次使用的是python3.6,安装kafka在外网情况下直接pip install kafka即可,在服务器内部需要下载相应whl文件,地址如下:
https://pypi.org/project/kafka/#files
按照示例建立Producer:
# 先看最简单的场景,生产者生产消息,消费者接收消息,下面是生产者的简单代码。
#--------------------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
msg = "Hello World".encode('utf-8') # 发送内容,必须是bytes类型
print(msg)
producer.send('test', msg, partition=0) # 发送的topic为test
producer.close()
#--------------------------------------------------------------------------------
代码报错如下:
网上解释是说Kafka连接时即使使用IP地址配置,但依旧会使用主机名解析IP地址,那么就配置hosts把服务器主机名都指向本地地址(127.0.0.1),hosts文件需要修改,于是找到windows系统中的hosts文件,位置在C:\Windows\System32\drivers\etc\hosts,在里面加上如下格式内容:
127.0.0.1 localhost,但是还是同样错误。
后来又找到一篇帖子说是要查找并设置listener,配置监听端口,格式:listeners = listener_name://host_name:port,供kafka客户端连接用的ip和端口,例中配置如下:
listeners=PLAINTEXT://127.0.0.1:9092
这也就是在kafka环境配置是在config/server.properties文件中加入advertised.listeners=PLAINTEXT://127.0.0.1:9092的原因。
总体来讲配置python操作kafka的过程不算难,只是没有找对需要修改的地方,下面是python操作kafka的实例:
Producer发送消息:
Consumer消费消息: