天天看點

kafka(三):win10搭建kafka環境

說明

本部落格每周五更新一次。

本片博文主要介紹win10安裝kafka過程,官方腳本說明和資料生成、接受測試,實踐性強。

運作環境

jdk 1.8

kafka 2.4.1

scala 2.12

搭建步驟

下載下傳kafka 位址 官方版内置zkkafka2.4.1 scala 2.12下載下傳位址

建立檔案夾

在kafka根目錄下建立data(存放快照)和kafka-logs(日志的存儲檔案夾)

kafka(三):win10搭建kafka環境

修改配置:進入到config目錄,

修改service.properties裡面log.dirs路徑未log.dirs=D:\test\kafka_2.12-2.4.1\kafka-logs(注意:檔案夾分割符一定要是”\”)

修改zookeeper.properties裡面dataDir路徑為dataDir=D:\test\kafka_2.12-2.4.1\data

log.dirs:指定Broker需要使用的若幹個檔案目錄路徑,沒有預設值,必須指定。在生産環境中一定要為log.dirs配置多個路徑,如果條件允許,需要保證目錄被挂載到不同的實體磁盤上。優勢在于,提升讀寫性能,多塊實體磁盤同時讀寫資料具有更高的吞吐量;能夠實作故障轉移(Failover),Kafka 1.1版本引入Failover功能,壞掉磁盤上的資料會自動地轉移到其它正常的磁盤上,而且Broker還能正常工作,基于Failover機制,Kafka可以舍棄RAID方案。

zookeeper.connect:CS格式參數,可以指定值為zk1:2181,zk2:2181,zk3:2181,不同Kafka叢集可以指定:zk1:2181,zk2:2181,zk3:2181/kafka1,chroot隻需要寫一次。

listeners:設定内網通路Kafka服務的監聽器。

advertised.listeners:設定外網通路Kafka服務的監聽器。

auto.create.topics.enable:是否允許自動建立Topic。

unclean.leader.election.enable:是否允許Unclean Leader 選舉。

auto.leader.rebalance.enable:是否允許定期進行Leader選舉,生産環境中建議設定成false。

log.retention.{hours|minutes|ms}:控制一條消息資料被儲存多長時間。優先級:ms設定最高、minutes次之、hours最低。

log.retention.bytes:指定Broker為消息儲存的總磁盤容量大小。message.max.bytes:控制Broker能夠接收的最大消息大小。

bin目錄下windows執行腳本

kafka根目錄執行.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties ,啟動後,不要關閉頁面。

kafka(三):win10搭建kafka環境
kafka(三):win10搭建kafka環境

kafka根目錄執行.\bin\windows\kafka-server-start.bat .\config\server.properties,啟動後不要關閉。

kafka(三):win10搭建kafka環境
kafka(三):win10搭建kafka環境

kafka腳本windows系統bat腳本與sh腳本對應。

connect-standalone.sh用于啟動單節點的Standalone模式的Kafka Connect元件。

connect-distributed.sh用于啟動多節點的Distributed模式的Kafka Connect元件。

kafka-acls.sh腳本用于設定Kafka權限,比如設定哪些使用者可以通路Kafka的哪些TOPIC的權限。

kafka-delegation-tokens.sh用于管理Delegation Token。基于Delegation Token的認證是一種輕量級的認證機制,是對SASL認證機制的補充。

kafka-topics.sh用于管理所有TOPIC。

kafka-console-producer.sh用于生産消息。

kafka-console-consumer.sh用于消費消息。

kafka-producer-perf-test.sh用于生産者性能測試。

kafka-consumer-perf-test.sh用于消費者性能測試。

kafka-delete-records.sh用于删除Kafka的分區消息,由于Kafka有自己的自動消息删除政策,使用率不高。

kafka-dump-log.sh用于檢視Kafka消息檔案的内容,包括消息的各種中繼資料資訊、消息體資料。

kafka-log-dirs.sh用于查詢各個Broker上的各個日志路徑的磁盤占用情況。

kafka-mirror-maker.sh用于在Kafka叢集間實作資料鏡像。

kafka-preferred-replica-election.sh用于執行Preferred Leader選舉,可以為指定的主題執行更換Leader的操作。

kafka-reassign-partitions.sh用于執行分區副本遷移以及副本檔案路徑遷移。

kafka-run-class.sh用于執行任何帶main方法的Kafka類。

kafka-server-start.sh用于啟動Broker程序。

kafka-server-stop.sh用于停止Broker程序。

kafka-streams-application-reset.sh用于給Kafka Streams應用程式重設位移,以便重新消費資料。

kafka-verifiable-producer.sh用于測試驗證生産者的功能。

kafka-verifiable-consumer.sh用于測試驗證消費者功能。

trogdor.sh是Kafka的測試架構,用于執行各種基準測試和負載測試。

kafka-broker-api-versions.sh腳本主要用于驗證不同Kafka版本之間伺服器和用戶端的适配性。

檢視所有topic:.\bin\windows\kafka-topics.bat --zookeeper zookeeper_host:port --list

建立名為test的topic設定3個副本1個分區:.\bin\windows\kafka-topics.bat --zookeeper zookeeper_host:port --create --replication-factor 3 --partitions 1 --topic test

删除名為test的topic:.\bin\windows\kafka-topics.bat --zookeeper zookeeper_host:port --delete --topic test

檢視topic資訊:.\bin\windows\kafka-topics.bat --zookeeper zookeeper_host:port --describe --topic test

修改topic分區數:kafka-topics.sh --bootstrap-server zookeeper_host:port --alter --topic test --partitions 新分區數

topic限速

--entity-name參數用于指定Broker ID。如果TOPIC的副本分别在多個Broker上,需要依次為相應Broker執行。

當某個topic副本在執行副本同步機制時,為了不消耗過多的帶寬,可以設定Leader副本和Follower副本使用的帶寬,不得占用超過100MBps(104857600)。先設定Broker端參數leader.replication.throttled.rate 和 follower.replication.throttled.rate,指令如下:kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.rate=104857600,follower.replication.throttled.rate=104857600' --entity-type brokers --entity-name 0

為TOPIC的所有副本都設定限速,可以統一使用通配符*來表示,指令如下:kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*' --entity-type topics --entity-name test

kafka功能測試

2181 zk通信端口,操作topic使用

9092 資料端口,資料生産者和消費者使用

建立名字為test的topic主題,kafka根目錄執行.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic test,完成後保留視窗。

kafka(三):win10搭建kafka環境

建立視窗執行.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test,輸入消息,每次回車都是一條消息。

kafka(三):win10搭建kafka環境

kafka根目錄下執行.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning,視窗将輸出剛在生産者輸入的消息。

kafka(三):win10搭建kafka環境

可在生産者視窗輸入内容,消費者視窗将持續輸出結果。

kafka版本相容性在Kafka 0.10.2.0版本前,Kafka是單向相容的,高版本的Broker能夠處理低版本Client發送的請求,低版本的Broker不能處理高版本的Client請求。Kafka 0.10.2.0版本開始,Kafka正式支援雙向相容,低版本的Broker也能處理高版本Client的請求。總結學無止境,同一個東西,每次學習都能有新收獲,技術不是會用就行,要懂得原理,探究是什麼,為什麼,如何更好,隻有不斷精進才能收獲跟多的知識,學習不是為了某種結果,而是保持某種狀态。