Kafka安裝詳細教程

 

一、安裝Zookeeper

本文以 zookeeper-3.4.10 版本

1、下載

下載地址:https://zookeeper.apache.org/releases.html

2、解壓

解壓到 F:\tool 目錄

3、修改配置

找到解壓後  F:/tool/zookeeper-3.4.10/config/zoo_sample.cfg  文件

複製一份重命名爲zoo.cfg (默認的名稱是這個),

#修改配置
dataDir=f:/zookeeper/data

#新增配置
dataLogDir=f:/zookeeper/log

zoo.cfg文件說明:

①tickTime:維持leader與follower以及客戶端之間的心跳頻率時間(單位毫秒,默認2000ms)

②initLimit:允許follower從節點追隨leader主節點時的初始延遲,默認是10次,也就是允許的延遲時間爲2000*10=20秒。如果在這個時間內還沒有連接上的話,leader就會認爲follower有問題,將會拋棄你不跟你玩了。

③syncLimit:默認是5.leader與follower之間的協作允許最大延遲時長,tickTime * syncLimit=2000*5=10秒。10秒之內沒響應,也會認爲follower存在問題。

④dataDir:用於存儲持久化文件(日誌、快照之類的)的路徑。默認 /tmp/zookeeper 最好不要用/tmp這類的目錄,一般改爲/var,var在Linux中是存放臨時文件的。

⑤cliientPort:客戶端連接的端口號。默認是2181

⑥maxClientCnxns:最大的客戶端連接數。也就是最多允許多少個客戶端連接本臺機器的zk

⑦配置集羣中所有的節點信息:3888端口用於在沒有leader時所有節點在3888建立socket連接進行投票選舉出leader;2888端口是follower從節點連接leader主節點的端口。

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

在zk中,leader可以理解成是“謙讓”出來的,1,2,3,4中誰是最大的誰就立馬是leader

過半通過:一共4個節點有 4/2+1=3臺通過就行。比如1,2,3啓動了之後3就是leader,因爲遵循的是過半通過原則。
 

4、添加系統環境變量:

       在系統變量中添加ZOOKEEPER_HOME = D:\Java\Tool\zookeeper-3.4.10

       編輯path系統變量,添加爲路徑%ZOOKEEPER_HOME%\bin

5、啓動Zookeeper

使用 Dos  輸入命令 :zkServer

 

二、安裝kafka

1、下載

Kafka官網下載安裝包 http://kafka.apache.org/downloads.html

我們下載第二種(已經被編譯過的),將安裝包存在在 /software/ 下

 

2、解壓

解壓到 F:/tool 目錄

3、修改配置

配置文件目錄:F:/tool/kafka_2.13-2.4.1/config

修改配置文件:F:/tool/kafka_2.13-2.4.1/config/server.properties

找到以下配置項修改(事先講好文件夾:F:/tool/kafka/log)

log.dirs=F:/tool/kafka/log
zookeeper.connect=localhost:2181

配置文件說明

server.properties

#broker的全局唯一編號,不能重複
broker.id=0

#用來監聽鏈接的端口,producer或consumer將在此端口建立連接
port=9092

#處理網絡請求的線程數量
num.network.threads=3

#用來處理磁盤IO的線程數量
num.io.threads=8 

#發送套接字的緩衝區大小
socket.send.buffer.bytes=102400 

#接受套接字的緩衝區大小
socket.receive.buffer.bytes=102400 

#請求套接字的緩衝區大小
socket.request.max.bytes=104857600 

#kafka消息存放的路徑
log.dirs=/home/servers-kafka/logs/kafka 

#topic在當前broker上的分片個數
num.partitions=2 

#用來恢復和清理data下數據的線程數量
num.recovery.threads.per.data.dir=1 

#segment文件保留的最長時間,超時將被刪除
log.retention.hours=168 

#滾動生成新的segment文件的最大時間
log.roll.hours=168 

#日誌文件中每個segment的大小,默認爲1G
log.segment.bytes=1073741824

#週期性檢查文件大小的時間
log.retention.check.interval.ms=300000 

#日誌清理是否打開
log.cleaner.enable=true 

#broker需要使用zookeeper保存meta數據
zookeeper.connect=hadoop02:2181,hadoop03:2181,hadoop04:2181 

#zookeeper鏈接超時時間
zookeeper.connection.timeout.ms=6000 

#partion buffer中,消息的條數達到閾值,將觸發flush到磁盤
log.flush.interval.messages=10000 

#消息buffer的時間,達到閾值,將觸發flush到磁盤
log.flush.interval.ms=3000 

#刪除topic需要server.properties中設置delete.topic.enable=true否則只是標記刪除
delete.topic.enable=true 

#此處的host.name爲本機IP(重要),如果不改,則客戶端會拋出:Producerconnection to localhost:9092 unsuccessful 錯誤!
host.name=hadoop02

 consumer.properties

# zookeeper連接服務器地址
zookeeper.connect=hadoop02:2181,hadoop03:2181,hadoop04:2181 

# zookeeper的session過期時間,默認5000ms,用於檢測消費者是否掛掉
zookeeper.session.timeout.ms=5000 

#當消費者掛掉,其他消費者要等該指定時間才能檢查到並且觸發重新負載均衡
zookeeper.connection.timeout.ms=10000 

# 指定多久消費者更新offset到zookeeper中。注意offset更新時基於time而不是每次獲得的消息。一旦在更新zookeeper發生異常並重啓,將可能拿到已拿到過的消息
zookeeper.sync.time.ms=2000 

#指定消費組
group.id=xxx 

# 當consumer消費一定量的消息之後,將會自動向zookeeper提交offset信息
# 注意offset信息並不是每消費一次消息就向zk提交一次,而是現在本地保存(內存),並定期提交,默認爲true
auto.commit.enable=true 

# 自動更新時間。默認60 * 1000
auto.commit.interval.ms=1000 

# 當前consumer的標識,可以設定,也可以有系統生成,主要用來跟蹤消息消費情況,便於觀察
conusmer.id=xxx 

# 消費者客戶端編號,用於區分不同客戶端,默認客戶端程序自動產生
client.id=xxxx 

# 最大取多少塊緩存到消費者(默認10)
queued.max.message.chunks=50 

# 當有新的consumer加入到group時,將會reblance,此後將會有partitions的消費端遷移到新  的consumer上,如果一個consumer獲得了某個partition的消費權限,那麼它將會向zk註冊"Partition Owner registry"節點信息,但是有可能此時舊的consumer尚沒有釋放此節點, 此值用於控制,註冊節點的重試次數.
rebalance.max.retries=5 

# 獲取消息的最大尺寸,broker不會像consumer輸出大於此值的消息chunk 每次feth將得到多條消息,此值爲總大小,提升此值,將會消耗更多的consumer端內存
fetch.min.bytes=6553600 

# 當消息的尺寸不足時,server阻塞的時間,如果超時,消息將立即發送給consumer
fetch.wait.max.ms=5000
socket.receive.buffer.bytes=655360 

# 如果zookeeper沒有offset值或offset值超出範圍。那麼就給個初始的offset。有smallest、largest、anything可選,分別表示給當前最小的offset、當前最大的offset、拋異常。默認largest
auto.offset.reset=smallest

# 指定序列化處理類
derializer.class=kafka.serializer.DefaultDecoder

 

4、啓動kafka

注意:先zookeeper在啓動,再啓動kafka

進入kafka目錄:F:\tool\kafka_2.13-2.4.1

運行命令:

.\bin\windows\kafka-server-start.bat .\config\server.properties

可能會報錯:“找不到或無法加載主類 Files\java\jdk-9.0.1\lib;C:\Program”

 解決(3)的辦法:

    在kafka安裝目錄中找到bin\windows目錄中的kafka-run-class.bat爲%CLASSPATH%加上雙引號(可用Matlab打開,並進行搜索)

    修改前:setCOMMAND=%JAVA%%KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS%%KAFKA_LOG4J_OPTS% -cp%CLASSPATH% %KAFKA_OPTS% %*   

    修改後:SetCOMMAND=%JAVA%%KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS%%KAFKA_LOG4J_OPTS% -cp"%CLASSPATH%"%KAFKA_OPTS% %*
 

修改之後重新啓動

啓動成功!

 

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