Kafka topic級別的配置參數(shù)。首先是可以在配置文件中設(shè)置全局性的topic配置參數(shù),其次是可以在創(chuàng)建topic時使用 --confi設(shè)置一個或多個自定義的配置。自定義的配置項優(yōu)先級別會高于全局配置。
這是在創(chuàng)建一個topic時自定義了最大的消息字節(jié)數(shù)和消息持久化參數(shù):
> 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
可以在創(chuàng)建topic后繼續(xù)使用命令修改topic中已經(jīng)定義了的參數(shù),本示例更新my-topic的最大message大?。海?/p>
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --alter --add-config max.message.bytes=128000
要檢查在主題上設(shè)置的覆蓋,您可以執(zhí)行
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic –describe
或者是刪除指定的topic中的某個自定義參數(shù):
> bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic --deleteConfig max.message.bytes
或者是刪除指定的topic中的某個自定義參數(shù):
> bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --alter --delete-config max.message.bytes
以下是主題級配置。 該屬性的服務(wù)器默認(rèn)配置在“服務(wù)器默認(rèn)屬性”標(biāo)題下給出。 給定的服務(wù)器默認(rèn)配置值只適用于主題,如果它沒有明確的主題配置覆蓋。
| topic參數(shù) | 默認(rèn)值 | broker默認(rèn)參數(shù) | 描述 |
|---|---|---|---|
| cleanup.policy | delete | log.cleanup.policy | 要么是”delete“要么是”compact“; 這個字符串指明了針對舊日志部分的利用方式;默認(rèn)方式("delete")將會丟棄舊的部分當(dāng)他們的回收時間或者尺寸限制到達時。”compact“將會進行日志壓縮 |
| delete.retention.ms | 86400000 (24 hours) | log.cleaner.delete.retention.ms | 對于壓縮日志保留的最長時間,也是客戶端消費消息的最長時間,通log.retention.minutes的區(qū)別在于一個控制未壓縮數(shù)據(jù),一個控制壓縮后的數(shù)據(jù)。此項配置可以在topic創(chuàng)建時的置頂參數(shù)覆蓋 |
| file.delete.delay.ms | 60000 | log.segment.delete.delay.ms | 從文件系統(tǒng)中刪除文件之前的等待時間 |
| flush.messages | None | log.flush.interval.messages | 此項配置指定時間間隔:強制進行fsync日志。例如,如果這個選項設(shè)置為1,那么每條消息之后都需要進行fsync,如果設(shè)置為5,則每5條消息就需要進行一次fsync。一般來說,建議你不要設(shè)置這個值。此參數(shù)的設(shè)置,需要在"數(shù)據(jù)可靠性"與"性能"之間做必要的權(quán)衡.如果此值過大,將會導(dǎo)致每次"fsync"的時間較長(IO阻塞),如果此值過小,將會導(dǎo)致"fsync"的次數(shù)較多,這也意味著整體的client請求有一定的延遲.物理server故障,將會導(dǎo)致沒有fsync的消息丟失. |
| flush.ms | None | log.flush.interval.ms | 此項配置用來置頂強制進行fsync日志到磁盤的時間間隔;例如,如果設(shè)置為1000,那么每1000ms就需要進行一次fsync。一般不建議使用這個選項 |
| follower.replication.throttled.replicas | "" | follower.replication.throttled.replicas | 在follower一側(cè)限制哪一個log副本的列表。該列表應(yīng)以[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:...的形式描述一組副本,或者也可以使用通配符“*”來限制該主題的所有副本。 |
| index.interval.bytes | 4096 | log.index.interval.bytes | 默認(rèn)設(shè)置保證了我們每4096個字節(jié)就對消息添加一個索引,更多的索引使得閱讀的消息更加靠近,但是索引規(guī)模卻會由此增大;一般不需要改變這個選項 |
| leader.replication.throttled.replicas | "" | leader.replication.throttled.replicas | 應(yīng)該在leader side限制日志復(fù)制的副本列表。 該列表應(yīng)以[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將用于將消息添加到日志文件的消息格式版本。 該值應(yīng)該是有效的ApiVersion。 一些例子是:0.8.2,0.9.0.0,0.10.0。 通過設(shè)置特定的消息格式版本,用戶保證磁盤上的所有現(xiàn)有消息都小于或等于指定的版本。 不正確地設(shè)置這個值將導(dǎo)致使用舊版本的用戶出錯,因為他們將接收到他們不理解的格式的消息。 |
| message.timestampdifference.max.ms | 9223372036854775807 | log.message.timestamp.difference.max.ms | broker收到消息時的時間戳和消息中指定的時間戳之間允許的最大差異。 如果log.message.timestamp.type = CreateTime,如果時間戳的差值超過此閾值,則會拒絕接受這條消息。 如果log.message.timestamp.type = LogAppendTime,則忽略此配置。允許的最大時間戳差異不應(yīng)大于log.retention.ms,以避免不必要地頻繁進行日志滾動。 |
| message.timestamp.type | CreateTime | log.message.timestamp.type | 定義消息中的時間戳是消息創(chuàng)建時間還是日志追加時間。 該值應(yīng)該是“CreateTime”或“LogAppendTime” |
| min.cleanable.dirty.ratio | 0.5 | min.cleanable.dirty.ratio | 此項配置控制log壓縮器試圖進行清除日志的頻率。默認(rèn)情況下,將避免清除壓縮率超過50%的日志。這個比率避免了最大的空間浪費 |
| min.compaction.lag.ms | 0 | log.cleaner.min.compaction.lag.ms | 消息在日志中保持未壓縮的最短時間。 僅適用于正在壓縮的日志。 |
| min.insync.replicas | 1 | min.insync.replicas | 當(dāng)producer設(shè)置request.required.acks為-1時,min.insync.replicas指定replicas的最小數(shù)目(必須確認(rèn)每一個repica的寫數(shù)據(jù)都是成功的),如果這個數(shù)目沒有達到,producer會產(chǎn)生異常。 |
| preallocate | false | log.preallocate | 是否預(yù)創(chuàng)建新的段文件,windows推薦使用 |
| retention.bytes | None | log.retention.bytes | 如果使用“delete”的retention 策略,這項配置就是指在刪除日志之前,日志所能達到的最大尺寸。默認(rèn)情況下,沒有尺寸限制而只有時間限制 |
| retention.ms | 7 days | log.retention.minutes | 如果使用“delete”的retention策略,這項配置就是指刪除日志前日志保存的時間。 |
| segment.bytes | 1GB | log.segment.bytes | kafka中l(wèi)og日志是分成一塊塊存儲的,此配置是指log日志劃分成塊的大小 |
| segment.index.bytes | 10MB | log.index.size.max.bytes | 此配置是有關(guān)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 | 為主題指定一個壓縮類型,此配置接受標(biāo)準(zhǔn)壓縮編碼('gzip', 'snappy', lz4),另外接受'uncompressed‘相當(dāng)于不壓縮, 'producer' 意味著壓縮類型由producer指定。 |
| unclean.leader.election.enable | false | unclean.leader.election.enable | 指明了是否能夠使不在ISR中replicas follower設(shè)置用來作為leader |