1. 程式人生 > >kafka 1.0 中文文件(四)--主題級別配置(Topic-Level Configs)

kafka 1.0 中文文件(四)--主題級別配置(Topic-Level Configs)

Kafka topic級別的配置引數。首先是可以在配置檔案中設定全域性性的topic配置引數,其次是可以在建立topic時使用 –confi設定一個或多個自定義的配置。自定義的配置項優先級別會高於全域性配置。
這是在建立一個topic時自定義了最大的訊息位元組數和訊息持久化引數:

> bin/kafka-topics.sh –zookeeper localhost:2181 –create –topic my-topic –partitions 1 –replication-factor 1 –config max.message.bytes=64000 –config flush.messages=1

可以在建立topic後繼續使用命令修改topic中已經定義了的引數,本示例更新my-topic的最大message大小::

> bin/kafka-configs.sh –zookeeper localhost:2181 –entity-type topics –entity-name my-topic –alter –add-config max.message.bytes=128000

要檢查在主題上設定的覆蓋,您可以執行

> bin/kafka-configs.sh –zookeeper localhost:2181 –entity-type topics –entity-name my-topic –describe

或者是刪除指定的topic中的某個自定義引數:

> bin/kafka-topics.sh –zookeeper localhost:2181 –alter –topic my-topic –deleteConfig max.message.bytes

或者是刪除指定的topic中的某個自定義引數:

> bin/kafka-configs.sh –zookeeper localhost:2181 –entity-type topics –entity-name my-topic –alter –delete-config max.message.bytes

以下是主題級配置。 該屬性的伺服器預設配置在“伺服器預設屬性”標題下給出。 給定的伺服器預設配置值只適用於主題,如果它沒有明確的主題配置覆蓋。

topic引數 預設值 broker預設引數 描述
cleanup.policy delete log.cleanup.policy 要麼是”delete“要麼是”compact“; 這個字串指明瞭針對舊日誌部分的利用方式;預設方式(”delete”)將會丟棄舊的部分當他們的回收時間或者尺寸限制到達時。”compact“將會進行日誌壓縮
delete.retention.ms 86400000 (24 hours) log.cleaner.delete.retention.ms 對於壓縮日誌保留的最長時間,也是客戶端消費訊息的最長時間,通log.retention.minutes的區別在於一個控制未壓縮資料,一個控制壓縮後的資料。此項配置可以在topic建立時的置頂引數覆蓋
file.delete.delay.ms 60000 log.segment.delete.delay.ms 從檔案系統中刪除檔案之前的等待時間
flush.messages None log.flush.interval.messages 此項配置指定時間間隔:強制進行fsync日誌。例如,如果這個選項設定為1,那麼每條訊息之後都需要進行fsync,如果設定為5,則每5條訊息就需要進行一次fsync。一般來說,建議你不要設定這個值。此引數的設定,需要在”資料可靠性”與”效能”之間做必要的權衡.如果此值過大,將會導致每次”fsync”的時間較長(IO阻塞),如果此值過小,將會導致”fsync”的次數較多,這也意味著整體的client請求有一定的延遲.物理server故障,將會導致沒有fsync的訊息丟失.
flush.ms None log.flush.interval.ms 此項配置用來置頂強制進行fsync日誌到磁碟的時間間隔;例如,如果設定為1000,那麼每1000ms就需要進行一次fsync。一般不建議使用這個選項
follower.replication.
throttled.replicas
“” follower.replication.
throttled.replicas
在follower一側限制哪一個log副本的列表。該列表應以[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…的形式描述一組副本,或者也可以使用萬用字元“*”來限制該主題的所有副本。
index.interval.bytes 4096 log.index.interval.bytes 預設設定保證了我們每4096個位元組就對訊息新增一個索引,更多的索引使得閱讀的訊息更加靠近,但是索引規模卻會由此增大;一般不需要改變這個選項
leader.replication.
throttled.replicas
“” leader.replication.
throttled.replicas
應該在leader side限制日誌複製的副本列表。 該列表應以[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…的形式描述一組副本,或者也可以使用萬用字元“*”來限制該主題的所有副本。
max.message.bytes 1000000 max.message.bytes kafka追加訊息的最大尺寸。注意如果你增大這個尺寸,你也必須增大你consumer的fetch 尺寸,這樣consumer才能fetch到這些最大尺寸的訊息。
message.format.version 0.11.0-IV2 log.message.format.version 指定broker將用於將訊息新增到日誌檔案的訊息格式版本。 該值應該是有效的ApiVersion。 一些例子是:0.8.2,0.9.0.0,0.10.0。 通過設定特定的訊息格式版本,使用者保證磁碟上的所有現有訊息都小於或等於指定的版本。 不正確地設定這個值將導致使用舊版本的使用者出錯,因為他們將接收到他們不理解的格式的訊息。
message.timestampdifference
.max.ms
9223372036854775807 log.message.timestamp.
difference.max.ms
broker收到訊息時的時間戳和訊息中指定的時間戳之間允許的最大差異。 如果log.message.timestamp.type = CreateTime,如果時間戳的差值超過此閾值,則會拒絕接受這條訊息。 如果log.message.timestamp.type = LogAppendTime,則忽略此配置。允許的最大時間戳差異不應大於log.retention.ms,以避免不必要地頻繁進行日誌滾動。
message.timestamp.type CreateTime log.message.timestamp.type 定義訊息中的時間戳是訊息建立時間還是日誌追加時間。 該值應該是“CreateTime”或“LogAppendTime”
min.cleanable.dirty.ratio 0.5 min.cleanable.dirty.ratio 此項配置控制log壓縮器試圖進行清除日誌的頻率。預設情況下,將避免清除壓縮率超過50%的日誌。這個比率避免了最大的空間浪費
min.compaction.lag.ms 0 log.cleaner.min.
compaction.lag.ms
訊息在日誌中保持未壓縮的最短時間。 僅適用於正在壓縮的日誌。
min.insync.replicas 1 min.insync.replicas 當producer設定request.required.acks為-1時,min.insync.replicas指定replicas的最小數目(必須確認每一個repica的寫資料都是成功的),如果這個數目沒有達到,producer會產生異常。
preallocate false log.preallocate 是否預建立新的段檔案,windows推薦使用
retention.bytes None log.retention.bytes 如果使用“delete”的retention 策略,這項配置就是指在刪除日誌之前,日誌所能達到的最大尺寸。預設情況下,沒有尺寸限制而只有時間限制
retention.ms 7 days log.retention.minutes 如果使用“delete”的retention策略,這項配置就是指刪除日誌前日誌儲存的時間。
segment.bytes 1GB log.segment.bytes kafka中log日誌是分成一塊塊儲存的,此配置是指log日誌劃分成塊的大小
segment.index.bytes 10MB log.index.size.max.bytes 此配置是有關offsets和檔案位置之間對映的索引檔案的大小;一般不需要修改這個配置
segment.ms 7 days log.roll.hours 即使log的分塊檔案沒有達到需要刪除、壓縮的大小,一旦log 的時間達到這個上限,就會強制新建一個log分塊檔案
segment.jitter.ms 0 log.roll.jitter.{ms,hours} The maximum jitter to subtract from logRollTimeMillis.
compression.type producer compression.type 為主題指定一個壓縮型別,此配置接受標準壓縮編碼(’gzip’, ‘snappy’, lz4),另外接受’uncompressed‘相當於不壓縮, ‘producer’ 意味著壓縮型別由producer指定。
unclean.leader.election.enable false unclean.leader.election.enable 指明瞭是否能夠使不在ISR中replicas follower設定用來作為leader