編譯自官方檔案,
第 1 步:獲取 Kafka
下載最新版本(當前為 v3.3.1)的 Kafka 并解壓:
$ tar -xzf kafka_2.13-3.3.1.tgz
$ cd kafka_2.13-3.3.1
第 2 步:啟動 Kafka 環境
注意:本地環境必須安裝了 Java 8+,
Apache Kafka 可以配套使用 ZooKeeper 或者 KRaft 啟動,請參考以下的 2.1 和 2.2 的其中任一小節步驟(二者選其一即可)配置以開始使用,
2.1 Kafka 使用 ZooKeeper 啟動
運行以下命令以按正確順序啟動所有服務:
# 啟動 ZooKeeper 服務
$ bin/zookeeper-server-start.sh config/zookeeper.properties
打開另一個終端會話并運行:
# 啟動 Kafka Broker 服務
$ bin/kafka-server-start.sh config/server.properties
一旦所有服務都啟動成功,你將擁有一個正在運行并可以使用的基本 Kafka 環境,
2.2 Kafka 使用 KRaft 啟動
生成集群 UUID:
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
格式化日志目錄:
$ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
啟動 Kafka 服務:
$ bin/kafka-server-start.sh config/kraft/server.properties
Kafka 服務啟動成功后,你將擁有一個正在運行并可以使用的基本 Kafka 環境,
第 3 步:創建一個主題(Topic)來存盤事件(Event)
Kafka 是一個分布式事件流平臺,可讓你跨多臺計算機讀取、寫入、存盤和處理事件(在檔案中也稱為 記錄(Record) 或 訊息(Message)),
示例事件包括支付交易、來自手機的地理位置更新、物流運輸訂單、來自物聯網設備或醫療設備的傳感器測量資料等等,這些事件統一被組織并存盤在 主題 中,簡單來說,主題就類似于檔案系統中的檔案夾,而事件則是該檔案夾中的檔案,
因此,在你撰寫第一個事件之前,你必須創建一個主題,打開另一個終端會話并運行:
$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
Kafka 的所有命令列工具都有額外的選項:運行 kafka-topics.sh 不帶任何引數的命令以顯示使用資訊,例如,它還可以向你顯示新主題的磁區計數等詳細資訊:
$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic: quickstart-events TopicId: NPmZHyhbR9y00wMglMH2sg PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0
第 4 步:將一些事件寫入主題
Kafka 客戶端通過網路與 Kafka Broker 通信以讀寫事件,一旦收到,Broker 將以持久和容錯的方式存盤事件并保留一段時間(只要你需要,甚至可以一直保留),
運行控制臺生產者客戶端以將一些事件寫入你的主題,默認情況下,你輸入的每一行都會導致一個單獨的事件被寫入主題中:
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
> This is my first event
> This is my second event
>
你可以隨時按下 Ctrl + C 以停止生產者客戶端,
第 5 步:讀取事件
打開另一個終端會話并運行控制臺消費者客戶端以讀取你剛剛創建的事件:
$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event
你可以隨時按下 Ctrl + C 以停止消費者客戶端,
然后你可以繼續嘗試:例如,切換回你的生產者終端(上一步)以撰寫其他事件,并查看這些事件如何立即顯示在你的消費者終端中,
因為事件是持久存盤在 Kafka 中的,所以它們可以被任意多次讀取,并且可以被任意多的消費者讀取,你可以通過打開另一個終端會話并再次重新運行之前的命令來輕松驗證這一點,
第 6 步:使用 Kafka Connect 將資料匯入或匯出為事件流(Stream)
你可能在關系型資料庫或傳統的訊息傳遞系統等現有系統中擁有了大量資料,以及許多已經在使用這些系統的應用程式, Kafka Connect 允許你不斷地將資料從外部系統提取到 Kafka 中,反之亦然,它是一個運行著 連接器(Connector) 的可擴展工具,連接器實作了與外部系統互動的自定義??邏輯,因此很容易將現有系統與 Kafka 進行集成,為了使這個程序更容易,現有數百個這樣的連接器隨時可用,
在本篇文章中,我們將了解到如何使用簡單的連接器運行 Kafka Connect,這些連接器將資料從檔案匯入到 Kafka 主題中,再將資料從 Kafka 主題中匯出到另一檔案,
首先,確保已將 connect-file-3.3.1.jar 添加到 Connect Worker 配置中的 plugin.path 屬性下,出于快速入門演示的目的,我們將使用相對路徑并將連接器的包視為 超級 Jar 包(uber-jar),當從安裝目錄運行命令時,它會起作用,但是,值得注意的是,對于生產環境的部署,選擇使用絕對路徑的建議始終是可取的,有關如何設定此配置的詳細說明,請參閱 plugin.path,
編輯 config/connect-standalone.properties 檔案,添加或更改 plugin.path 與以下匹配的配置屬性,然后保存檔案:
> echo "plugin.path=libs/connect-file-3.3.1.jar"
然后,首先創建一些種子資料以方便進行測驗:
> echo -e "foo\nbar" > test.txt
或者,在 Windows 系統上時:
> echo foo> test.txt
> echo bar>> test.txt
接下來,我們將啟動兩個以 單機(Standalone) 模式運行的連接器,這意味著它們在單個本地專用行程中運行,我們提供三個組態檔作為引數,第一個始終是 Kafka Connect 行程的配置,包含常見配置,例如要連接的 Kafka Broker 和資料的序列化格式等,其余組態檔分別指定要創建的連接器,這些檔案包括唯一的連接器名稱、要實體化的連接器類以及連接器所需的任何其他配置:
> bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
這些示例組態檔包含在 Kafka 中,使用你之前啟動的默認本地集群配置并創建兩個連接器:第一個是源連接器,它從輸入檔案中讀取行并將每個行生成事件并匯入到 Kafka 主題中,第二個是接收連接器,它從 Kafka 主題中讀取訊息并在輸出檔案中將每條訊息生成為一行,
在啟動程序中,你會看到許多日志訊息,包括一些表明正在實體化連接器的訊息,一旦 Kafka Connect 行程啟動成功,源連接器應該開始從 test.txt 檔案中讀取每一行并將它們生成事件并匯入到主題 connect-test 中,而接收連接器應該開始從主題 connect-test 中讀取訊息并將它們寫入到檔案 test.sink.txt 中,我們可以通過檢查輸出檔案的內容來驗證資料是否已通過整個管道進行了傳送:
> more test.sink.txt
foo
bar
請注意,資料存盤在 Kafka 主題 connect-test 中,因此我們還可以運行控制臺消費者來查看主題中的資料(或使用自定義消費者代碼來處理它):
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning
{"schema":{"type":"string","optional":false},"payload":"foo"}
{"schema":{"type":"string","optional":false},"payload":"bar"}
...
連接器繼續處理資料,因此我們可以將資料添加到檔案中并查看它在管道中的移動結果:
> echo Another line>> test.txt
你應該可以看到該行出現在控制臺消費者輸出和接收器檔案中,
第 7 步:使用 Kafka Streams 處理事件
一旦你的資料作為事件存盤在 Kafka 中,你就可以使用適用于 Java/Scala 的 Kafka Streams 客戶端庫處理資料,它允許你實施任務關鍵型實時應用程式和微服務,其中輸入和/或輸出資料存盤在 Kafka 主題中,Kafka Streams 將在客戶端撰寫和部署標準 Java 和 Scala 應用程式的簡單性與 Kafka 的服務器端集群技術的優勢相結合,使這些應用程式具有高度的可擴展、彈性、容錯和分布式的特性,該庫支持精確一次(exactly-once)的語意處理、有狀態操作和聚合、視窗化、連接、基于事件時間的處理等等,
為了給你一個初步的體驗,下面演示如何實作流行的 WordCount 演算法:
KStream<String, String> textLines = builder.stream("quickstart-events");
KTable<String, Long> wordCounts = textLines
.flatMapValues(line -> Arrays.asList(line.toLowerCase().split(" ")))
.groupBy((keyIgnored, word) -> word)
.count();
wordCounts.toStream().to("output-topic", Produced.with(Serdes.String(), Serdes.Long()));
Kafka Streams 示例和應用開發教程演示了如何從頭到尾撰寫和運行此類流應用程式,
第 8 步:終止 Kafka 環境
現在你已經完成了快速入門教程,可以隨時洗掉 Kafka 環境,或者再繼續嘗試:
- 按下
Ctrl + C以停止生產者和消費者客戶端(如果你還沒有這樣做的話); - 按下
Ctrl + C以停止 Kafka Broker; - 最后,如果第 2 步啟動 Kafka 環境選擇了 Kafka 使用 ZooKeeper 啟動的,請按下
Ctrl + C以停止 ZooKeeper 服務;
如果你還想洗掉本地 Kafka 環境的任何資料,包括你在此程序中創建的任何事件,請運行以下命令:
$ rm -rf /tmp/kafka-logs /tmp/zookeeper /tmp/kraft-combined-logs
恭喜!
你已成功完成了 Apache Kafka 的快速入門教程,
要了解更多資訊,我們建議你可以執行以下后續步驟:
- 閱讀簡單的介紹,了解 Kafka 的高級作業原理、主要概念以及與其他技術的比較,要更詳細地了解 Kafka,請轉到檔案,
- 瀏覽用例,了解我們全球社區中的其他用戶如何從 Kafka 中獲得價值,
- 加入當地的 Kafka 會議小組, 觀看 Kafka 社區的主要會議 Kafka Summit 的演講,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538948.html
標籤:其他
上一篇:Forest + IDEA = 雙倍快樂!ForestX 隆重登場
下一篇:計算機視覺崗社招面經
