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

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

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

1. 下载安装

1.1 JDK的安装

  • 因为kafka本身的开发语言是Scala,而Scala是基于 jdk 开发的,所以要先安装jdk,关于 jdk 的安装,可以看下面的两篇文章,如下:
    • Linux安装JDK1.8.
    • linux下普通用户(非root用户)安装JDK8.

1.2 Zookeeper的安装

1.2.1 关于Zookeeper版本的选择

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

1.2.2 下载、安装Zookeeper

  • 去官网,根据需要下载对应的版本,如下:
    在这里插入图片描述
  • 关于 Zookeeper 的安装,可以看下面的文章
    zookeeper安装与使用(win+linux).

1.3 kafka的安装

1.3.1 下载

  • 去官网下载需要的版本,官网地址:
    https://kafka.apache.org/downloads.
    在这里插入图片描述

1.3.2 解压

  • 然后解压,如下:
    tar -zxvf kafka_2.12-2.8.2.tgz
    
    在这里插入图片描述

1.3.3 修改配置文件

  • 修改配置文件 server.properties ,如下:
    在这里插入图片描述

  • 配置信息如下:
    在这里插入图片描述

    在这里插入图片描述

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

2. 启动 kafka

2.1 Kafka启动

  • 启动命令如下:

    ./kafka-server-start.sh ../config/server.properties &
    

    在这里插入图片描述

  • 启动成功之后,显示:
    在这里插入图片描述

  • 查看进程:

    ps -ef | grep kafka
    

    在这里插入图片描述

2.2 启动 kafka 遇到的问题

2.2.1 问题1

  • 问题描述,如下:
    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

      ifconfig
      

      在这里插入图片描述

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

      listeners=PLAINTEXT://内网IP:9092
      advertised.listeners=PLAINTEXT://公网IP:9092
      

      在这里插入图片描述

  • 然后重新启动即可。
    在这里插入图片描述

2.2.2 问题2

3. 简单实用

3.1 创建topic

  • 如下:
    ./kafka-topics.sh --create --zookeeper zookeeper服务的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
    
    在这里插入图片描述

3.2 查看已创建的topic

  • 如下:
    ./kafka-topics.sh -list --zookeeper zookeeper服务的IP:2181
    
    在这里插入图片描述

3.3 发送消息

3.3.1 发送消息命令

  • 如下:
    ./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

  • 问题描述如下:
    [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

  • 开放端口之后的问题,如下,问题描述:
     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 接收消息演示

  • 如下:
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
    
    在这里插入图片描述

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

  • 如下:
    • 消费方式1: 从头开始消费
      ./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic --from-beginning
      
    • 消费方式2: 从最后一条消息的偏移量+1开始消费
      ./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 常用的基础命令

  • 启动命令:
    ./kafka-server-start.sh ../config/server.properties &
    
  • 停止命令:
     ./kafka-server-stop.sh
    
  • 地点

4.2.2 简单实用命令

  • 创建topic
    # 创建topic
    ./kafka-topics.sh --create --zookeeper zookeeper的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
    
  • 查看已经创建的topic信息
    # 查看已经创建的topic信息
    ./kafka-topics.sh -list --zookeeper zookeeper的IP:2181
    
  • 发送消息
    ./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic或者./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
    
  • 接收消息
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
    

4.3 数据日志

  • 查看数据日志,存放路径,看配置文件里配的哪个路径 log.dirs,如下:
    在这里插入图片描述

4.4 结构图

  • 如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/65395.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用fopen等标准C库来操作文件

fopen 需要的头文件&#xff1a; #include <stdio.h> 函数原型&#xff1a; FILE *fopen(const char *pathname, const char *mode); 参数&#xff1a; pathname: 文件路径mode: “r” &#xff1a;以只读方式打开文件&#xff0c;该文件必须存在。“w” &#xff…

中睿天下Coremail | 2023年第二季度企业邮箱安全态势观察

今日&#xff0c;中睿天下联合Coremail邮件安全发布《2023第二季度企业邮箱安全性研究报告》&#xff0c;对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一 垃圾邮件同比下降16.38% 根据监测&#xff0c;2023年Q2垃圾邮件数量达到6.47亿封&#xff0c;环比下降…

Python Opencv实践 - 图像属性相关

import numpy as np import cv2 as cv import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) plt.imshow(img[:,:,::-1])#像素操作 pixel img[320,370] print(pixel)#只获取蓝色通道的值 pixel_blue img[320,370,0]…

8.13 刷题记录(4道题)

8.13 刷题记录 6. 反转链表方法一&#xff1a; 迭代方法二&#xff1a;递归 7. 合并两个排序的链表8. 复杂链表的复刻9. 二叉搜索树与双向链表 6. 反转链表 原题链接 方法一&#xff1a; 迭代 1 -> 2 -> 3 -> 4 i j 1 <- 2 -> 3 -> 4 i j 就像这样迭代 /…

【CI/CD】Git Flow 分支模型

Git Flow 分支模型 1.前言 Git Flow 模型&#xff08;本文所阐述的分支模型&#xff09;构思于 2010 年&#xff0c;也就是 Git 诞生后不久&#xff0c;距今已有 10 多年。在这 10 多年中&#xff0c;Git Flow 在许多软件团队中大受欢迎。 在这 10 多年里&#xff0c;Git 本身…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

什么是多线程?进程和线程的区别是什么?如何使用Java实现多线程?

文章目录 前言我们为什么要使用线程而不是进程来实现并发编程什么是线程进程和线程的区别如何使用Java实现多线程创建线程1.创建一个继承 Thread 类的线程类2.实现 Runnable 接口匿名内部类方式实现 Runnable 接口lambda 表达式实现 Runnable 接口 Thread 类的常见构造方法Thre…

2. 获取自己CSDN文章列表并按质量分由小到大排序(文章质量分、博客质量分、博文质量分)(阿里云API认证)

文章目录 写在前面步骤打开CSDN质量分页面粘贴查询文章url按F12打开调试工具&#xff0c;点击Network&#xff0c;点击清空按钮点击查询是调了这个接口https://bizapi.csdn.net/trends/api/v1/get-article-score用postman测试调用这个接口&#xff08;不行&#xff0c;认证不通…

阿里云免费服务器领取入口_限制条件_申请指南

阿里云免费服务器领取&#xff0c;个人和企业用户均可以申请&#xff0c;个人免费服务器1核2GB 每月750小时&#xff0c;企业u1服务器2核8GB免费使用3个月&#xff0c;阿里云百科分享阿里云免费服务器申请入口、个人和企业免费配置、申请资格条件及云服务器免费使用时长&#x…

SpringBoot 简单入门部署

1. 环境要求 Java 8 (配置环境变量)Maven 3.3idea 2019.1.2 及以上 1.1 maven 配置 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/n…

display 属性有哪些值,分别表示什么意思

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ display 属性是什么&#xff1f;⭐ display 属性有哪些值&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

4. 软件开发的环境搭建

目录 1. 搭建环境 1.1 检查 JDK 1.2 检查 MySQL 数据库 1.3 检查 Maven 1.4 检查 GITEEGIT 1.5 安装插件 1.5.1 安装 Spring Boot Helper 1.5.2 安装 lombok 1.6 创建仓库 1.6.1 登录 GITEE 创建仓库并复制仓库地址 1.6.2 克隆到本地 1.7 创建工程 1.7.1 设置编码…