kafka topic

1.全局配置與topic級別的關係是什麼?
2.你認爲topic級別配置哪些比較有用?






1.topic級別配置用法
配置topic級別參數時,相同(參數)屬性topic級別會覆蓋全局的,否則默認爲全局配置屬性值。
創建topic參數可以設置一個或多個--config "Property(屬性)",下面是創建一個topic名稱爲"my-topic"例子,它設置了2個參數max message size 和 flush rate:

1) 創建topic時配置參數

root@lizhitao:/data/kafka_2.10-0.8.1_03# bin/kafka-topics.sh --zookeeper 192.168.2.225:2183/config/mobile/mq/mafka02 --create --topic my-topic --partitions 1   --replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1

2)修改topic時配置參數
覆蓋已經有topic參數,下面例子修改"my-topic"的max message屬性

root@lizhitao:/data/kafka_2.10-0.8.1_03#  bin/kafka-topics.sh --zookeeper192.168.2.225:2183/config/mobile/mq/mafka02  --alter --topic my-topic  --config max.message.bytes=128000

3) 刪除topic級別配置參數

root@lizhitao:/data/kafka_2.10-0.8.1_03# bin/kafka-topics.sh --zookeeper192.168.2.225:2183/config/mobile/mq/mafka02  --alter --topic my-topic  --deleteConfig max.message.bytes

4)topic級別在zookeeper存儲結構
筆者配置的zk kafka集羣的根目錄爲/config/mobile/mq/mafka02,因此所有節點信息都在此目錄下。
"my-topic"在zk上路徑爲xxx/config/topics/my-topic,存儲內容如下:
{
    "version": 1,
    "config": {
        "max.message.bytes": "12800000",
        "flush.messages": "1000"
    }
}


2.topic級別配置屬性表
以下是topic級別配置, kafak server中默認配置爲下表“Server Default Property”列,當需要設置topic級別配置時,屬性設置爲“Property(屬性)”列


Property(屬性)
Default(默認值)
Server Default Property(server.properties)
說明(解釋)
cleanup.policy
delete
log.cleanup.policy
日誌清理策略選擇有:delete和compact主要針對過期數據的處理,或是日誌文件達到限制的額度,會被 topic創建時的指定參數覆蓋
delete.retention.ms
86400000 (24 hours)
log.cleaner.delete.retention.ms
對於壓縮的日誌保留的最長時間,也是客戶端消費消息的最長時間,同log.retention.minutes的區別在於一個控制未壓縮數據,一個控制壓縮後的數據。會被topic創建時的指定參數覆蓋
flush.messages
None
log.flush.interval.messages
log文件”sync”到磁盤之前累積的消息條數,因爲磁盤IO操作是一個慢操作,但又是一個”數據可靠性"的必要手段,所以此參數的設置,需要在"數據可靠性"與"性能"之間做必要的權衡.如果此值過大,將會導致每次"fsync"的時間較長(IO阻塞),如果此值過小,將會導致"fsync"的次數較多,這也意味着整體的client請求有一定的延遲.物理server故障,將會導致沒有fsync的消息丟失.
flush.ms
None
log.flush.interval.ms
僅僅通過interval來控制消息的磁盤寫入時機,是不足的.此參數用於控制"fsync"的時間間隔,如果消息量始終沒有達到閥值,但是離上一次磁盤同步的時間間隔達到閥值,也將觸發.
index.interval.bytes
4096
log.index.interval.bytes
當執行一個fetch操作後,需要一定的空間來掃描最近的offset大小,設置越大,代表掃描速度越快,但是也更好內存,一般情況下不需要搭理這個參數
message.max.bytes
1,000,000
message.max.bytes
表示消息的最大大小,單位是字節
min.cleanable.dirty.ratio
0.5
log.cleaner.min.cleanable.ratio
日誌清理的頻率控制,越大意味着更高效的清理,同時會存在一些空間上的浪費,會被topic創建時的指定參數覆蓋
retention.bytes
None
log.retention.bytes
topic每個分區的最大文件大小,一個topic的大小限制 = 分區數*log.retention.bytes。-1沒有大小限log.retention.bytes和log.retention.minutes任意一個達到要求,都會執行刪除,會被topic創建時的指定參數覆蓋
retention.ms
None
log.retention.minutes
數據存儲的最大時間超過這個時間會根據log.cleanup.policy設置的策略處理數據,也就是消費端能夠多久去消費數據
log.retention.bytes和log.retention.minutes達到要求,都會執行刪除,會被topic創建時的指定參數覆蓋
segment.bytes
1 GB
log.segment.bytes
topic的分區是以一堆segment文件存儲的,這個控制每個segment的大小,會被topic創建時的指定參數覆蓋
segment.index.bytes
10 MB
log.index.size.max.bytes
對於segment日誌的索引文件大小限制,會被topic創建時的指定參數覆蓋
log.roll.hours
7 days
log.roll.hours
這個參數會在日誌segment沒有達到log.segment.bytes設置的大小,也會強制新建一個segment會被 topic創建時的指定參數覆蓋


引用參考:
http://kafka.apache.org/documentation.html#topic-config




http://blog.csdn.net/lizhitao/article/details/42184991
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章