Kafka安装

218 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

Kafka在以前的版本中,安装是需要依赖ZK的(早期版本的kafka用zk做meta元数据信息存储,consumer的消费状态,group的管理,offset值等),但是在2.8之后就不再需要依赖ZK了,而是内部基于Raft来自己管理了,这里也交代下ZK下的安装。

下载安装包

JDK这些基本环境是必须的。

注意下,kafka和zk的版本最好能对应好,不然可能会出现一些问题。建议配置:

img

配置

  • 配置ZK集群
    • 主要修改:server.properties配置文件
    • zookeeper.connect=node1:2181,node2:2181,node3:2181
    • log.dirs=/xx/env/kafka_2.13-2.8.0/datas/logs
  • 配置kafka集群
    • 主要修改:config/server.properties配置文件
    • broker.id=1:broker.id是kafka broker的编号,每个broker的id需不同
    • log.dir=/data/kafka/log:日志目录
    • zookeeper.connect=localhost:2183:zk的地址

启动

  • 启动ZK

    • bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
      
  • 启动Kafka

    • bin/kafka-server-start.sh  config/server.properties
      

测试

  • 创建 topic

    • bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic XXX
      
    • 这里我们创建了一个top,名为XXX,他只有一个分区和一个副本。我们可以通过下面的命令查看我们所创建的topic

    • 查看topic的信息:bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic XXX

    • 查看所有的topic:bin/kafka-topics.sh --list --zookeeper localhost:2181

  • 发送消息

    • bin/kafka-console-producer.sh --broker-list localhost:9092 --topic XXX
      
    • broker-list 指定了连接的Kafka集群地址【生产者】

    • 输入这行命令后,我们就可以进入生产这的一个shell交互页面(Kafka自带的一个命令行客户端,从文件或标准输入中获取输入,并将其作为message发送到Kafka集群。默认情况下,以单行作为message发送),我们在里面输入文本就被被发送到Kafka的队列里面。

  • 消费消息

    • bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo --from-beginning
      
    • bootstrap-server 指定了连接的 Kafka 集群地址【消费者】

    • --from-beginning 表示每次执行该命令的时候,都从头部开始重新消费。因为kafka有组的概念,同一个组消费过的数据是有offset记录的,下次消费的时候会从上次消费结束为止再进行消费。我们通过该参数可以保证每次都是从头开始消费。

    • 这里开启一个consumer就会不断监听消费者发送到队列里面的消息,然后不断的打印出来。