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 |