kafka初裝學習

weixin_33858249發表於2016-12-09

安裝kafka之前需要先安裝zookeeper叢集,雖然卡夫卡有自帶的zk叢集,但是建議還是使用單獨的zk叢集

下面是搭建kafka時候整理的一些學習筆記

1.卡夫卡角色
  消費者Consumer 訊息佇列中請求訊息的客戶端
  生產者Producer 想broker釋出訊息的客戶端
  AMQP伺服器端broker 接收生產者釋出的訊息,並路由給伺服器中的佇列
對於卡夫卡來說,一個broker為一個卡夫卡例項
主題概念(Topic):通常一個業務一個主題,一種類別  ?:卡夫卡叢集中是否共享主題
分割槽概念(Partition):一個Topic的訊息資料按照多個分割槽組織,Partition是卡夫卡訊息佇列組織中最小的單位
   ,一個分割槽可以看做事一個FIFO佇列

卡夫卡會在每一臺broker中備份Topic中的Partition

kafka虛擬機器下載命令
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.1.0/kafka_2.10-0.10.1.0.tgz

配置檔案:
server.properties

broker的基本的配置
broker.id  本機的broker在叢集中的編號
port 當前的broker對外提供的tcp埠
host.name 當前broker服務繫結的ip地址,如果不配置,預設為localhost,dns域名解析有失敗率,會導致檔案控制程式碼累計,
 導致linux系統崩潰
num.network.threads   broker進行網路執行緒處理的執行緒數
num.io.threads    broker進行IO處理的執行緒數,IO執行緒數要大於log.dirs的數量
socket.send.buffer.bytes  kafka傳送訊息緩衝區大小
socket.receive.buffer.bytes  kafka接收訊息的緩衝區大小,kafka緩衝區用於接收訊息,當到達一定數量時序列化到磁碟
socket.request.max.bytes  像kafka傳送訊息的最大數,數量不能超過java堆疊大小

log.dirs   佇列中訊息持久化的地方,配置多個用逗號分隔,當配置多個時,持久化時會檢視哪個目錄訊息數比較少
num.partitions  一個topic預設分割槽的個數

zookeeper.connect zookeeper叢集的ip和埠 ,用逗號分隔
zookeeper.connection.timeout.ms 卡夫卡叢集連線zookeeper叢集的超時時間

log的重新整理策略一般使用預設的


log的注入策略
log.retention.hours 傳送到卡夫卡的訊息的失效時間 預設的是168個小時
message.max.bytes  每條訊息能容納的最大值 預設是1 注意如果你增大這個尺寸,你也必須增大你consumer的fetch 尺寸,這樣consumer才能fetch到這些最大尺寸的訊息。
default.replication.factor 每個topic中的備份數量,預設是1個副本,一般改為兩個副本
replica.fetch.max.bytes topic可複製的訊息的最大值,一般和每條訊息能容納的最大值相對應
log.segment.bytes  訊息序列化到檔案,檔案的最大大小


log.retention.check.interval.ms 每個多長時間檢查當前訊息持久化目錄是否存在,和訊息持久化是否失效,單位是秒
log.cleaner.enable=false 是否啟用log壓縮  

其他選項
flush.messages 此項配置指定時間間隔:強制進行fsync持久化日誌。例如,如果這個選項設定為1,那麼每條訊息之後都需要進行fsync,如果設定為5,則每5條訊息就需要進行一次fsync。一般來說,建議你不要設定這個值。此引數的設定,需要在"資料可靠性"與"效能"之間做必要的權衡.如果此值過大,將會導致每次"fsync"的時間較長(IO阻塞),如果此值過小,將會導致"fsync"的次數較多,這也意味著整體的client請求有一定的延遲.物理server故障,將會導致沒有fsync的訊息丟失.

jbs 檢視卡夫卡程式 ,jps是檢視當前所有java程式Id的命令
後臺啟動kafka :./kafka-server-start.sh -daemon ../config/server.properties

建立topic命令                (zk地址)                  (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


其餘更多kafka配置

http://www.cnblogs.com/rilley/p/5391268.html點選開啟連結

相關文章