Kafka 到底是什么?简单来说,它是一种高吞吐的分布式发布订阅消息系统。传统消息队列能干的活儿——解耦合数据处理、缓存未处理消息——它都能干,而且吞吐率更高,还支持分区、多副本和冗余。正因如此,大规模消息数据处理场景里,Kafka 几乎是标配。
它支持 Ja va 及多种其他语言客户端,跟 Hadoop、Storm、Spark 等大数据工具也能无缝配合。接下来这篇教程,就讲讲在 CentOS 7 上怎么安装、使用 Kafka,包括功能验证和集群的简单配置。
安装 JDK
Kafka 依赖 Zookeeper 来保存配置信息,而 Kafka 和 Zookeeper 都是基于 Ja va 的。所以第一步,先把 JDK 搞定。
从 Oracle 官网下载 JDK 安装包,解压安装:
$ tar zxvf jdk-8u65-linux-x64.tar.gz $ mv jdk1.8.0_65 ja va
然后设置环境变量:
JA VA_HOME=/opt/ja va PATH=$PATH:$JA VA_HOME/bin export JA VA_HOME PATH
当然,你也可以直接用 yum install 装,装完别忘了配置环境变量就行。
安装 Kafka
去 Kafka 官网(https://kafka.apache.org/downloads.html)下载安装包,解压、改名:
tar zxvf kafka_2.11-0.8.2.2.tgz mv kafka_2.11-0.8.2.2 kafka cd kafka
功能验证
装完了?来验证一下能不能跑起来。整个过程分五步:启动 Zookeeper、启动 Kafka 服务、创建 topic、生产消息、消费消息。顺手的事儿。
1. 启动 Zookeeper
Kafka 自带脚本,可以直接启动单节点 Zookeeper 实例:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
2. 启动 Kafka 服务
用 kafka-server-start.sh 启动 Kafka:
bin/kafka-server-start.sh config/server.properties
3. 创建 topic
创建一个单分区单副本的 topic,名字叫 test:
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
4. 产生消息
用 kafka-console-producer.sh 发送一条消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test Hello world!
5. 消费消息
用 kafka-console-consumer.sh 接收消息,并打印到终端:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
这时候,producer 产生的消息和 consumer 消费的消息是同步的,能看到 “Hello world!” 打印出来。

