主页 > 新闻资讯 > 大数据学习:Kafka日志详解

大数据学习:Kafka日志详解

作者:张老师 浏览次数: 2020-12-09 17:01
企业级的大数据平台当中,日志数据的收集与管理,常常用到Kafka框架。作为消息系统,Kafka将日志消息持久化到磁盘上,而在这个过程当中,涉及到吞吐量和扩展性多方面的问题,而Kafka都给出了有些的解决方案。今天的大数据学习分享,我们就来讲讲Kafka日志系统。

大数据学习:Kafka日志详解

一、Kafka日志结构

Kafka日志对象由多个日志段对象组成,而每个日志段对象会在磁盘上创建一组文件,包括消息日志文件(.log)、位移索引文件(.index)、时间戳索引文件(.timeindex)以及已中止事务的索引文件(.txnindex)。图中的一串数字0是该日志段的起始位移值(Base Offset)。

一般情况下,一个Kafka主题有很多分区,每个分区就对应一个Log对象,在物理磁盘上则对应于一个子目录。比如你创建了一个双分区的主题test-topic,那么,Kafka在磁盘上会创建两个子目录:test-topic-0和test-topic-1。而在服务器端,这就是两个Log对象。每个子目录下存在多组日志段,也就是多组.log、.index、.timeindex文件组合,只不过文件名不同,因为每个日志段的起始位移不同。

二、日志段

LogSegment为核心类,主要有三个方法:append,read,recover,其对应文件为

./core/src/main/scala/kafka/log/LogSegment.scala

三、日志

Log是如何加载日志段的?

Log源码:./core/src/main/scala/kafka/log/Log.scala,它定义了10个类和对象

1.LogAppendInfo

LogAppendInfo(Class):保存了一组待写入消息的各种元数据信息。比如,这组消息中第一条消息的位移值是多少、最后一条消息的位移值是多少;再比如,这组消息中最大的消息时间戳又是多少。

LogAppendInfo(Object):可以理解为其对应伴生类的工厂方法类,里面定义了一些工厂方法,用于创建特定的LogAppendInfo实例。

2.Log

Log(Class):Log源码中最核心的代码。

Log(Object):同理,Log伴生类的工厂方法,定义了很多常量以及一些辅助方法。

3.RollParams

RollParams(Class):定义用于控制日志段是否切分(Roll)的数据结构。

RollParams(Object):同理,RollParams伴生类的工厂方法。

4.其他重要的对象或类

LogMetricNames:定义了Log对象的监控指标。

LogOffsetSnapshot:封装分区所有位移元数据的容器类。

LogReadInfo:封装读取日志返回的数据及其元数据。

CompletedTxn:记录已完成事务的元数据,主要用于构建事务索引。

5.Log的常见操作

1.高水位管理操作:高水位的概念在Kafka中举足轻重,对它的管理,是Log最重要的功能之一。

2.日志段管理:Log是日志段的容器。高效组织与管理其下辖的所有日志段对象,是源码要解决的核心问题。

3.关键位移值管理:日志定义了很多重要的位移值,比如Log Start Offset和LEO等。确保这些位移值的正确性,是构建消息引擎一致性的基础。

4.读写操作:所谓的操作日志,大体上就是指读写日志。读写操作的作用之大,不言而喻。

关于大数据学习,Kafka日志,以上就为大家做了简单的基础介绍了。Kafka常常在大数据平台当中作为消息总线使用,而日志数据在其中占据重要的一部分,对于日志部分,还是需要深入学习的。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,本月正在招生中,课程大纲及试学视频,可联系客服领取!
热点排行
推荐文章
立即申请>>