kafka(三):win10搭建kafka環境

[toc]

說明

  • 本博客每週五更新一次。
  • 本片博文主要介紹win10安裝kafka過程,官方腳本說明和數據生成、接受測試,實踐性強。

運行環境

  • jdk 1.8
  • kafka 2.4.1
  • scala 2.12

搭建步驟

下載安裝包

  • 下載kafka 地址 官方版內置zk
    • kafka2.4.1 scala 2.12下載地址

配置

安裝配置

  • 創建文件夾

    • 在kafka根目錄下新建data(存放快照)和kafka-logs(日誌的存儲文件夾)
  • 修改配置:進入到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

server.properties說明

  • 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執行腳本

啓動zookeeper

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

啓動kafka

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

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限速
    • 當某個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
      • --entity-name參數用於指定Broker ID。如果TOPIC的副本分別在多個Broker上,需要依次爲相應Broker執行。
    • 爲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 數據端口,數據生產者和消費者使用

創建topic主題

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

創建生產者

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

創建消費者

  • kafka根目錄下執行.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning,窗口將輸出剛在生產者輸入的消息。
  • 可在生產者窗口輸入內容,消費者窗口將持續輸出結果。

kafka版本兼容性

  • 在Kafka 0.10.2.0版本前,Kafka是單向兼容的,高版本的Broker能夠處理低版本Client發送的請求,低版本的Broker不能處理高版本的Client請求。Kafka 0.10.2.0版本開始,Kafka正式支持雙向兼容,低版本的Broker也能處理高版本Client的請求。

總結

  • 學無止境,同一個東西,每次學習都能有新收穫,技術不是會用就行,要懂得原理,探究是什麼,爲什麼,如何更好,只有不斷精進才能收穫跟多的知識,學習不是爲了某種結果,而是保持某種狀態。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章