【Kafka实战指南】Kafka安装及日志存储结构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【Kafka实战指南】Kafka安装及日志存储结构

kafka安装


Kafka的安装

tar -zxvf kafka_2.11-2.1.1.tgz -C /usr/local/
复制代码



查看配置文件

[root@es1 config]# pwd
/usr/local/kafka/config
[root@es1 config]# ll
    total 84
    -rw-r--r--. 1 root root  906 Feb  8  2019 connect-console-sink.properties
    -rw-r--r--. 1 root root  909 Feb  8  2019 connect-console-source.properties
    -rw-r--r--. 1 root root 5321 Feb  8  2019 connect-distributed.properties
    -rw-r--r--. 1 root root  883 Feb  8  2019 connect-file-sink.properties
    -rw-r--r--. 1 root root  881 Feb  8  2019 connect-file-source.properties
    -rw-r--r--. 1 root root 1111 Feb  8  2019 connect-log4j.properties
    -rw-r--r--. 1 root root 2262 Feb  8  2019 connect-standalone.properties
    -rw-r--r--. 1 root root 1221 Feb  8  2019 consumer.properties
    -rw-r--r--. 1 root root 4727 Feb  8  2019 log4j.properties
    -rw-r--r--. 1 root root 1925 Feb  8  2019 producer.properties
    -rw-r--r--. 1 root root 6865 Jan 16 22:00 server-1.properties
    -rw-r--r--. 1 root root 6865 Jan 16 22:00 server-2.properties
    -rw-r--r--. 1 root root 6873 Jan 16 03:57 server.properties
    -rw-r--r--. 1 root root 1032 Feb  8  2019 tools-log4j.properties
    -rw-r--r--. 1 root root 1169 Feb  8  2019 trogdor.conf
    -rw-r--r--. 1 root root 1023 Feb  8  2019 zookeeper.properties
复制代码



修改配置文件server.properties


设置broker.id 这个是kafka集群区分每个节点的唯一标志符

image.png


设置kafka的数据存储路径

image.png


注:这个目录下不能有其他非kafka的目录,不然会导致kafka集群无法启动



设置是否可以删除topic


(默认情况先kafka的topic是不允许删除的)


image.png


Kafka的数据保留的时间,默认是7天

image.png


Log文件最大的大小,如果log文件超过1g会创建一个新的文件

image.png


Kafka连接的zk的地址和连接kafka的超时时间

image.png


默认的partition的个数

image.png



启动kafka


  • 启动方式1,kafka只能单节点启动,所以每个kafka节点都需要手动启动,下面的方式阻塞的方式启动。

image.png

启动方式2,守护的方式启动

image.png



kafka操作


查看当前kafka集群已有的topic

image.png


注意:这里连接的zookeeper,而不是连接的kafka




创建topic,指定分片和副本个数

image.png




注:


  • replication-factor:副本数
  • Topic:主题名


如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,下面的例子创建副本为4,则会报错



删除topic

image.png


查看topic信息

image.png



启动生产者生产消息,kafka自带一个生产者和消费者的客户端 A、启动一个生产者,注意此时连的9092端口,连接的kafka集群

image.png

B、启动一个消费者,注意此时连接的还是9092端口,在0.9版本之前连接的还是2181端口

这里我们启动2个消费者来测试一下

image.png


注:如果不指定的消费者组的配置文件的话,默认每个消费者都属于不同的消费者组

C、发送消息,可以看到每个消费者都能收到消息

image.png


D、Kakfa中的实际的数据

image.png




数据结构


Topic是一个逻辑上的概念,而partition是物理上的概念


每个partition又有副本的概念


每个partition对应于一个log文件,该log文件中存储的就是生产者生成的数据,生产者生成的数据会不断的追加到该log的文件末端,且每条数据都有自己的offset,消费者都会实时记录自己消费到了那个offset,以便出错的时候从上次的位置继续消费,这个offset就保存在index文件中


kafka的offset是分区内有序的,但是在不同分区中是无顺序的,kafka不保证数据的全局有序





kafka原理


由于生产者生产的消息会不断追加到log文件的末尾,为防止log文件过大导致数据定位效率低下,Kafka采用分片和索引的机制,将每个partition分为多个segment,每个segment对应2个文件


  • index文件和log文件,这2个文件位于一个相同的文件夹下,文件夹的命名规则为topic名称+分区序号

image.png

Indx和log的文件的文件名是当前这个索引是最小的数据的offset




Kafka如何快速的消费数据呢?


image.png

  • Index文件中存储的数据的索引信息,第一列是offset,第二列这这个数据所对应的log文件中的偏移量,就像我们去读文件,使用seek()设置当前鼠标的位置一样,可以更快的找到数据


  • 如果要去消费offset为3的数据,首先通过二分法找到数据在哪个index文件中,然后在通过index中offset找到数据在log文件中的offset;这样就可以快速的定位到数据,并消费


  • 所以kakfa虽然把数据存储在磁盘中,但是他的读取速度还是非常快的。




相关文章
|
3月前
|
Java Maven Spring
超实用的SpringAOP实战之日志记录
【11月更文挑战第11天】本文介绍了如何使用 Spring AOP 实现日志记录功能。首先概述了日志记录的重要性及 Spring AOP 的优势,然后详细讲解了搭建 Spring AOP 环境、定义日志切面、优化日志内容和格式的方法,最后通过测试验证日志记录功能的准确性和完整性。通过这些步骤,可以有效提升系统的可维护性和可追踪性。
|
4月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
49 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
4月前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
68 4
|
4月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
95 3
|
4月前
|
存储 消息中间件 大数据
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
68 1
|
4月前
|
存储 消息中间件 大数据
大数据-68 Kafka 高级特性 物理存储 日志存储概述
大数据-68 Kafka 高级特性 物理存储 日志存储概述
48 1
|
3月前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
4月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
103 1
|
4月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
125 0
|
11天前
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。