Kafka | 入门

Kafka 简介

  • 下载地址:http://kafka.apache.org/downloads.html
  • Kafka 是一个分布式基于发布/订阅模式的消息队列,主要用于大数据实时处理领域
  • Kafka 基础架构
  1. Producer :消息生产者,就是向 kafka broker 发消息的客户端
  2. Consumer :消息消费者,向 kafka broker 取消息的客户端
  3. Consumer Group (CG):消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者
  4. Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic
  5. Topic :可以理解为一个队列,生产者和消费者面向的都是一个 topic
  6. Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列
  7. Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower
  8. leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader
  9. follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 follower

Kafka部署启动

  1. 旧Kafka集群依赖Zookeeper集群所以集群规划如下

    hadoop102--->zk--->kafka
    hadoop103--->zk--->kafka
    hadoop104--->zk--->kafka

  2. 解压安装包
    • 解压 tar -zxvf kafka_2.11-0.11.0.0.tgz -C/opt/module/
    • 重命名 mv kafka_2.11-0.11.0.0/ kafka
    • kafka目录下创建 logs 、 data文件夹
  3. 修改configserver.properties配置文件
    #broker 的全局唯一编号,不能重复
    broker.id=0
    #删除 topic 功能使能
    delete.topic.enable=true
    #处理网络请求的线程数量
    num.network.threads=3
    #用来处理磁盘 IO 的现成数量
    num.io.threads=8
    #发送套接字的缓冲区大小
    socket.send.buffer.bytes=102400
    #接收套接字的缓冲区大小
    socket.receive.buffer.bytes=102400
    #请求套接字的缓冲区大小
    socket.request.max.bytes=104857600
    #kafka 运行日志存放的路径
    log.dirs=/opt/module/kafka/logs
    #topic 在当前 broker 上的分区个数
    num.partitions=1
    #用来恢复和清理 data 下数据的线程数量
    num.recovery.threads.per.data.dir=1
    #segment 文件保留的最长时间,超时将被删除
    log.retention.hours=168
    #配置连接 Zookeeper 集群地址
    zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
    
  4. 配置环境变量
    • etc/profile 或者 etc/profile.d/myprofile 添加如下:
    #KAFKA_HOME
    export KAFKA_HOME=/opt/module/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    
  5. 分发文件 xsync kafka/ 其他机器配置环境变量,其他机器依次配置配置文件 broker.id=1、broker.id=2 ...
  6. 启动/关闭集群
    • 每个机器都要启动 bin/kafka-server-start.sh -daemon config/server.properties
    • 每个机器都要关闭 bin/kafka-server-stop.sh stop
  7. kafka 群起脚本
    for i in hadoop102 hadoop103 hadoop104
    do
    echo "========== $i =========="
    ssh
    $i
    '/opt/module/kafka/bin/kafka-server-start.sh
    -daemon
    /opt/module/kafka/config/server.properties'
    done
    

Kafka 命令行测试

  查看当前服务器中的所有 topic
  bin/kafka-topics.sh --zookeeper hadoop102:2181 --list

  删除 topic
  bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic first

  发送消息
  bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic first

  消费消息
  bin/kafka-console-consumer.sh \
  --zookeeper hadoop102:2181 --topic first

  bin/kafka-console-consumer.sh \ 
  --bootstrap-server hadoop102:9092 --topic first

  bin/kafka-console-consumer.sh \ 
  --bootstrap-server hadoop102:9092 --from-beginning --topic first

  查看某个 Topic 的详情
  bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic first

  修改分区数
  bin/kafka-topics.sh --zookeeper hadoop102:2181 --alter --topic first --partitions 6
posted @ 2021-08-06 16:15  —清风碎心—  阅读(23)  评论(0编辑  收藏  举报