Kafka 安装及使用

  • Zookeeper 3.4.8
  • Kafka 2.11-0.10.2.1
    • 2.11 表示 Scala 的版本,0.10 表示 Kafka 的版本

data 是本机的 hostname,在所有配置 hostname 的地方都可以配成本机的 IP 地址

Zookeeper

解压安装包

1
2
cd /opt
tar -zxvf zookeeper-3.4.8.tar.gz -C /root/

配置系统环境变量,配置完成后使用 source 命令生效

1
vim /etc/profile
1
export ZOOKEEPER_HOME=/root/zookeeper-3.4.8

配置

1
2
3
4
5
cd /root/zookeeper-3.4.8
mkdir data
cd conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg

dataDir 改为 /root/zookeeper-3.4.8/data,默认情况是 /tmp 目录下,每次 Linux 系统重启后 tmp 目录是要清空的

启动(由于配置了环境变量,这条命令可以在任何地方使用,但是好像启动完成后会在当前目录有一个 zookeeper.out 文件,强迫症患者谨慎选择启动目录)

1
zkServer.sh start

出现以上信息表示 Zookeeper 启动成功,这时候可以使用 jps 命令查看进程,其中标红处的就是 Zookeeper 进程,默认监听 2181 端口

还可以使用 zkServer.sh status 命令查看 zookeeper 的运行状态

Kafka

解压安装包

1
2
cd /opt
tar -zxvf kafka_2.11-0.10.2.1.tgz -C /root/

配置系统环境变量

1
vim /etc/profile
1
export KAFKA_HOME=/root/kafka_2.11-0.10.2.1

配置

1
2
3
4
cd /root/kafka_2.11-0.10.2.1
mkdir kafka-logs
cd config
vim server.properties

需要配置三处

1 在 broker.id下 添加一行配置,将 host.name 配置成本机的 hostname

1
host.name=data

2 修改 log.dirs 的配置为之前创建的文件夹路径

1
/root/kafka_2.11-0.10.2.1/kafka-logs

3 将 zookeeper.connect 改为 data:2181,其实对于 zookeeper 和 kafka 在同一台机器上的情况来说是一回事

启动

1
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties &

jps 查看进程

测试

创建 topic

1
kafka-topics.sh --create --zookeeper data:2181 --replication-factor 1 --partitions 1 --topic hello_topic

查看当前 topic 列表,这里显示出了刚刚创建的 topic:hello_topic

1
kafka-topics.sh --list --zookeeper data:2181

创建一个生产者,向 hello_topic 发送消息

1
kafka-console-producer.sh --broker-list data:9092 --topic hello_topic

创建一个消费者,这需要另起一个终端

1
kafka-console-consumer.sh --bootstrap-server data:9092 --topic hello_topic --from-beginning

注意生产者和消费者启动完成后会停留,这时候可以在生产者终端输入一些任意的文字,消息会很快的发送到消费者终端那里

单节点多 broker 的配置

上面的过程中是在单个节点上配置了单个 broker,如何在单个节点上配置多个 broker 呢?

  • 打开 server.properties 中关于 listeners=PLAINTEXT://:9092 的配置
  • 三个配置文件拷贝自之前修改过的 server.properties,其中需要保持三处不同
    • cp server.properties server-{n}.properties
    • broker.id
    • listeners=PLAINTEXT://:9092 最后的端口
    • log.dirs=/root/kafka_2.11-0.10.2.1/kafka-logs 日志路径
  • 启动时只需要指定各自 broker 的配置文件即可
    • kafka-server-start.sh -daemon $KAFKA_HOME/config/server-{n}.properties &