2025年中國移動鴻鵠大數據實訓營(大數據方向)kafka講解及實踐-第2次作業指導

書接上回,第二次作業比較容易解決,我問了ai,讓他對我進行指導,按照它提供的步驟,我完成了本次實驗,接下來我會標注出需要注意的細節,指導大家完成此次任務。

🎯 一、作業目標

?? 目標關鍵詞:

? 搭建 Kafka 實現環境
? 使用 Java 寫一個“網站訂購數據實時統計程序”
? 保證數據可以:實時采集 → 實時消費 → 實時統計
? 提供完整演示文檔、錄屏資料

🚩 二、從頭到尾的執行步驟 & 細節

?準備階段

要點:

第一步:Kafka 官方下載二進制版本

Apache Kafka我下的是3.9.1版本

  • 第二步:JDK 必須安裝(推薦 Oracle JDK 8 或 11,版本要和 IDEA 保持一致)我用的是8

要用郵箱注冊一下Oracle賬號,才能下載,不用虛擬機的話用windows版本的installer,下載后要記得目標文件的地址,下一步要用。

Java Downloads | Oracle 中國

  • 第三步:配好 JAVA_HOME 和 PATH必須 java -version 有輸出

Win+r后cmd,檢查你java成沒成,

之后你電腦設置,高級系統設置,配置環境變量

? 配置環境變量(最重要)

1?? 找到 系統環境變量 → Path
2?? 把這個 JDK 的 bin 目錄加進去,比如:

C:\Program Files\Java\jdk-11.0.20\bin

3?? 新建 JAVA_HOME(可選但最好有):

變量名:JAVA_HOME 變量值:C:\Program Files\Java\jdk-11.0.20

?啟動服務端

第四步:ZooKeeper

  • 先啟動 ZooKeeper,新開一個窗口cmd
  • cd /d D:\kafka
  • .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
  • 正常輸出:看到 binding to port 2181,就 OK。

別關,放后臺即可

第五步:Kafka Broker

  • 新開一個窗口cmd,再啟動 Kafka:
  • cd /d D:\kafka
  • .\bin\windows\kafka-server-start.bat .\config\server.properties
  • 正常輸出:看到 KafkaServer id=0 started,就 OK。

注意:

  • ZooKeeper 和 Kafka 都必須一直開著!
  • 啟動先后順序是:ZooKeeper → Kafka

? 第六步:創建 Topic

  • 新開一個 cmd:
  • cd /d D:\kafka
  • .\bin\windows\kafka-topics.bat --create --topic order-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

看到提示 Created topic order-topic. → 成功!

? 測試:命令行生產者 & 消費者(可選但很重要)

  • Producer:
  • .\bin\windows\kafka-console-producer.bat --topic order-topic --bootstrap-server localhost:9092

光標閃爍時輸入:

hello kafka

  • Consumer:
  • .\bin\windows\kafka-console-consumer.bat --topic order-topic --bootstrap-server localhost:9092 --from-beginning

Consumer 窗口要能顯示 Producer 發送的消息,證明消息管道通了。

? 用命令行測試 Producer / Consumer(可選但很有用)

這樣能保證:

  • Kafka 能正常收發消息

  • 防止你寫 Java 程序時,結果沒出來卻不知道是 Kafka 還是代碼問題


📌 1?? 打開命令行 Producer

還是同樣流程:

cd /d D:\kafka

輸入:

.\bin\windows\kafka-console-producer.bat --topic order-topic --bootstrap-server localhost:9092

這時光標會閃爍,表示你可以直接輸入內容了。


📌 2?? 打開命令行 Consumer

再開一個新的 cmd:

cd /d D:\kafka 

輸入:

.\bin\windows\kafka-console-consumer.bat --topic order-topic --bootstrap-server localhost:9092 --from-beginning


📌 3?? 測試

  • 在 Producer 窗口輸入:

    hello

    然后回車

  • 在 Consumer 窗口應該立刻顯示:

    hello


? 如果收發正常,Kafka 配置一切正常!

? 第七步:iDEA 項目準備

  • 創建 Maven 項目(方便自動管理 Kafka 依賴)
  • pom.xml:
  • <dependencies>
  • ? <dependency>
  • ??? <groupId>org.apache.kafka</groupId>
  • ??? <artifactId>kafka-clients</artifactId>
  • ??? <version>3.7.0</version>
  • ? </dependency>
  • </dependencies>

?? dependencies 必須在 <project> 里,別寫到外面。3.7.0是kafka版本號,你下載什么版本就用什么號碼

  • 如果下載依賴慢,就加:
  • <repositories>
  • ? <repository>
  • ??? <id>aliyun</id>
  • ??? <url>https://maven.aliyun.com/repository/public</url>
  • ? </repository>
  • </repositories>
  • 一定要點擊 Reload Maven,看 External Libraries 有 kafka-clients。

以下是我的pom文件內容:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>JavaProducerConsumer</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.1</version></dependency></dependencies></project>

依賴寫進去了之后,保存你的文件,要等它下載好,之后就是代碼了

? 第八步:編寫 Producer

  • 在 src/main/java 下新建類 OrderProducer
  • Producer 要點:
    • Kafka 地址:localhost:9092
    • Topic 名:order-topic
    • 代碼核心:隨機生成訂單數據,循環發送
  • 右鍵 Run,看到:
  • Sent: Order_123,456.78

就說明 Producer 已經把消息丟到 Kafka 了。

package com.example.kafka;import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;
import java.util.Random;public class OrderProducer {public static void main(String[] args) throws InterruptedException {Properties props = new Properties();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());KafkaProducer<String, String> producer = new KafkaProducer<>(props);Random random = new Random();while (true) {String orderId = "Order_" + random.nextInt(1000);double amount = 100 + random.nextDouble() * 900;String msg = orderId + "," + amount;producer.send(new ProducerRecord<>("order-topic", orderId, msg));System.out.println("Sent: " + msg);Thread.sleep(1000); // 每秒一單}}
}

? 第九步:編寫 Consumer

  • 新建 OrderConsumer
  • Consumer 要點:
    • Kafka 地址:localhost:9092
    • Topic 名:order-topic
    • 邏輯:循環消費消息、解析金額、累計統計、打印實時結果
  • 右鍵 Run,會實時輸出:
  • Received: Order_123,456.78
  • Total Orders: X, Total Amount: Y
package com.example.kafka;import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class OrderConsumer {public static void main(String[] args) {Properties props = new Properties();props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());props.put(ConsumerConfig.GROUP_ID_CONFIG, "order-consumer-group");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);consumer.subscribe(Collections.singletonList("order-topic"));int totalOrders = 0;double totalAmount = 0;while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));for (ConsumerRecord<String, String> record : records) {String[] parts = record.value().split(",");double amount = Double.parseDouble(parts[1]);totalOrders++;totalAmount += amount;System.out.println("Received: " + record.value());System.out.println("Total Orders: " + totalOrders + ", Total Amount: " + totalAmount);}}}
}

?第十步:?驗證功能完整

先運行producer,再運行consumer,截圖,或者錄屏,(如果能運行代碼,你知道怎么截圖和錄屏的)因為這就是你做成這個實驗的成果

? Producer 持續發
? Consumer 實時收
? Consumer 實時匯總統計

這里錄個屏,截幾張圖就行

? ?結果整理(交付要點)

🌟 交什么?

  • Kafka & ZooKeeper 啟動截圖
  • order-topic 創建命令 & 成功提示
  • Producer/Consumer 運行效果截圖
  • IDEA 項目結構截圖
  • 可選:錄屏演示從 Producer 發單 → Consumer 實時統計的整個流程

🌟 文檔要點:

  • 簡要寫你怎么搭環境(包括下載、配置、啟動命令)
  • 貼關鍵截圖
  • 解釋你的 Producer/Consumer 邏輯(可以復制關鍵代碼)
  • 結果證明:實時采集、實時消費、實時統計三點都 OK

🌟 錄屏要點(如果老師要求):

  • 演示 Kafka 啟動、Topic 創建
  • 演示 Producer 發送數據
  • 演示 Consumer 實時消費并輸出統計
  • 錄制 30 秒左右,聲音可有可無

? 可能遇到的坑

  • Kafka 啟動失敗:通常是端口沖突或 ZooKeeper 沒開。
  • java 不是內部命令:JDK 沒裝好或 PATH 沒配好。
  • IDEA 報 org.apache.kafka 不存在:依賴沒寫對或沒刷新 Maven。
  • 消費者收不到消息:Topic 名拼錯,或者 Producer 和 Consumer 連接不同的 Kafka。

🚩 完整要點 = 這 10 步,一步不錯

做完這些,你這份 Kafka 作業就 100% 滿分沒跑
還方便下次復用!

最后,這個不是真的網站的數據來源,作為初學者,任務要達到什么程度,可以再明確一下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916040.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

三十七、【高級特性篇】定時任務:基于 APScheduler 實現測試計劃的靈活調度

三十七、【高級特性篇】定時任務:基于 APScheduler 實現測試計劃的靈活調度 前言 準備工作 第一部分:后端實現 - `APScheduler` 集成與任務調度 1. 安裝 `django-apscheduler` 2. 配置 `django-apscheduler` 3. 數據庫遷移 4. 創建調度觸發函數 5. 啟動 APScheduler 調度器 6…

RabbitMQ--消息順序性

看本章之前強烈建議先去看博主的這篇博客 RabbitMQ--消費端單線程與多線程-CSDN博客 一、消息順序性概念 消息順序性是指消息在生產者發送的順序和消費者接收處理的順序保持一致。 二、RabbitMQ 順序性保證機制 情況順序保證情況備注單隊列&#xff0c;單消費者消息嚴格按發送順…

.net core接收對方傳遞的body體里的json并反序列化

1、首先我在通用程序里有一個可以接收對象型和數組型json串的反序列化方法public static async Task<Dictionary<string, string>> AllParameters(this HttpRequest request){Dictionary<string, string> parameters QueryParameters(request);request.Enab…

(10)機器學習小白入門 YOLOv:YOLOv8-cls 模型評估實操

YOLOv8-cls 模型評估實操 (1)機器學習小白入門YOLOv &#xff1a;從概念到實踐 (2)機器學習小白入門 YOLOv&#xff1a;從模塊優化到工程部署 (3)機器學習小白入門 YOLOv&#xff1a; 解鎖圖片分類新技能 (4)機器學習小白入門YOLOv &#xff1a;圖片標注實操手冊 (5)機器學習小…

Vue 腳手架基礎特性

一、ref屬性1.被用來給元素或子組件注冊引用信息&#xff08;id的替代者&#xff09;2.應用在html標簽上獲取的是真實DOM元素&#xff0c;用在組件標簽上是組件實例對象3.使用方式&#xff1a;(1).打標識&#xff1a;<h1 ref"xxx">...</h1> 或 <Schoo…

Ubuntu安裝k8s集群入門實踐-v1.31

準備3臺虛擬機 在自己電腦上使用virtualbox 開了3臺1核2G的Ubuntu虛擬機&#xff0c;你可以先安裝好一臺&#xff0c;安裝第一臺的時候配置臨時調高到2核4G&#xff0c;安裝速度會快很多&#xff0c;安裝完通過如下命令關閉桌面&#xff0c;能夠省內存占用&#xff0c;后面我們…

Word Press富文本控件的保存

新建富文本編輯器&#xff0c;并編寫save方法如下&#xff1a; edit方法&#xff1a; export default function Edit({ attributes, setAttributes }) {return (<><div { ...useBlockProps() }><RichTexttagNameponChange{ (value) > setAttributes({ noteCo…

【編程趣味游戲】:基于分支循環語句的猜數字、關機程序

&#x1f31f;菜鳥主頁&#xff1a;晨非辰的主頁 &#x1f440;學習專欄&#xff1a;《C語言學習》 &#x1f4aa;學習階段&#xff1a;C語言方向初學者 ?名言欣賞&#xff1a;"編程的核心是實踐&#xff0c;而非空談" 目錄 1. 游戲1--猜數字 1.1 rand函數 1.2 sr…

UE5 UI 控件切換器

文章目錄分類作用屬性分類 面板 作用 可以根據索引切換要顯示哪個子UI&#xff0c;可以擁有多個子物體&#xff0c;但是任何時間只能顯示一個 屬性 在這里指定要顯示的UI的索引

scikit-learn 包

文章目錄scikit-learn 包核心功能模塊案例其他用法**常用功能詳解****(1) 分類任務示例&#xff08;SVM&#xff09;****(2) 回歸任務示例&#xff08;線性回歸&#xff09;****(3) 聚類任務示例&#xff08;K-Means&#xff09;****(4) 特征工程&#xff08;PCA降維&#xff0…

Excel 將數據導入到SQLServer數據庫

一般系統上線前期都會導入期初數據&#xff0c;業務人員一般要求你提供一個Excel模板&#xff0c;業務人員根據要求整理數據。SQLServer管理工具是支持批量導入數據的&#xff0c;所以我們可以使用該工具導入期初。Excel格式 第一行為字段1、連接登入的數據庫并且選中你需要導入…

剪枝和N皇后在后端項目中的應用

剪枝算法&#xff08;Pruning Algorithm&#xff09; 生活比喻&#xff1a;就像修剪樹枝一樣&#xff0c;把那些明顯不會結果的枝條提前剪掉&#xff0c;節省養分。 在后端項目中的應用場景&#xff1a; 搜索優化&#xff1a;在商品搜索中&#xff0c;如果某個分類下沒有符合條…

cocos 2d游戲中多邊形碰撞器會觸發多次,怎么解決

子彈打到敵機 一發子彈擊中&#xff0c;碰撞回調多次執行 我碰撞組件原本是多邊形碰撞組件 PolygonCollider2D&#xff0c;我改成盒碰撞組件BoxCollider2D 就好了 用前端的節流方式。或者loading處理邏輯。我測試過了&#xff0c;是可以 本來就是多次啊,設計上貌似就是這樣的…

Kubernetes環境中GPU分配異常問題深度分析與解決方案

Kubernetes環境中GPU分配異常問題深度分析與解決方案 一、問題背景與核心矛盾 在基于Kubernetes的DeepStream應用部署中&#xff0c;GPU資源的獨占性分配是保障應用性能的關鍵。本文將圍繞一個典型的GPU分配異常問題展開分析&#xff1a;多個請求GPU的容器本應獨占各自的GPU&…

Django與模板

我叫補三補四&#xff0c;很高興見到大家&#xff0c;歡迎一起學習交流和進步今天來講一講視圖Django與模板文件工作流程模板引擎&#xff1a;主要參與模板渲染的系統。內容源&#xff1a;輸入的數據流。比較常見的有數據庫、XML文件和用戶請求這樣的網絡數據。模板&#xff1a…

日本上市IT企業|8月25日將在大連舉辦赴日it招聘會

株式會社GSD的核心戰略伙伴貝斯株式會社&#xff0c;將于2025年8月25日在大連香格里拉大酒店商務會議室隆重舉辦赴日技術人才專場招聘會。本次招聘會面向全國范圍內的優秀IT人才&#xff0c;旨在為貝斯株式會社東京本社長期發展招募優質的系統開發與管理人才。招聘計劃&#xf…

低功耗設計雙目協同畫面實現光學變焦內帶AI模型

低功耗設計延長續航&#xff0c;集成儲能模塊保障陰雨天氣下的鐵塔路線的安全一、智能感知與識別技術 多光譜融合監控結合可見光、紅外熱成像、激光補光等技術&#xff0c;實現全天候監測。例如&#xff0c;紅外熱成像可穿透雨霧監測山火隱患&#xff0c;激光補光技術則解決夜間…

datasophon下dolphinscheduler執行腳本出錯

執行hive腳本出錯&#xff1a; 錯誤消息&#xff1a; FAILED: RuntimeException Error loading hooks(hive.exec.post.hooks): java.lang.ClassNotFoundException: org.apache.atlas.hive.hook.HiveHookat java.net.URLClassLoader.findClass(URLClassLoader.java:387)at java.…

【Elasticsearch】安全地刪除快照倉庫、快照

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1?? 冷熱集群架構2?? 合適的鍋炒合適的菜&#xff1a;性能與成本平衡原理公式解析3?? ILM&#xff08;Index Lifecycle Management&#xff09;策略詳解4?? Elasticsearch 跨機房部署5?? 快照與恢…

nodejs的npm

1. 什么是 npm&#xff1f; npm&#xff08;Node Package Manager&#xff09; 是 Node.js 的默認包管理工具&#xff0c;用于&#xff1a; 安裝和管理依賴&#xff08;第三方庫、框架等&#xff09;。運行項目腳本&#xff08;如啟動服務、測試、構建等&#xff09;。發布和共…