2. 环境搭建:安装Python、Kafka、Zookeeper,配置开发环境
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多人在这一步卡住,然后怀疑人生。别急,咱们一步步来。
2.1 为什么是这三件套?
你想想看,实时行情流处理,本质上就是「数据生产 → 数据运输 → 数据消费」这条链。Kafka负责运输,Zookeeper负责管着Kafka的集群状态,Python负责写消费逻辑。缺一个都不行。
我个人习惯,先把Python装好,再搞Zookeeper,最后上Kafka。这个顺序最顺,因为后面两个的启动脚本都依赖Python环境做健康检查。
核心逻辑图: 下面这张图,是我画的环境依赖关系,你看一眼就明白了。
2.2 安装Python环境
Python版本我建议用3.8以上。3.6已经EOL了,别用了。我在项目中遇到过因为Python版本太低,kafka-python库死活装不上的情况,折腾了半天才发现是版本问题。
步骤:
- 下载安装包:去python.org下载对应系统的安装包。Windows用户记得勾选「Add Python to PATH」。
- 验证安装:打开终端,输入
python --version,看到版本号就对了。 - 配置虚拟环境:我个人习惯每个项目一个虚拟环境,避免包冲突。
# 创建虚拟环境
python -m venv stock_env
# 激活(Windows)
stock_env\Scripts\activate
# 激活(Mac/Linux)
source stock_env/bin/activate
# 安装依赖
pip install kafka-python pandas numpy
小技巧: 如果你在国内,pip下载慢。可以配个清华镜像:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple。嗯,这招我用了好几年,稳得很。
2.3 安装Zookeeper
Zookeeper说白了就是Kafka的「管家」。它负责告诉Kafka:「哪个Broker活着,哪个挂了,谁是老大」。没有它,Kafka集群就乱套了。
步骤:
- 下载:去Apache官网下载Zookeeper 3.7+的二进制包。
- 解压:放到一个没有中文路径的目录下。
- 配置:复制
conf/zoo_sample.cfg为conf/zoo.cfg,修改数据目录。
# zoo.cfg 核心配置
tickTime=2000
dataDir=/usr/local/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
注意: 我曾经在生产环境遇到过Zookeeper因为磁盘写满而挂掉的情况。dataDir一定要放在有足够空间的分区,最好单独挂一块盘。别问我怎么知道的……
启动:
# 启动Zookeeper
bin/zkServer.sh start
# 检查状态
bin/zkServer.sh status
# 连接测试
bin/zkCli.sh -server 127.0.0.1:2181
启动后,用 zkCli.sh 连上去,输入 ls /,能看到 [zookeeper] 节点,说明成功了。
2.4 安装Kafka
Kafka的安装其实比Zookeeper还简单。解压即用,但配置要小心。
步骤:
- 下载:去Apache Kafka官网下载3.0+版本。注意选二进制包,别下源码包。
- 解压:同样放到无中文路径的目录。
- 配置:修改
config/server.properties。
# server.properties 核心配置
broker.id=0
listeners=PLAINTEXT://localhost:9092
log.dirs=/usr/local/kafka/data
zookeeper.connect=localhost:2181
num.partitions=3
default.replication.factor=1
关键参数说明:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| broker.id | 节点唯一ID | 集群中每个节点必须不同 |
| listeners | 监听地址 | 开发环境用localhost,生产环境用内网IP |
| log.dirs | 数据存储目录 | 确保磁盘空间充足,建议SSD |
| zookeeper.connect | Zookeeper地址 | 多个ZK用逗号分隔 |
| num.partitions | 默认分区数 | 行情数据建议设3-6个分区 |
启动Kafka:
# 启动Kafka
bin/kafka-server-start.sh config/server.properties
# 创建测试主题
bin/kafka-topics.sh --create --topic stock_quotes --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
# 查看主题列表
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
避坑指南: 启动Kafka前,一定要确保Zookeeper已经跑起来了。我曾经犯过这个错——先启动Kafka,结果它连不上ZK,一直报错。顺序很重要:先ZK,后Kafka。
2.5 验证整个链路
环境搭好了,咱们得跑个「Hello World」验证一下。写个简单的Python生产者+消费者脚本。
# producer.py
from kafka import KafkaProducer
import json, time
producer = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.dumps(v).encode('utf-8')
)
data = {'symbol': 'AAPL', 'price': 150.25, 'volume': 1000}
producer.send('stock_quotes', value=data)
producer.flush()
print("消息已发送")
# consumer.py
from kafka import KafkaConsumer
import json
consumer = KafkaConsumer(
'stock_quotes',
bootstrap_servers='localhost:9092',
auto_offset_reset='earliest',
value_deserializer=lambda m: json.loads(m.decode('utf-8'))
)
for msg in consumer:
print(f"收到行情: {msg.value}")
先跑consumer,再跑producer。如果看到控制台打印出行情数据,恭喜你,环境搭建成功了!
常见问题: 如果consumer收不到消息,检查一下防火墙是不是把9092端口封了。Windows用户尤其要注意,我帮同事排查过好几次这个问题,最后发现都是防火墙惹的祸。
2.6 开发环境配置建议
最后聊点开发工具的事。我个人习惯用VS Code,配上Python插件和Kafka插件,写代码和调试都很方便。
- VS Code插件:Python、Pylance、Kafka(用于浏览主题和消息)
- 终端工具:Windows用Git Bash或PowerShell,Mac/Linux用自带终端
- 版本管理:建议用Git管理代码,.gitignore记得加上虚拟环境目录
嗯,环境搭建这块就到这。工具都备齐了,后面咱们就可以真正开始写流处理代码了。