【Kafka之轨迹】Kafka 入门使用

Kafka生产者消息追踪:监控消息流转路径 Apache Kafka 作为一款高吞吐量、低延迟的分布式发布-订阅消息系统,在现代数据架构中扮演着至关重要的角色。它被广泛应用于实时数据流处理、日志收集、事件溯源、微服务通信等各种场景。随着数据规模的不断增长和业务复杂性的提升,对 Kafka 消息的监控和追踪需求也日益迫切。@Override// 生成消息 ID// 获取当前时间戳// 添加消息 ID、时间戳和自定义元数据// 返回修改后的消息headers@Override// 处理消息发送成功或失败的回调。 阅读详情


0. 前言

本博客使用的版本是 0.11.0.3
各版本的区别可以自行了解,大致可选 0.11.x 1.x 2.x 三种版本

① 使用的集群是 Docker 搭建的,可参见:
【Docker x Hadoop】使用 Docker 搭建 Hadoop 集群(从零开始保姆级)

② 由于 Docker 搭建的集群有局限性,需要频繁为 Docker 容器动态添加端口映射(下边也会用到),可参见:
【Docker之轨迹】为正在运行中的容器动态添加端口映射(使用 iptables,附删除 iptables 规则)

③ 集群之间的分发脚本 xsync 参照尚硅谷,可参见:
【Linux之轨迹】Linux 各种实用小功能合集(持续补充)

④ 该版本的 kafka 需要用到 zookeeper,简单的搭建流程可参见:
【Zookeeper之轨迹】Zookeeper 入门使用(集群使用 Docker 模拟)

⑤ 由于 Kafka 需要占用较多内存,必要的话需要使用 swap 交换分区(相当于虚拟内存),可参见:
【Linux之轨迹】1核2G 内存不够怎么办?Swap 交换分区解决内存不足问题


1. 安装、启动与关闭

① 下载与配置

下载地址:http://kafka.apache.org/downloads

在这里插入图片描述

上传压缩包到服务器集群任意一台,解压,然后使用 xsync 分发到集群中的各个容器,再

tar -zxvf kafka_2.11-0.11.0.3.tgz
xsync kafka_2.11-0.11.0.3
rm -rf kafka_2.11-0.11.0.3.tgz

# 这一步改名可选
mv kafka_2.11-0.11.0.3 kafka_0.11.0.3

然后进行配置

1)	在 kafka_0.11.0.3 目录下新建文件夹 data 作为临时存放数据的文件夹
	mkdir data

2)	然后进入 config 目录修改 server.properties 文件
	vim server.properties

下面是对配置文件的修改

1)	首先修改 broker.id,每台服务器需要唯一,下边是我的配置
   `hadoop001:broker.id=1
	hadoop002:broker.id=2
	hadoop003:broker.id=3`

2)	接着设置主题允许被删除(将注释打开)
   `delete.topic.enable=true`

3)	修改数据暂存的目录,默认存放在 tmp 中会被定时删除,需修改为我们刚刚新建的 data 文件夹路径
	名字看着像日志文件输出的地方,但实际存放的是真实数据的
   `log.dirs=/xxx/kafka_0.11.0.3/data`

4)	修改 zookeeper 连接信息,以下是我的配置供参考(用逗号隔开)
   `zookeeper.connect=hadoop001:2181,hadoop002:2181,hadoop003:2181`

5)	然后将配置文件分发到各台服务器上(data 文件夹也顺带分发了)
   `xsync data/ config/server.properties`

6)	最后修改每一台服务器的 broker.id,就完事了

② 启动与关闭

首先确保三台服务器的 zookeeper 都已经启动,然后执行:

bin/kafka-server-start.sh config/server.properties
》》》 出现问题
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; eory' (errno=12)
原因是内存不足,查了我的服务器,发现 2G 内存剩下不到 1G
然后在 kafka-server-start.sh 中发现了这个东西

参数意思为:
-Xmx Java Heap 最大值,默认值为物理内存的 1/4
-Xms java Heap 初始值,Server 端 JVM 最好将 -Xms 和 -Xmx 设为相同值
里边要求 Kafka 启动是必须有 1G 空闲的内存
很明显我没有,况且 2G 内存要启动 3 台显然也不合理
所以这里我们把它改小一点,就 256M 应该可以,修改:

1)	vim bin/kafka-server-start.sh
   修改为:export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"

2) 分发到各台服务器
   xsync bin//kafka-server-start.sh

再次启动,就可以了(后边填坑:分发完毕后,记得将 broker.id 修改呀)
此外,如果内存实在不足,可以考虑使用 swap 交换分区作为虚拟内存使用
《《《 问
Kafka消息轨迹追踪:分布式系统调试利器 本文聚焦于Kafka消息轨迹追踪这一分布式系统调试的关键技术。首先介绍Kafka消息轨迹追踪的概念基础,包括其在分布式系统中的背景、发展历史以及问题空间。接着阐述其理论框架,从第一性原理进行推导,并分析理论局限性和竞争范式。在架构设计方面,对系统进行分解,构建组件交互模型并可视化展示。实现机制部分涵盖算法复杂度分析、代码实现及性能考量。实际应用中探讨实施策略、集成方法、部署和运营管理。高级考量关注扩展动态、安全和伦理问题以及未来发展方向。 阅读详情

相关推荐

【Kafka】Kafka事务是怎么实现的

如果采用这种方案,那么一般是按照不同的延时等级来划分的,比如设定5s、10s、30s、1min、2min、5min、10min、20min、30min、45min、1hour、2hour这些按延时时间递增的延时等级,延时的消息按照延时时间投递到不同等级的主题中,投递到同一主题中的消息的延时时间会被强转为与此主题延时等级一致的延时时间,这样延时误差控制在两个延时等级的时间差范围之内(比如延时时间为17s的消息投递到30s的延时主题中,之后按照延时时间为30s进行计算,延时误差为13s)。

九师兄 4290

三极管和MOS管工作原理详解

PN结的形成 PN结是三极管以及场效应管中最基本的组成部分,要想彻底搞明白三极管以及场效应管的工作原理,必须先搞清楚PN结形成的原理和工作特性。 本征半导体以及空穴对 本征半导体(intrinsic semiconductor))完全不含杂质且无晶格缺陷的纯净半导体称为本征半导体。主要常见代表有硅、锗这两种元素的单晶体结构。硅、锗都是4价原子,在半导体内部形成相对稳定的共价键结构,如图 1所

技术交流是便宜的的博客 10万+

【中英双语】Illumina测序原理详解 | 边合成边测序/Sequencing by Synthesis

很多朋友们问我视频讲解时用的笔记可不可以分享,那当然必须是可以呐!但我当时其实没有好好记录,只是打了个草稿就开讲啦!既然大家有需求,俺就重新整理了一下,希望可以帮到大家!

weixin_43843918的博客 7872

国密SSL实战:手把手教你用Wireshark抓包分析GMTLS协议(附证书链验证技巧)

本文提供了一份国密SSL(GMTLS)协议的实战抓包分析指南。通过详细讲解Wireshark的配置、GMTLS握手流程的捕获与筛选,以及双证书机制和证书链的深度解析,帮助工程师和开发人员掌握使用Wireshark排查国密SSL连接问题、进行密评和协议调试的核心技巧。

rgv234567的博客 502

python数据处理(一)——如何用python实现excel功能

python如何实现excel的数据提取、指标构建,进行透视分析。

一名数据分析师 2704

【uniapp踩坑记】App Store上传失败:Invalid Swift Support错误怎么解决?

作为一个前端出身的开发者,用 uniapp 开发原生 App 已经够挑战了,打包 iOS 上传 App Store 更是处处暗雷。这次的坑虽然小,但确实容易忽略。如果你也遇到了类似的报错,希望这篇文章能帮你少踩一次坑!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1143

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

【SpringBoot 4.x 第2节】夯爆了,学习 Spring Boot 4.x 前,需要具备哪些 Java 基础?

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 4568

ArcGIS Pro符号化教程

本文详细介绍了ArcGIS Pro的软件设置和符号化操作步骤。主要包括:1)设置默认工程目录和关闭地图自动加载;2)创建新工程的基本流程;3)点要素的单一符号化方法,包括样式修改和图层调整;4)图表符号显示过滤器的使用,涉及字段添加、图表类型选择和背景设置。文章还提供了操作截图和数据下载链接,适合GIS初学者学习ArcGIS Pro的基础符号化操作。

WwLK123的博客 548

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 【Linux之轨迹】1核2G 内存不够怎么办?Swap 交换分区解决内存不足问题
下一篇: 【C语言】打印二叉树树形(制表符实现,清晰+高拓展)(2022-10-22 更新—偏移量说明)
寒冰小澈IceClean
博客等级 码龄6年 344粉丝 79原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒冰小澈IceClean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值