Kafka集群搭建可视化指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

Kafka集群搭建可视化指南

    • 前言
    • 准备工作
      • 硬件要求
      • 环境准备
    • kafka集群的部署与配置
      • 3.1 单节点部署与多节点集群搭建
        • 单节点部署:
        • 多节点集群搭建:
      • 3.2 Broker配置与优化
      • 3.3 Topic的创建与管理
      • 3.4 安全性配置与权限管理
    • knowstreaming
      • docker-compose搭建
      • 引入kafka集群

前言

想象一下,你正在开发一款新的实时数据分析工具,但在处理大规模数据流时遇到了瓶颈。你需要一种可靠、高效的数据传输系统来帮助你实现这一目标。在这个挑战中,Kafka就是你的得力助手。本文将为你揭开Kafka集群搭建的神秘面纱,让你轻松掌握数据处理的主动权。

准备工作

在搭建 Kafka 集群之前,首先需要准备好硬件和环境。以下是一些准备工作的关键步骤:

硬件要求

  1. 服务器资源:

    • 确保每个服务器都有足够的 CPU 和内存资源来运行 Kafka 和 ZooKeeper。资源需求会根据你的实际使用情况而变化。
  2. 网络连接:

    • 确保服务器之间有稳定的网络连接,这对 Kafka 集群的正常运行至关重要。

环境准备

  1. Java 安装:

    • 安装 Java Development Kit (JDK)。Kafka 是用 Java 编写的,因此需要在服务器上安装 Java。推荐使用 Java 8 或更高版本。
  2. ZooKeeper 安装:

    • Kafka 集群依赖于 ZooKeeper 进行协调和管理。在安装 Kafka 之前,确保 ZooKeeper 已经安装并正常运行。你可以参考 ZooKeeper 的官方文档安装和配置 ZooKeeper。

kafka集群的部署与配置

3.1 单节点部署与多节点集群搭建

单节点部署:
  1. 下载 Kafka:

    • 访问 Kafka 的官方网站,下载最新版本的 Kafka。
  2. 解压 Kafka:

    • 将下载的 Kafka 压缩文件解压到你选择的目录。
  3. 配置 Kafka:

    • 进入 Kafka 目录,编辑 config/server.properties 文件。
    • 修改 broker.id 为唯一的整数,表示单节点的 Broker ID。
    • 根据需要修改其他配置,如监听端口、日志目录等。
  4. 启动 Kafka 服务器:

    • 在 Kafka 目录运行以下命令启动 Kafka 服务器:

      bin/kafka-server-start.sh config/server.properties
      
多节点集群搭建:
  1. 配置不同的 Broker:

    • 在每个 Kafka 服务器上,根据需要修改 config/server.properties 中的 broker.id 和其他配置。
    • 每个 Broker 的 broker.id 必须是唯一的。
  2. 配置 ZooKeeper:

    • config/server.properties 中设置 ZooKeeper 连接信息,如:

      zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
      

      其中,zk1, zk2, zk3 是你 ZooKeeper 集群的地址。

  3. 启动 Kafka 服务器:

    • 在每个 Kafka 服务器上运行以下命令启动 Kafka 服务器:

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

3.2 Broker配置与优化

  1. 配置文件详解:

    • config/server.properties 包含了 Kafka 服务器的配置。根据需要修改其中的参数,如 listenerslog.dirsnum.partitions 等。
  2. JVM 配置:

    • 配置 Kafka 的 JVM 参数,可通过 config/server.properties 中的 KAFKA_HEAP_OPTS 来设置内存大小。
  3. 硬盘与网络优化:

    • 配置正确的硬盘路径 (log.dirs),确保 Kafka 有足够的磁盘空间。
    • 确保服务器之间的网络连接是高速和稳定的。

3.3 Topic的创建与管理

  1. 创建 Topic:

    • 使用 kafka-topics.sh 工具创建主题,例如:

      bin/kafka-topics.sh --create --topic my_topic --bootstrap-server kafka1:9092 --partitions 3 --replication-factor 2
      
  2. 查看 Topic 列表:

    • 使用 kafka-topics.sh 工具查看已创建的主题列表:

      bin/kafka-topics.sh --list --bootstrap-server kafka1:9092
      
  3. 查看 Topic 详细信息:

    • 使用 kafka-topics.sh 工具查看主题的详细信息:

      bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka1:9092
      

3.4 安全性配置与权限管理

  1. SSL 配置:

    • 配置 Kafka 使用 SSL 进行安全通信。编辑 config/server.properties 文件,设置 SSL 配置项。
  2. SASL 配置:

    • 配置 Kafka 使用 SASL 进行身份验证。编辑 config/server.properties 文件,设置 SASL 配置项。
  3. ACL 权限管理:

    • 配置 Kafka ACL(Access Control Lists)进行精确的权限管理。编辑 config/server.properties 文件,设置 ACL 配置项。
  4. 认证与授权:

    • 配置 Kafka 使用其他认证和授权机制,如 Kerberos。编辑 config/server.properties 文件,设置相应的配置项。

请注意,确保配置和安全性设置符合你的生产环境需求。详细的配置选项和更多的信息可以参考 Kafka 的官方文档。

knowstreaming

可视化官方文档

一定要注意脚本单机搭建风险提示,一定注意:

image-20240313163512595

docker-compose搭建

docker-compose操作手册

这个是在官网的基础上做了部分修改

  1. ui端口映射改到了8081,这个最好先试一下你的端口是否被占用了lsof -i tcp:port
  2. es的镜像对于我的系统没有匹配的,也做了修改
  3. 官网默认没有挂载相关的日志以及数据,这里建议挂载一下。
  4. 启动之后如果出现登录网络异常,请稍微等一下再试,你可以看下manage的日志,还没有完全启动
  5. 首次启动之后init模块加载完成后会自动退出
version: '2'
services:
  # *不要调整knowstreaming-manager服务名称,ui中会用到
  knowstreaming-manager:
    image: knowstreaming/knowstreaming-manager:0.7.0
    container_name: knowstreaming-manager
    privileged: true
    restart: always
    depends_on:
      - elasticsearch-single
      - knowstreaming-mysql
    expose:
      - 80
    command:
      - /bin/sh
      - /ks-start.sh
    environment:
      TZ: Asia/Shanghai
      # mysql服务地址
      SERVER_MYSQL_ADDRESS: knowstreaming-mysql:3306
      # mysql数据库名
      SERVER_MYSQL_DB: know_streaming
      # mysql用户名
      SERVER_MYSQL_USER: root
      # mysql用户密码
      SERVER_MYSQL_PASSWORD: admin2022_
      # es服务地址
      SERVER_ES_ADDRESS: elasticsearch-single:9200
      # 服务JVM参数
      JAVA_OPTS: -Xmx1g -Xms1g
      # 对于kafka中ADVERTISED_LISTENERS填写的hostname可以通过该方式完成
  #    extra_hosts:
  #      - "hostname:x.x.x.x"
  # 服务日志路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/log:/logs
  knowstreaming-ui:
    image: knowstreaming/knowstreaming-ui:0.7.0
    container_name: knowstreaming-ui
    restart: always
    ports:
      - '8081:80'
    environment:
      TZ: Asia/Shanghai
    depends_on:
      - knowstreaming-manager
  #    extra_hosts:
  #      - "hostname:x.x.x.x"
  elasticsearch-single:
    image: elasticsearch:7.16.3
    container_name: elasticsearch-single
    restart: always
    expose:
      - 9200
      - 9300
    #    ports:
    #      - '9200:9200'
    #      - '9300:9300'
    environment:
      TZ: Asia/Shanghai
      # es的JVM参数
      ES_JAVA_OPTS: -Xms512m -Xmx512m
      # 单节点配置,多节点集群参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html#docker-compose-file
      discovery.type: single-node
      # 数据持久化路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/data:/usr/share/elasticsearch/data

  # es初始化服务,与manager使用同一镜像
  # 首次启动es需初始化模版和索引,后续会自动创建
  knowstreaming-init:
    image: knowstreaming/knowstreaming-manager:0.7.0
    container_name: knowstreaming-init
    depends_on:
      - elasticsearch-single
    command:
      - /bin/bash
      - /es_template_create.sh
    environment:
      TZ: Asia/Shanghai
      # es服务地址
      SERVER_ES_ADDRESS: elasticsearch-single:9200

  knowstreaming-mysql:
    image: knowstreaming/knowstreaming-mysql:0.7.0
    container_name: knowstreaming-mysql
    restart: always
    environment:
      TZ: Asia/Shanghai
      # root 用户密码
      MYSQL_ROOT_PASSWORD: admin2022_
      # 初始化时创建的数据库名称
      MYSQL_DATABASE: know_streaming
      # 通配所有host,可以访问远程
      MYSQL_ROOT_HOST: '%'
    expose:
      - 3306
#    ports:
#      - '3306:3306'
# 数据持久化路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/mysql:/data/mysql

引入kafka集群

image-20240313164448058

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速访问github

修改本地hosts文件 GitHub访问慢的原因在于域名解析,通过修改本地的hosts文件,将远程DNS解析改为本地DNS解析。 fang 步骤1:打开hosts文件(没有就创建) host所在位置: C:\Windows\System32\drivers\etc…

销售经理(多继承/虚基类)

根据下图类之间的继承关系,以及main和输出定义,定义Staff类、Saleman类、Manager类和SaleManager类。 Staff类包含的数据成员有编号(num),姓名(name),基本工资(basicSale)。Saleman类…

[lesson42]类型转换函数(下)

类型转换函数(下) 类型转换函数 C类中可以定义类型转换函数 类型转换函数用于将类对象转换成其他类型 语法规则: 类型转换函数 与转换构造函数具有同等的地位使得编译器有能力将对象转换为其他类型编译器能够隐式的使用类型转换函数 无法抑制隐式的类型转换函…

项目实践:贪吃蛇

引言 贪吃蛇作为一项经典的游戏,想必大家应该玩过。贪吃蛇所涉及的知识也不是很难,涉及到一些C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。这里我会介绍贪吃蛇的一些思路。以及源代码也会给大家放到文章末尾。 我们最终的…

二维码门楼牌管理应用平台建设:取保候审的智能化监管

文章目录 前言一、取保候审的传统监管困境二、二维码门楼牌管理应用平台的优势三、取保候审备案信息的智能化处理四、保障居民合法权益五、展望未来 前言 随着信息技术的飞速发展,二维码门楼牌管理应用平台已成为现代社区治理的重要工具。本文重点探讨如何借助该平…

Vue【路由】

1:什么是单页应用程序(single page application) 所有得功能在一个html页面上实现 2:单页面应用程序的优缺点 优点:按需更新性能高,开发效率也高,用户的体验较好 缺点:学习成本高…

卷王问卷考试系统/SurveyKing调查系统源码

SurveyKing是一个功能强大的开源调查问卷和考试系统,它能够快速部署并适用于各个行业。 这个系统提供了在线表单设计、数据收集、统计和分析等功能,支持20多种题型,提供多种创建问卷的方式和设置。 项 目 地 址 : runruncode.c…

JavaFX--基础简介(1)

一、介绍 中文官网:JavaFX中文官方网站OpenJFX 是一个开源项目,用于桌面、移动端和嵌入式系统的下一代客户端应用程序平台。openjfx.cn是OpenJFX(JavaFX)的标准中文翻译网站,致力于方便开发者阅读官方文档和教程。https://openjfx.cn/ JavaFX 是一个开…

2024第八届图像、信号处理和通信国际会议 (ICISPC 2024)即将召开!

2024第八届图像、信号处理和通信国际会议 (ICISPC 2024)将于2024年7月19-21日在日本福冈举行。启迪思维,引领未来,ICISPC 2024的召开,旨在全球专家学者共襄盛举,聚焦图像信号,在图像中寻找美&am…

袁庭新ES系列15节|Elasticsearch客户端基础操作

前言 上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢?在ES官网中提供了各种语言的客户端,我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择,那么他们有什么区别?这…

uniapp Android 插件开发教程

一、下载uniapp提供的SDK Android 离线SDK - 正式版 | uni小程序SDK 二、在uniapp创建一个项目 查看包名:发行--> 原生app 云打包 三、进入dcloud官网 开发者中心 进入 应用管理 --> 我的应用 --> 点击应用名称-->各平台信息-->新增 这里需要这…

【可视化大屏开发】19. 加餐-百度地图API实现导航加线路热力图

需求 Web端使用场景中会涉及到地图导航路线情况,并利用热力图显示路况信息。 实现效果如下: 输入起始地点,选择并开始导航 最终效果 思路步骤 利用百度地图API显示地图交通拥堵情况的热力图,需要按照以下步骤进行开发 步骤1&a…

面试被问懵了:手撕 Transformer

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今年最大…

Vue入门篇:概念,快速入门,插值表达式,核心特性,基本Vue指令

目录 1.Vue是什么2.快速入门3.插值表达式{{}}1.作用:2.语法:3.插值表达式的注意点: 4.Vue响应式核心特性5.Vue指令 1.Vue是什么 Vue是一个流行的JavaScript框架,用于构建用户界面。它是一种用于构建单页面应用程序(SPA)的渐进式框架&#xff…

MySQL 列数据跨表拷贝,一句SQL快速将表A每条记录的某些字段拷贝到表B每条记录的某些字段(A、B表通过ID等字段对应)

文章目录 MySQL 列数据跨表拷贝,一句SQL快速将表A每条记录的某些字段拷贝到表B每条记录的某些字段(A、B表通过ID等字段对应)背景定义表填充测试数据跨表一 一对应拷贝列数据SQL参考资料 MySQL 列数据跨表拷贝,一句SQL快速将表A每条…

【C++】:函数重载,引用,内联函数,auto关键字,基于范围的for循环,nullptr关键字

目录 一,函数重载1.1 函数重载的定义1.1.1.形参的类型不同1.1.2参数的个数不同1.1.3.参数的顺序不同1.1.4.有一个是缺省参数构成重载。但是调用时存在歧义1.1.5.返回值不同,不构成重载。因为返回值可接收,可不接受,调用函数产生歧…

Python 比较文本文件

1、问题背景 我们需要比较一个文本文件 F 与路径下多个其他文本文件之间的差异。我们已经编写了以下代码,但只能输出一个文件的比较结果。我们需要修改代码,以便比较所有文件并打印所有结果。 import difflib import fnmatch import osfilelist[] f op…

Don‘t fly solo! 量化之路,AI伴飞

在投资界,巴菲特与查理.芒格的神仙友谊,是他们财富神话之外的另一段传奇。巴菲特曾这样评价芒格:他用思想的力量拓展了我的视野,让我以火箭的速度,从猩猩进化到人类。 人生何幸能得到一知己。如果没有这样的机缘&…

使用共振峰提取元音音素/从声音生成口型动画

视频效果 我前段时间研究了下从声音提取共振峰的方法。今天测试了下实际效果。 我使用一段33秒的女声视频,提取元音后使用静态视位图序列生成了一个视频,效果如下: b站视频: https://www.bilibili.com/video/BV1JD421H7m9/?vd_…

泛型的初步认识(2)

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x…