日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CC00060.kafka——|Hadoopkafka.V45|——|kafka.v45|日志存储概述|

發(fā)布時間:2024/1/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC00060.kafka——|Hadoopkafka.V45|——|kafka.v45|日志存储概述| 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、日志存儲概述

?

### --- 日志存儲概述~~~ Kafka 消息是以主題為單位進行歸類,各個主題之間是彼此獨立的,互不影響。 ~~~ 每個主題又可以分為一個或多個分區(qū)。 ~~~ 每個分區(qū)各自存在一個記錄消息數(shù)據(jù)的日志文件。 [root@hadoop01 ~]# ls /opt/yanqi/servers/kafka/kafka-logs/ cleaner-offset-checkpoint meta.properties replication-offset-checkpoint tp_demo_03-1 tp_re_01-3 tp_re_02-0 tp_re_02-2 log-start-offset-checkpoint recovery-point-offset-checkpoint tp_demo_03-0 tp_demo_03-2 tp_re_01-4 tp_re_02-1[root@hadoop01 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --describe --topic tp_demo_03 Topic:tp_demo_03 PartitionCount:3 ReplicationFactor:2 Configs:Topic: tp_demo_03 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 1,0Topic: tp_demo_03 Partition: 1 Leader: 1 Replicas: 1,0 Isr: 0,1Topic: tp_demo_03 Partition: 2 Leader: 0 Replicas: 0,1 Isr: 1,0 ~~~ # 圖中,創(chuàng)建了一個 tp_demo_03 主題,~~~ 其存在3個 Parition,對應的每個Parition下存在一個[Topic-Parition] 命名的消息日志文件。 ~~~ 在理想情況下,數(shù)據(jù)流量分攤到各個 Parition 中,實現(xiàn)了負載均衡的效果。 ~~~ 在分區(qū)日志文件中,你會發(fā)現(xiàn)很多類型的文件,比如: .index、.timestamp、.log、.snapshot 等。 ~~~ 其中,文件名一致的文件集合就稱為 LogSement。 [root@hadoop01 ~]# ls /opt/yanqi/servers/kafka/kafka-logs/tp_demo_03-0/ 00000000000000000000.index 00000000000000000000.log 00000000000000000000.timeindex leader-epoch-checkpoint [root@hadoop01 ~]# ls /opt/yanqi/servers/kafka/kafka-logs/tp_demo_03-1/ 00000000000000000000.index 00000000000000000000.log 00000000000000000000.timeindex leader-epoch-checkpoint [root@hadoop01 ~]# ls /opt/yanqi/servers/kafka/kafka-logs/tp_demo_03-2/ 00000000000000000000.index 00000000000000000000.log 00000000000000000000.timeindex leader-epoch-checkpoint ### --- LogSegment~~~ 分區(qū)日志文件中包含很多的 LogSegment ~~~ Kafka 日志追加是順序寫入的 ~~~ LogSegment 可以減小日志文件的大小 ~~~ 進行日志刪除的時候和數(shù)據(jù)查找的時候可以快速定位。 ~~~ ActiveLogSegment 是活躍的日志分段,擁有文件擁有寫入權限,其余的 LogSegment 只有只讀的權限。 ~~~ 日志文件存在多種后綴文件,重點需要關注 .index、.timestamp、.log 三種類型。 二、類別作用
后綴名說明
.index偏移量索引文件
.timestamp時間戳索引文件
.log日志文件
.snapshot快照文件
.deleted
.cleaned日志清理臨時文件
.swap日志壓縮之后臨時文件
.leader-epoch-checkpoint
~~~ # 每個 LogSegment 都有一個基準偏移量,表示當前 LogSegment 中第一條消息的 offset。 ~~~ 偏移量是一個 64 位的長整形數(shù),固定是20位數(shù)字,長度未達到,用 0 進行填補, ~~~ 索引文件和日志文件都由該作為文件名命名規(guī)則(00000000000000000000.index、00000000000000000000.timestamp、00000000000000000000.log)。 ~~~ 如果日志文件名為 00000000000000000121.log , ~~~ 則當前日志文件的一條數(shù)據(jù)偏移量就是121(偏移量從 0 開始)。 三、日志與索引文件
配置條目默認值說明
log.index.interval.bytes4096(4K)增加索引項字節(jié)間隔密度,
會影響索引文件中的區(qū)間密度和查詢效率
log.segment.bytes1073741824(1G)日志文件最大值
log.roll.ms當前日志分段中消息的最大時間戳與當前系統(tǒng)的
時間戳的差值允許的最大范圍,單位毫秒
log.roll.hours168(7天)當前日志分段中消息的最大時間戳與當前系統(tǒng)的
時間戳的差值允許的最大范圍,單位小時
log.index.size.max.bytes10485760(10MB)觸發(fā)偏移量索引文件或時間戳索引文件分段字節(jié)限額
### --- 配置項默認值說明~~~ 偏移量索引文件用于記錄消息偏移量與物理地址之間的映射關系。 ~~~ 時間戳索引文件則根據(jù)時間戳查找對應的偏移量。 ~~~ Kafka 中的索引文件是以稀疏索引的方式構造消息的索引, ~~~ 并不保證每一個消息在索引文件中都有對應的索引項。 ~~~ 每當寫入一定量的消息時, ~~~ 偏移量索引文件和時間戳索引文件分別增加一個偏移量索引項和時間戳索引項。 ~~~ 通過修改 log.index.interval.bytes 的值,改變索引項的密度。 ### --- 切分文件~~~ # 當滿足如下幾個條件中的其中之一,就會觸發(fā)文件的切分: ~~~ 當前日志分段文件的大小超過了 broker 端參數(shù) log.segment.bytes 配置的值。 ~~~ log.segment.bytes 參數(shù)的默認值為 1073741824,即 1GB。 ~~~ 當前日志分段中消息的最大時間戳與 ~~~ 當前系統(tǒng)的時間戳的差值大于 log.roll.ms 或log.roll.hours 參數(shù)配置的值。 ~~~ 如果同時配置了 log.roll.ms 和 log.roll.hours 參數(shù),那么 log.roll.ms 的優(yōu)先級高。 ~~~ 默認情況下,只配置了 log.roll.hours 參數(shù),其值為168,即 7 天。 ~~~ 偏移量索引文件或時間戳索引文件的大小達到 broker 端參數(shù) log.index.size.max.bytes配置的值。 ~~~ log.index.size.max.bytes 的默認值為 10485760,即 10MB。 ~~~ 追加的消息的偏移量與當前日志分段的偏移量之間的差值大于 Integer.MAX_VALUE , ~~~ 即要追加的消息的偏移量不能轉變?yōu)橄鄬ζ屏俊? ~~~ # 為什么是 Integer.MAX_VALUE ?~~~ 1024 * 1024 * 1024=1073741824 ~~~ 在偏移量索引文件中,每個索引項共占用 8 個字節(jié),并分為兩部分。 ~~~ 相對偏移量和物理地址。 ~~~ 相對偏移量:表示消息相對與基準偏移量的偏移量,占 4 個字節(jié) ~~~ 物理地址:消息在日志分段文件中對應的物理位置,也占 4 個字節(jié) ~~~ 4 個字節(jié)剛好對應 Integer.MAX_VALUE ,如果大于 Integer.MAX_VALUE , ~~~ 則不能用 4 個字節(jié)進行表示了。 ### --- 索引文件切分過程~~~ 索引文件會根據(jù) log.index.size.max.bytes 值進行預先分配空間,即文件創(chuàng)建的時候就是最大值 ~~~ 當真正的進行索引文件切分的時候,才會將其裁剪到實際數(shù)據(jù)大小的文件。 ~~~ 這一點是跟日志文件有所區(qū)別的地方。其意義降低了代碼邏輯的復雜性。

總結

以上是生活随笔為你收集整理的CC00060.kafka——|Hadoopkafka.V45|——|kafka.v45|日志存储概述|的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。