kafka 安裝配置

一、Zookeeper的安裝與配置

1.安裝

解壓安裝文件到zookeeper

tar -zxf zookeeper-3.4.10.tar.gz
重命名

sudo mv zookeeper-3.4.10 /usr/local/
2. 配置

創建數據目錄tmp/data

mkdir -p /var/data/zookeeper/data

sudo chmod 777 /var/data/zookeeper/data
將zoo_sample.cfg複製到zoo.cfg

cp /usr/local/zookeeper-3.4.10/conf/zoo_sample.cfg

/usr/local/zookeeper-3.4.10/conf/zoo.cfg
編輯zookeeper配置文件

sudo nano /usr/local/zookeeper-3.4.10/conf/zoo.cfg
改寫dataDir目錄位置

dataDir=/var/data/zookeeper/data
修改log目錄

dataLogDir=/var/log/zookeeper/logs
告知zookeeper集羣信息 2888是zookeeper服務之間通信的端口;3888是zookeeper與其他應用程序通信的端口

server.0=node1:2888:3888

server.1=node2:2888:3888

server.2=node3:2888:3888
3.將安裝文件發送到其他節點

//將zookeeper目錄發送到node2上

scp -r ~/zookeeper-3.4.10 [email protected]:/usr/local
//將zookeeper目錄發送到node3上

scp -r ~/zookeeper-3.4.10 [email protected]:/usr/local
在master上運行:

sudo nano /var/zookeeper/data/myid
//輸入 0 保存退出

在node2上運行:

sudo nano /var/zookeeper/data/myid
//輸入 1 保存退出

在node3上運行:

sudo nano /var/zookeeper/data/myid
//輸入 2 保存退出

每臺機器都要操作

sudo chmod 757 -R /usr/local/zookeeper-3.4.10
啓動zookeeper
每臺機器都要啓動

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh start
關閉zookeeper
每臺機器都要關閉

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh stop
驗證機器狀態
可以通過ZooKeeper的腳本來查看啓動狀態,包括集羣中各個結點的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集羣中的每個結點上查詢的結果。

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh status
注:只有在集羣所有機器都啓動的情況下才可以查看

ps:記得修改防火牆配置

二、kafka的安裝配置

1.安裝

sudo tar -zxf kafka_2.10-0.9.0.0.tgz -C /usr/local
2.配置

cd /usr/local/kafka_2.10-0.9.0.0/config
配置生成數據存放目錄

sudo mkdir -p /var/log/kafka/logs
修改數據目錄的屬組和屬主

sudo chown -R QCloud:QCloud /usr/local/kafka

sudo nano server.properties

broker.id=0 #當前機器在kafka機器裏唯一標識,與zookeeper的myid一個意思,由於我使用獨立zookeeper這裏可以註釋掉

port=9092 #socket監聽的端口

host.name=node1#broker綁定的IP,我這裏三臺機器都綁定了,後面遠程複製的時候記得修改

num.network.threads=3 #broker處理網絡的線程數目

num.io.threads=8 #broker處理IO的線程數目

socket.send.buffer.bytes=102400#kafka發送數據緩衝區的大小,到達閾值才發送

socket.receive.buffer.bytes=102400#kafka接收數據緩衝區的大小,達到閾值才落地

socket.request.max.bytes=104857600#kafka所能接受的數據最大值,100MB,這個值應該小於機器配置的Java heap,一般Java heap爲內存的1/4

log.dirs=/var/log/kafka/logs#存儲消息的目錄位置

num.partitions=1#每個主題的默認分區數目,更多的分區可以允許更多的消費,可以提高性能

num.recovery.threads.per.data.dir#在kafka啓動和關閉flush時,還原日誌時,對於每個數據目錄所能使用的線程數目

log.flush.interval.message=10000#當消息達到10000條時就會強制刷一次數據到磁盤

log.flush.interval.ms=1000 #每過1秒就會強制刷數據到磁盤,單位毫秒

log.retention.hours=16#消息最大持久化時間,單位小時,即7天

log.retention.bytes=1073741824#一種持久化策略,當剩餘段文件不低於這個閾值,當前段就會從日誌消息中刪除

log.segment.bytes=1073741824#一個段文件的最大值,達到最大值會另起一個新的segment

log.retention.check.interval.ms=300000#每300秒去檢驗一下段文件是否能被刪除

zookeeper.connect=192.168.1.15:2181,192.168.1.16:2181,192.168.1.17:2181 #設置zookeeper的端口

zookeeper.connect.timeout.ms=6000 #連接zookeeper的超時時間
ps:其他節點只需要修改hostname即可

  1. 測試

先啓動zookeeper

/usr/local/zookeeper-3.4.10/bin/zkServer.sh start
各個節點啓動kafka

./kafka-server-start.sh -daemon ../config/server.properties
關閉kafka集羣

./kafka-server-stop.sh
創建一個Topic實例:

./kafka-topics.sh –create –zookeeper 192.168.1.15:2181 –replication-factor 3 –partitions 1 –topic hello
在一臺機器上創建一個發佈者

./kafka-console-producer.sh –broker-list 192.168.1.16:9092 –topic hello
在一臺機器上創建一個訂閱者

./kafka-console-consumer.sh –zookeeper 192.168.1.17:2181 –topic hello –from-beginning
至此搭建完畢

  1. kafka配置優化

配置優化都是修改server.properties文件中參數值

1.網絡和io操作線程配置優化

broker處理消息的最大線程數

num.network.threads=xxx

broker處理磁盤IO的線程數

num.io.threads=xxx
建議配置: 一般num.network.threads主要處理網絡io,讀寫緩衝區數據,基本沒有io等待,配置線程數量爲cpu核數加1.

num.io.threads主要進行磁盤io操作,高峯期可能有些io等待,因此配置需要大些。配置線程數量爲cpu核數2倍,最大不超過3倍.

2.log數據文件刷新策略

爲了大幅度提高producer寫入吞吐量,需要定期批量寫文件。 建議配置:

每當producer寫入10000條消息時,刷數據到磁盤

log.flush.interval.messages=10000

每間隔1秒鐘時間,刷數據到磁盤

log.flush.interval.ms=1000
3.日誌保留策略配置

當kafka server的被寫入海量消息後,會生成很多數據文件,且佔用大量磁盤空間,如果不及時清理,可能磁盤空間不夠用,kafka默認是保留7天。

建議配置:
保留三天,也可以更短
log.retention.hours=72
段文件配置1GB,有利於快速回收磁盤空間,重啓kafka加載也會加快(如果文件過小,則文件數量比較多,
kafka啓動時是單線程掃描目錄(log.dir)下所有數據文件)
log.segment.bytes=1073741824
4.配置jmx服務

kafka server中默認是不啓動jmx端口的,需要用戶自己配置
vim bin/kafka-run-class.sh

最前面添加一行

JMX_PORT=8060

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章