【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虽然把数据存储在磁盘中,但是他的读取速度还是非常快的。




相关文章
|
10天前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
12 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
13天前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
20 4
|
13天前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
29 3
|
13天前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
30 2
|
13天前
|
存储 消息中间件 大数据
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
25 1
|
13天前
|
存储 消息中间件 大数据
大数据-68 Kafka 高级特性 物理存储 日志存储概述
大数据-68 Kafka 高级特性 物理存储 日志存储概述
16 1
|
1月前
|
消息中间件 Kafka API
python之kafka日志
python之kafka日志
22 3
|
1月前
|
消息中间件 存储 监控
Kafka的logs目录下的文件都是什么日志?
Kafka的logs目录下的文件都是什么日志?
62 11
|
1月前
|
消息中间件 Java Linux
linux 之centos7安装kafka;;;;;待补充,未完成
linux 之centos7安装kafka;;;;;待补充,未完成
|
6天前
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。