Kafka 01——Kafka的安装及简单入门使用

Kafka 01------Kafka的安装及简单入门使用

  • [1. 下载安装](#1. 下载安装)
    • [1.1 JDK的安装](#1.1 JDK的安装)
    • [1.2 Zookeeper的安装](#1.2 Zookeeper的安装)
      • [1.2.1 关于Zookeeper版本的选择](#1.2.1 关于Zookeeper版本的选择)
      • [1.2.2 下载、安装Zookeeper](#1.2.2 下载、安装Zookeeper)
    • [1.3 kafka的安装](#1.3 kafka的安装)
      • [1.3.1 下载](#1.3.1 下载)
      • [1.3.2 解压](#1.3.2 解压)
      • [1.3.3 修改配置文件](#1.3.3 修改配置文件)
  • [2. 启动 kafka](#2. 启动 kafka)
    • [2.1 Kafka启动](#2.1 Kafka启动)
    • [2.2 启动 kafka 遇到的问题](#2.2 启动 kafka 遇到的问题)
      • [2.2.1 问题1](#2.2.1 问题1)
      • [2.2.2 问题2](#2.2.2 问题2)
  • [3. 简单实用](#3. 简单实用)
    • [3.1 创建topic](#3.1 创建topic)
    • [3.2 查看已创建的topic](#3.2 查看已创建的topic)
    • [3.3 发送消息](#3.3 发送消息)
      • [3.3.1 发送消息命令](#3.3.1 发送消息命令)
      • [3.3.2 遇到的问题](#3.3.2 遇到的问题)
        • [3.3.2.1 问题1](#3.3.2.1 问题1)
        • [3.3.2.2 问题2](#3.3.2.2 问题2)
    • [3.4 接收消息](#3.4 接收消息)
      • [3.4.1 接收消息演示](#3.4.1 接收消息演示)
      • [3.4.2 接收消息的相关知识小点](#3.4.2 接收消息的相关知识小点)
    • [3.5 查看zk](#3.5 查看zk)
  • [4. 总结](#4. 总结)
    • [4.1 Kafka 基本概念](#4.1 Kafka 基本概念)
    • [4.2 常见命令](#4.2 常见命令)
      • [4.2.1 常用的基础命令](#4.2.1 常用的基础命令)
      • [4.2.2 简单实用命令](#4.2.2 简单实用命令)
    • [4.3 数据日志](#4.3 数据日志)
    • [4.4 结构图](#4.4 结构图)

1. 下载安装

1.1 JDK的安装

1.2 Zookeeper的安装

1.2.1 关于Zookeeper版本的选择

  • 可以根据下面下载的 kafaka 的版本选择对应的Zookeeper版本,怎么选择,如下:
    • 方式1:直接看Kafka里libs下的jar包,如下:
    • 方式2:也可以通过查看源码,看版本信息,如下:

1.2.2 下载、安装Zookeeper

1.3 kafka的安装

1.3.1 下载

1.3.2 解压

  • 然后解压,如下:

    bash 复制代码
    tar -zxvf kafka_2.12-2.8.2.tgz

1.3.3 修改配置文件

  • 修改配置文件 server.properties ,如下:

  • 配置信息如下:

    bash 复制代码
    # The id of the broker. This must be set to a unique integer for each broker.
    broker.id=0
    
    listeners=PLAINTEXT://内网IP:9092
    advertised.listeners=PLAINTEXT://公网IP:9092
    
    zookeeper.connect=zk的公网IP:2181
    
    # ...... 其他配置,先默认即可

2. 启动 kafka

2.1 Kafka启动

  • 启动命令如下:

    bash 复制代码
    ./kafka-server-start.sh ../config/server.properties &
  • 启动成功之后,显示:

  • 查看进程:

    bash 复制代码
    ps -ef | grep kafka

2.2 启动 kafka 遇到的问题

2.2.1 问题1

  • 问题描述,如下:

    bash 复制代码
    org.apache.kafka.common.KafkaException: Socket server failed to bind to XXX:9092: Cannot assign requested address.
  • 问题原因

    • 服务器的公网IP(对外暴露的ip)和真实ip(ifconfig显示的ip)可能只是映射关系,用户访问对外ip时,OpenStack会转发到对应的真实ip实现访问。
    • 但此时如果配置文件中 server.properties 配置中的是listeners=PLAINTEXT://公网IP:9092 的时候无法启动,因为socket无法绑定监听,就会报上面的错误。
    • 解决方法也很简单,将上面的配置,改成listeners=PLAINTEXT://内网IP:9092即可,其他使用时正常使用公网ip即可,跟真实的内网ip就没有关系了。
  • 解决问题

    • 先查看内网IP

      bash 复制代码
      ifconfig
    • 再修改配置文件 server.properties,如下:

      bash 复制代码
      listeners=PLAINTEXT://内网IP:9092
      advertised.listeners=PLAINTEXT://公网IP:9092
  • 然后重新启动即可。

2.2.2 问题2

3. 简单实用

3.1 创建topic

  • 如下:

    bash 复制代码
    ./kafka-topics.sh --create --zookeeper zookeeper服务的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic

3.2 查看已创建的topic

  • 如下:

    bash 复制代码
    ./kafka-topics.sh -list --zookeeper zookeeper服务的IP:2181

3.3 发送消息

3.3.1 发送消息命令

  • 如下:

    bash 复制代码
    ./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic
    
    或者
    
    ./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic

3.3.2 遇到的问题

3.3.2.1 问题1

  • 问题描述如下:

    bash 复制代码
    [2023-08-10 09:01:57,758] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:15,979] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:49,538] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:50,562] ERROR Error when sending message to topic susu-topic with key: null, value: 4 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
    
    org.apache.kafka.common.errors.TimeoutException: Topic susu-topic not present in metadata after 60000 ms.
    
    >[2023-08-10 09:03:18,069] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:03:47,001] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
  • 解决问题:
    这里我的处理是开放 9092 端口,关于开放端口和防火墙问题,可以看下面的文章:
    linux下查看防火墙状态、关闭防火墙、开放关闭端口等.

3.3.2.2 问题2

  • 开放端口之后的问题,如下,问题描述:

    bash 复制代码
     WARN [Producer clientId=console-producer] Connection to node -1 (/XXX:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
  • 解决问题:
    这里就是重启服务,重启kafka,问题就解决了,不知道啥问题,总之,重启能解决百分之九十九的问题!!!

3.4 接收消息

3.4.1 接收消息演示

  • 如下:

    bash 复制代码
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning

3.4.2 接收消息的相关知识小点

  • 如下:

    • 消费方式1: 从头开始消费

      bash 复制代码
      ./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic --from-beginning
    • 消费方式2: 从最后一条消息的偏移量+1开始消费

      bash 复制代码
      ./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic 
  • 具体如下:

3.5 查看zk

  • 如下:

4. 总结

4.1 Kafka 基本概念

  • Kafka 是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。既然是消息队列,那么 Kafka 也就拥有消息队列的相应的特性了。
  • Kafka 像其他MQ一样,也有自己的基础架构,主要存在生产者 Producer、Kafka 集群 Broker、消费者Consumer、注册消息Zookeeper.
    • Topic:主题,一个虚拟的概念,由1到多个 Partitions 组成,可以理解为一个队列,生产者和消费者都是面向一个Topic。
    • Partition:分区,实际消息存储单位。为了实现扩展性,一个非常大的Topic可以分布到多个Broker上,一个Topic可以分为多个 Partition,每个 Partition 是一个有序的队列(分区有序,不能保证全局有序)。
    • Producer:消息生产者,向 Kafka 中发布消息的角色。
    • Consumer:消息消费者,从 Kafka 中拉取消息消费的客户端。
    • Broker:经纪人,一台 Kafka 服务器就是一个 Broker,一个集群由多个 Broker 组成,一个 Broker 可以容纳多个 Topic。

4.2 常见命令

4.2.1 常用的基础命令

  • 启动命令:

    bash 复制代码
    ./kafka-server-start.sh ../config/server.properties &
  • 停止命令:

    bash 复制代码
     ./kafka-server-stop.sh
  • 地点

4.2.2 简单实用命令

  • 创建topic

    bash 复制代码
    # 创建topic
    ./kafka-topics.sh --create --zookeeper zookeeper的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
  • 查看已经创建的topic信息

    bash 复制代码
    # 查看已经创建的topic信息
    ./kafka-topics.sh -list --zookeeper zookeeper的IP:2181
  • 发送消息

    bash 复制代码
    ./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic
    
    或者
    
    ./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
  • 接收消息

    bash 复制代码
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning

4.3 数据日志

  • 查看数据日志,存放路径,看配置文件里配的哪个路径 log.dirs,如下:

4.4 结构图

  • 如下:
相关推荐
niu_sama2 小时前
仿RabbitMQ实现消息队列客户端
分布式·rabbitmq·ruby
gongyuandaye2 小时前
《数据密集型应用系统设计》笔记——第二部分 分布式数据系统(ch5-9)
笔记·分布式·ddia
cab52 小时前
Kafka的基本概念整理
kafka
小诸葛的博客3 小时前
RabbitMQ入门5—exchange参数之durability
分布式·rabbitmq·ruby
极客先躯4 小时前
高级java每日一道面试题-2024年10月2日-分布式篇-什么是FLP 不可能性定理?
java·分布式·分布式篇·容错策略·不可能性定理·补偿机制
KTpro5 小时前
Kafka 副本机制详解
java·kafka
张某布响丸辣9 小时前
探索消息中间件:RabbitMQ深度解析
分布式·rabbitmq
wclass-zhengge9 小时前
RabbitMQ篇(死信交换机)
分布式·rabbitmq
黄尚圈圈11 小时前
快速理解mQ(三)——RabbitMQ 各种交换机的区别与应用
分布式·rabbitmq
ON.LIN12 小时前
Hadoop大数据入门——Hive-SQL语法大全
大数据·数据库·hive·hadoop·分布式·sql