《物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理》 課件 第1、2章 物聯(lián)網(wǎng)和大數(shù)據(jù)簡介、物聯(lián)網(wǎng)數(shù)據(jù)采集_第1頁
《物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理》 課件 第1、2章 物聯(lián)網(wǎng)和大數(shù)據(jù)簡介、物聯(lián)網(wǎng)數(shù)據(jù)采集_第2頁
《物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理》 課件 第1、2章 物聯(lián)網(wǎng)和大數(shù)據(jù)簡介、物聯(lián)網(wǎng)數(shù)據(jù)采集_第3頁
《物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理》 課件 第1、2章 物聯(lián)網(wǎng)和大數(shù)據(jù)簡介、物聯(lián)網(wǎng)數(shù)據(jù)采集_第4頁
《物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理》 課件 第1、2章 物聯(lián)網(wǎng)和大數(shù)據(jù)簡介、物聯(lián)網(wǎng)數(shù)據(jù)采集_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第一章物聯(lián)網(wǎng)與大數(shù)據(jù)簡介技能目標(biāo)理解物聯(lián)網(wǎng)和大數(shù)據(jù)的定義。掌握物聯(lián)網(wǎng)架構(gòu)的基本構(gòu)成。了解物聯(lián)網(wǎng)和大數(shù)據(jù)的典型行業(yè)應(yīng)用。了解物聯(lián)網(wǎng)和大數(shù)據(jù)采集,并會使用相關(guān)的開源硬件和框架。本章任務(wù)任務(wù)1認(rèn)識物聯(lián)網(wǎng)任務(wù)2認(rèn)識大數(shù)據(jù)任務(wù)3認(rèn)識開源工具任務(wù)1認(rèn)識物聯(lián)網(wǎng)01【任務(wù)描述】理解物聯(lián)網(wǎng)的定義了解物聯(lián)網(wǎng)架構(gòu)了解物聯(lián)網(wǎng)的行業(yè)應(yīng)用任務(wù)1認(rèn)識物聯(lián)網(wǎng)01【關(guān)鍵步驟】(1)理解物聯(lián)網(wǎng)的定義。(2)分別了解物聯(lián)網(wǎng)的四層架構(gòu)及每層架構(gòu)的作用。(3)分別了解物聯(lián)網(wǎng)在工業(yè)自動化、智慧城市、物流和供應(yīng)鏈管理、農(nóng)業(yè)和畜牧業(yè)、醫(yī)療保健、能源管理、安全監(jiān)測、零售行業(yè)、軍事等行業(yè)和領(lǐng)域的應(yīng)用。

物聯(lián)網(wǎng)(InternetofThings,IoT)是指通過互聯(lián)網(wǎng)將傳感器、設(shè)備、物品等連接起來,并通過各種通信技術(shù)進(jìn)行數(shù)據(jù)交換、信息處理和智能控制的網(wǎng)絡(luò)系統(tǒng)。

物聯(lián)網(wǎng)將各種傳感器和設(shè)備通過互聯(lián)網(wǎng)連接起來,使它們能夠互相通信和交換數(shù)據(jù),并且實(shí)現(xiàn)更智能的控制和管理。通過物聯(lián)網(wǎng)可以實(shí)現(xiàn)智能家居、智慧城市、智能交通、智能工廠等應(yīng)用場景。

物聯(lián)網(wǎng)的核心技術(shù)包括傳感技術(shù)、通信技術(shù)、數(shù)據(jù)處理技術(shù)和人工智能等。傳感技術(shù)可以感知周圍環(huán)境的各種物理量,并將數(shù)據(jù)傳輸給云端;通信技術(shù)包括Wi-Fi、藍(lán)牙、4G/5G等,可以實(shí)現(xiàn)傳感器與云端的連接;數(shù)據(jù)處理技術(shù)包括云計算、大數(shù)據(jù)、邊緣計算等,可以對傳感器采集的數(shù)據(jù)進(jìn)行處理和分析;人工智能可以為物聯(lián)網(wǎng)提供更智能的應(yīng)用,如通過機(jī)器學(xué)習(xí)來預(yù)測未來的趨勢和優(yōu)化決策。1.1.1物聯(lián)網(wǎng)的定義1.1.2物聯(lián)網(wǎng)架構(gòu)物聯(lián)網(wǎng)架構(gòu)通過感知層、網(wǎng)絡(luò)層、數(shù)據(jù)處理層和應(yīng)用層的組合,實(shí)現(xiàn)了對物理世界的感知,以及對數(shù)據(jù)的傳輸、處理和應(yīng)用,從而實(shí)現(xiàn)了人與物的互聯(lián)互通。1.1.3物聯(lián)網(wǎng)的行業(yè)應(yīng)用物聯(lián)網(wǎng)技術(shù)可以在各個行業(yè)中應(yīng)用,以下是一些典型的物聯(lián)網(wǎng)行業(yè)應(yīng)用。1)工業(yè)自動化以下是物聯(lián)網(wǎng)在工業(yè)自動化中的一些應(yīng)用。設(shè)備監(jiān)測和預(yù)測維護(hù)、生產(chǎn)線優(yōu)化、資源管理、質(zhì)量控制、調(diào)度管理、安全監(jiān)測2)智慧城市以下是物聯(lián)網(wǎng)技術(shù)在智慧城市中的一些應(yīng)用。智慧交通、智能照明、智慧環(huán)保、智慧安防、智慧物流1.1.3物聯(lián)網(wǎng)的行業(yè)應(yīng)用3)物流和供應(yīng)鏈管理以下是物聯(lián)網(wǎng)技術(shù)在物流和供應(yīng)鏈管理中的一些具體應(yīng)用。實(shí)時跟蹤和定位、遠(yuǎn)程監(jiān)控和預(yù)測維護(hù)、貨物和庫存管理、智能物流路線規(guī)劃、供應(yīng)鏈可見性4)農(nóng)業(yè)和畜牧業(yè)以下是一些典型的物聯(lián)網(wǎng)在農(nóng)業(yè)和畜牧業(yè)中的應(yīng)用。土壤監(jiān)測和管理、智能灌溉系統(tǒng)、病蟲害監(jiān)測、精準(zhǔn)養(yǎng)殖、智能運(yùn)輸和物流1.1.3物聯(lián)網(wǎng)的行業(yè)應(yīng)用5)醫(yī)療保健以下是一些典型的物聯(lián)網(wǎng)在醫(yī)療保健中的應(yīng)用。遠(yuǎn)程監(jiān)測和診斷、醫(yī)療設(shè)備管理、智能藥品管理、健康管理和預(yù)防、醫(yī)療數(shù)據(jù)分析和決策支持6)能源管理以下是一些典型的物聯(lián)網(wǎng)在能源管理中的應(yīng)用。能源生產(chǎn)監(jiān)測、能源傳輸監(jiān)測、智能家居、能源數(shù)據(jù)分析和預(yù)測、智能公共設(shè)施管理1.1.3物聯(lián)網(wǎng)的行業(yè)應(yīng)用7)安全監(jiān)測以下是物聯(lián)網(wǎng)在安全監(jiān)測中的應(yīng)用。智能家居安全監(jiān)測、工業(yè)安全監(jiān)測、智能交通安全監(jiān)測、環(huán)境安全監(jiān)測、金融安全監(jiān)測8)零售行業(yè)以下是物聯(lián)網(wǎng)在零售行業(yè)中的一些應(yīng)用。庫存管理、客流量統(tǒng)計、智能售貨機(jī)、安全監(jiān)控、定位服務(wù)9)軍事以下是物聯(lián)網(wǎng)在軍事領(lǐng)域中的一些應(yīng)用。戰(zhàn)場感知、智能武器、物資管理、物流管理、智能裝備任務(wù)2認(rèn)識大數(shù)據(jù)02【任務(wù)描述】理解大數(shù)據(jù)的定義掌握大數(shù)據(jù)的特點(diǎn)了解大數(shù)據(jù)的行業(yè)應(yīng)用。任務(wù)2認(rèn)識大數(shù)據(jù)02【關(guān)鍵步驟】(1)理解大數(shù)據(jù)的定義。(2)掌握大數(shù)據(jù)的5V特點(diǎn)。(3)了解大數(shù)據(jù)在零售、金融、醫(yī)療保健、制造、媒體和廣告、物流、教育和研究機(jī)構(gòu)等行業(yè)和領(lǐng)域的典型應(yīng)用。1.2.1大數(shù)據(jù)的定義

大數(shù)據(jù)(BigData)是指規(guī)模巨大、結(jié)構(gòu)復(fù)雜、高速變化、多樣化的數(shù)據(jù)集合,這些數(shù)據(jù)集合包含多種類型的數(shù)據(jù),如結(jié)構(gòu)化數(shù)據(jù)(如關(guān)系數(shù)據(jù)庫中的數(shù)據(jù))、半結(jié)構(gòu)化數(shù)據(jù)(如XML文件)、非結(jié)構(gòu)化數(shù)據(jù)(如文本、圖片、音頻、視頻等),并且這些數(shù)據(jù)集合的生成速度極快,數(shù)據(jù)量呈指數(shù)級增長。

應(yīng)用大數(shù)據(jù)需要處理海量數(shù)據(jù),從中挖掘有用的信息,支持商業(yè)決策和應(yīng)用創(chuàng)新。因此,大數(shù)據(jù)處理技術(shù)不僅包括數(shù)據(jù)的存儲、處理、傳輸、分析、可視化等技術(shù),還包括機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、人工智能等技術(shù)的應(yīng)用,以及與數(shù)據(jù)相關(guān)的法律、倫理等。1.2.2

大數(shù)據(jù)的特點(diǎn)具體來說,大數(shù)據(jù)具有以下5個特點(diǎn)。(1)數(shù)據(jù)體量(Volume)巨大。(2)數(shù)據(jù)類型多樣(Variety)。(3)變化速度(Velocity)快。(4)數(shù)據(jù)真實(shí)性(Veracity)差。(5)價值(Value)密度低。1.2.3

大數(shù)據(jù)的行業(yè)應(yīng)用大數(shù)據(jù)在零售、金融、醫(yī)療保健、制造、媒體和廣告、物流、教育和研究機(jī)構(gòu)等行業(yè)和領(lǐng)域都有應(yīng)用。(1)零售業(yè)。以下是一些具體的應(yīng)用和實(shí)例。預(yù)測消費(fèi)者需求、優(yōu)化庫存管理、優(yōu)化市場營銷策略、優(yōu)化供應(yīng)鏈、優(yōu)化價格策略(2)金融業(yè)。以下是一些具體的應(yīng)用和實(shí)例。風(fēng)險管理、客戶關(guān)系管理、業(yè)務(wù)流程改進(jìn)、投資管理、欺詐識別(3)醫(yī)療保健業(yè)。以下是一些具體的應(yīng)用和實(shí)例。疾病預(yù)測和預(yù)防、病人管理、醫(yī)療決策支持、藥品研發(fā)、醫(yī)療資源管理1.2.3

大數(shù)據(jù)的行業(yè)應(yīng)用(4)制造業(yè)。以下是一些具體的應(yīng)用和實(shí)例。生產(chǎn)優(yōu)化、質(zhì)量控制、供應(yīng)鏈管理、智能制造、產(chǎn)品研發(fā)、(5)媒體和廣告業(yè)。以下是一些具體的應(yīng)用和實(shí)例。受眾分析、精準(zhǔn)營銷、內(nèi)容分析、媒體監(jiān)測、數(shù)據(jù)整合(6)物流業(yè)。以下是一些具體的應(yīng)用和實(shí)例。物流路徑優(yōu)化、預(yù)測需求、在線支付和訂單跟蹤、智能倉儲(7)教育和研究機(jī)構(gòu)。以下是一些大數(shù)據(jù)在教育和研究機(jī)構(gòu)中的應(yīng)用和示例。學(xué)生表現(xiàn)分析、教師表現(xiàn)分析、學(xué)生招募、學(xué)術(shù)研究、研究數(shù)據(jù)管理任務(wù)3認(rèn)識開源工具03【任務(wù)描述】了解NodeMCU、ArduinoIDE、EMQXBroker、Hadoop、Kafka、Flink、Flask、MySQL、ECharts、Grafana、VSCode、IntelliJIDEA、Maven等開源工具及其在物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理過程中的作用。任務(wù)3認(rèn)識開源工具03【關(guān)鍵步驟】(1)了解每種開源工具的基本特點(diǎn)及用途。(2)了解每種開源工具在物聯(lián)網(wǎng)大數(shù)據(jù)采集與處理過程中的作用。1.3.1

NodeMCUNodeMCU開發(fā)板采用Lua腳本語言進(jìn)行編程,支持通過串口或Wi-Fi進(jìn)行編程和調(diào)試。尺寸大約為49mm×24mm,它有一個USB接口用于編程和供電,有多個GPIO(通用輸入/輸出端口)用于連接各種傳感器和外部設(shè)備。NodeMCU通常有一些LED指示燈,用于顯示設(shè)備的狀態(tài),如Wi-Fi連接狀態(tài)等。NodeMCU的價格因不同型號和供應(yīng)商而異。需要注意的是,由于供應(yīng)商不同,某些NodeMCU的質(zhì)量可能也不同。此外,NodeMCU有一些衍生品,如WemosD1mini、Lolin等,它們基本上與NodeMCU的外觀和功能類似,但在一些細(xì)節(jié)上可能略有不同。NodeMCU是一款開源快速硬件原創(chuàng)平臺,包括固件和開發(fā)板。它支持Wi-Fi功能,所以在物聯(lián)網(wǎng)領(lǐng)域,Arduino開發(fā)板最大的對手之一就是NodeMCU開發(fā)板1.3.1

NodeMCUNodeMCU是一款簡單易用、功能強(qiáng)大的物聯(lián)網(wǎng)開發(fā)板,可以應(yīng)用于各種物聯(lián)網(wǎng)場景,包括家庭自動化、智能農(nóng)業(yè)、智慧城市等。1.3.1

NodeMCUNodeMCU是一款簡單易用、功能強(qiáng)大的物聯(lián)網(wǎng)開發(fā)板,可以應(yīng)用于各種物聯(lián)網(wǎng)場景,包括家庭自動化、智能農(nóng)業(yè)、智慧城市等。1.3.2

ArduinoIDEArduinoIDE(IntegratedDevelopmentEnvironment)是一款開源軟件開發(fā)工具,專為Arduino開發(fā)板設(shè)計。它為用戶提供了一個集成的開發(fā)環(huán)境,它可用于編寫、編譯和上傳Arduino程序。Arduino程序開發(fā):用戶可以在其中編寫、編譯和上傳Arduino程序??缙脚_開發(fā):用戶可以在任何平臺上編寫和調(diào)試Arduino程序。庫管理:用戶可以通過庫管理器輕松地安裝、更新和刪除庫。開源硬件開發(fā):用戶可以編寫代碼,控制各種硬件設(shè)備。1.3.3

EMQXBrokerMQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸協(xié)議),是一種基于發(fā)布/訂閱(Publish/Subscribe)模式的“輕量級”通信協(xié)議。MQTT客戶端的功能如下。(1)發(fā)布消息給其他相關(guān)的客戶端。(2)訂閱主題請求接收相關(guān)的應(yīng)用消息。(3)取消訂閱主題,請求移除接收的應(yīng)用消息。(4)從服務(wù)端終止連接。MQTT服務(wù)器常被稱為MQTTBroker(消息代理),它的功能如下。(1)接收來自客戶端的網(wǎng)絡(luò)連接請求。(2)接收客戶端發(fā)布的應(yīng)用消息。(3)處理客戶端的訂閱請求和取消訂閱請求。(4)轉(zhuǎn)發(fā)應(yīng)用消息給符合條件的已訂閱客戶端(包括發(fā)布者自身)。1.3.3

EMQXBrokerEMQXBroker是基于Erlang/OTP平臺開發(fā)的開源物聯(lián)網(wǎng)MQTT消息服務(wù)器,EMQXBroker架構(gòu)如圖所示。Erlang/OTP是軟實(shí)時(Soft-Realtime)、低延時(Low-Latency)、分布式(Distributed)的語言平臺。MQTT是輕量的(Lightweight)、發(fā)布訂閱模式(PubSub)的物聯(lián)網(wǎng)消息協(xié)議。EMQXBroker的設(shè)計目標(biāo)是實(shí)現(xiàn)高可靠并支持承載海量物聯(lián)網(wǎng)終端的MQTT連接,支持海量物聯(lián)網(wǎng)設(shè)備間的低延時消息路由。1.3.4

HadoopHadoop是由Apache基金會開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),主要解決海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計算問題,用戶可以在不了解分布式底層細(xì)節(jié)的情況下開發(fā)分布式程序。從廣義上來說,Hadoop通常是指一個更加廣泛的概念——Hadoop生態(tài)圈Hadoop的核心是HDFS、YARN和Mapreduce。在Hadoop1.x時代,Hadoop中的MapReduce同時處理業(yè)務(wù)邏輯運(yùn)算和進(jìn)行資源調(diào)度,耦合性較大。在Hadoop2.x時代,增加了YARN。YARN只負(fù)責(zé)資源調(diào)度,MapReduce只負(fù)責(zé)運(yùn)算,如圖所示。1.3.4

Hadoop(1)HDFS(Hadoop分布式文件系統(tǒng))HDFS是Hadoop體系中數(shù)據(jù)存儲管理的基礎(chǔ)。它是一個高度容錯性(Fault-tolerant)的系統(tǒng),能檢測和應(yīng)對硬件故障,用于在低成本(Low-cost)的通用硬件上運(yùn)行。HDFS簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問,提供高吞吐量(HighThroughput)應(yīng)用程序數(shù)據(jù)訪問功能,適合帶有大型數(shù)據(jù)集(LargeDataSet)的應(yīng)用程序。HDFS提供了一次寫入、多次讀取的機(jī)制,數(shù)據(jù)以塊的形式同時分布在集群不同的物理機(jī)器上。1.3.4

Hadoop(1)HDFS(Hadoop分布式文件系統(tǒng))Hadoop2為HDFS引入了兩個重要的新功能——Federation和高可用(HA)。Federation允許集群中出現(xiàn)多個NameNode,多個NameNode之間相互獨(dú)立,且不需要互相協(xié)調(diào),它們各自分工,管理自己的區(qū)域。DataNode被用作通用的數(shù)據(jù)塊存儲設(shè)備。每個DataNode要向集群中所有NameNode注冊,并發(fā)送心跳報告,執(zhí)行所有NameNode的命令。HDFS中的高可用性消除了Hadoop中存在的單點(diǎn)故障,其中,NameNode故障將導(dǎo)致集群中斷。HDFS的高可用性提供故障轉(zhuǎn)移功能(備用節(jié)點(diǎn)從失敗的主NameNode接管工作),以實(shí)現(xiàn)自動化。1.3.4

Hadoop(2)Mapreduce(分布式計算框架)。MapReduce是一種基于磁盤的分布式并行批處理計算模型,用以進(jìn)行大數(shù)據(jù)量的計算。它屏蔽了分布式計算框架細(xì)節(jié),將計算抽象成Map和Reduce兩部分。

其中,Map對數(shù)據(jù)集上的獨(dú)立元素進(jìn)行指定操作,生成鍵值對形式的中間結(jié)果。Reduce對中間結(jié)果中相同“鍵”的所有“值”進(jìn)行規(guī)約,以得到最終結(jié)果。MapReduce非常適合在由大量計算機(jī)組成的分布式并行環(huán)境里進(jìn)行數(shù)據(jù)處理。MapReduce的工作過程如圖所示。1.3.4

Hadoop(2)Mapreduce(分布式計算框架)。MapReduce的工作流程大致可以分為5步步驟1:分片和格式化。輸入Map階段的數(shù)據(jù)源,需要經(jīng)過分片和格式化操作。分片:將源文件劃分為大小相等的小數(shù)據(jù)塊(在Hadoop2.x中默認(rèn)其大小為128MB),Hadoop會為每一個分片構(gòu)建一個Map任務(wù)(MapTask),并由該任務(wù)運(yùn)行自定義的map()函數(shù),從而處理分片里的每一條記錄。格式化:將劃分好的分片格式化為鍵值對<key,value>形式的數(shù)據(jù),其中,key代表偏移量,value代表每一行的內(nèi)容。1.3.4

Hadoop步驟2:執(zhí)行MapTask。每個MapTask任務(wù)都有一個內(nèi)存緩沖區(qū)(緩沖區(qū)大小為100MB),輸入的分片數(shù)據(jù)經(jīng)過MapTask處理后得到的中間結(jié)果會被寫入內(nèi)存緩沖區(qū)。如果寫入的數(shù)據(jù)達(dá)到內(nèi)存緩沖區(qū)的閾值(80MB),會啟動一個線程將內(nèi)存緩沖區(qū)中的溢出數(shù)據(jù)寫入磁盤,同時不會影響Map中間結(jié)果繼續(xù)被寫入內(nèi)存緩沖區(qū)。在溢寫過程中,MapReduce框架會對key進(jìn)行排序,如果中間結(jié)果比較大,那么會形成多個溢寫文件,最后的內(nèi)存緩沖區(qū)數(shù)據(jù)也會全部被溢寫入磁盤,形成一個溢寫文件,若有多個溢寫文件,則最后合并所有的溢寫文件為一個文件。1.3.4

Hadoop步驟3:執(zhí)行Shuffle。在MapReduce工作過程中,將Map階段處理的數(shù)據(jù)傳遞給Reduce階段是MapReduce框架中關(guān)鍵的一步,這個過程叫作Shuffle。Shuffle會將MapTask輸出的處理結(jié)果數(shù)據(jù)分發(fā)給ReduceTask,并在分發(fā)過程中對數(shù)據(jù)按key進(jìn)行分區(qū)和排序。步驟4:執(zhí)行ReduceTask。輸入ReduceTask的數(shù)據(jù)流是<key,{valuelist}>形式的,用戶可以自定義reduce()方法進(jìn)行邏輯處理,最終以<key,value>的形式輸出。步驟5:寫入文件。MapReduce框架會自動把ReduceTask生成的<key,value>傳入OutputFormat的write方法,實(shí)現(xiàn)文件的寫入操作。1.3.4

Hadoop(3)YARN架構(gòu)YARN是一個資源調(diào)度平臺,負(fù)責(zé)為運(yùn)算程序提供服務(wù)器運(yùn)算資源,相當(dāng)于一個分布式的操作系統(tǒng)平臺,而MapReduce等運(yùn)算程序相當(dāng)于運(yùn)行于操作系統(tǒng)之上的應(yīng)用程序。YARN的出現(xiàn)其實(shí)是為了補(bǔ)充第一代MapReduce編程框架的不足,提高集群環(huán)境下的資源利用率,這些資源包括內(nèi)存、磁盤、網(wǎng)絡(luò)、I/O等。Hadoop2.X版本中重新設(shè)計的YARN集群具有更好的擴(kuò)展性、可用性、可靠性、向后兼容性,并能支持除MapReduce外的更多分布式計算程序,YARN架構(gòu)如圖所示,主要由ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)和Container等組件構(gòu)成。1.3.5

KafkaKafka最初由Linkedin公司開發(fā),是分布式的、支持分區(qū)的(Partition)、多副本的(Replica)、基于zookeeper的分布式消息系統(tǒng)。Kafka可以實(shí)現(xiàn)與Storm、HBase和Spark的集成。Kafka處理它所有的發(fā)布/訂閱消息系統(tǒng)使用了四個API,即生產(chǎn)者API、消費(fèi)者API、StreamAPI和ConnectorAPI。它能夠傳遞大規(guī)模流式消息,自帶容錯功能,已經(jīng)取代了一些傳統(tǒng)消息系統(tǒng),如JMS、AMQP等。1.3.5

KafkaProducer:生產(chǎn)者,是消息的產(chǎn)生者,即消息的入口。Broker:Broker是Kafka實(shí)例,每個服務(wù)器上有一個或多個Kafka實(shí)例,我們姑且認(rèn)為每個Broker對應(yīng)一臺服務(wù)器。每個Kafka集群內(nèi)的Broker都有一個不重復(fù)的編號,如圖1-3-10中的Broker-0、Broker-1等。Topic:消息的主題,可以理解為消息的分類,Kafka的數(shù)據(jù)就保存在Topic中。在每個Broker上可以創(chuàng)建多個Topic。1.3.5

KafkaPartition:Topic的分區(qū),每個Topic可以有多個分區(qū),分區(qū)的作用是保證負(fù)載均衡,提高Kafka的吞吐量。同一個Topic在不同的分區(qū)的數(shù)據(jù)是不重復(fù)的,Partition的表現(xiàn)形式就是一個個文件夾。Replication:每一個分區(qū)都有多個副本。當(dāng)主分區(qū)(Leader)發(fā)生故障的時候,會選擇一個追隨者(Follower)上位,成為Leader。在Kafka中,默認(rèn)副本的最大數(shù)量是10個,且副本的數(shù)量不能大于Broker的數(shù)量,F(xiàn)ollower和Leader絕對是在不同的機(jī)器上,同一個機(jī)器對同一個分區(qū)也只可能存放一個副本。1.3.5

KafkaMessage:發(fā)送的每一條消息主體。Consumer:消費(fèi)者,即消息的消費(fèi)方,是消息的出口。ConsumerGroup:可以將多個消費(fèi)者組成一個消費(fèi)者組,在Kafka的設(shè)計中,同一個分區(qū)的數(shù)據(jù)只能被消費(fèi)者組中的某一個消費(fèi)者消費(fèi)。同一個消費(fèi)者組的消費(fèi)者可以消費(fèi)同一個Topic的不同分區(qū)的數(shù)據(jù),這也是為了提高Kafka的吞吐量。Zookeeper:Kafka集群依賴Zookeeper來保存集群的元信息,以保證系統(tǒng)的可用性。1.3.6FlinkFlink是一個框架和分布式處理引擎,用于在無邊界和有邊界數(shù)據(jù)流上進(jìn)行有狀態(tài)的計算,F(xiàn)link計算架構(gòu)如圖所示。Flink提供了用于流式處理的DataStreamAPI和用于批處理的DataSetAPI。Flink的分布式特點(diǎn)體現(xiàn)在它能夠在成百上千個機(jī)器上運(yùn)行,它將大型計算任務(wù)分成許多小的部分,每個機(jī)器執(zhí)行一小部分。1.3.6Flink(1)Flink中的基礎(chǔ)概念。①JobManager。JobManager也稱為Master,用于協(xié)調(diào)分布式執(zhí)行,它們用來調(diào)度Task,協(xié)調(diào)檢查點(diǎn)(CheckPoint),協(xié)調(diào)失敗時恢復(fù)。Flink運(yùn)行時至少存在一個Master處理器,若配置高可用模式,則存在多個Master處理器,其中有一個是Leader,其他都是Standby。②TaskManager。TaskManager,也稱為Worker,用于執(zhí)行一個Dataflow

的Task(或者特殊的SubTask)、數(shù)據(jù)緩沖和DataStream的交換,F(xiàn)link運(yùn)行時至少存在一個Worker處理器。1.3.6Flink(2)Flink任務(wù)提交流程。Flink提交任務(wù)后Client向HDFS上傳Flink的jar包和配置文件,之后向YARNResourceManager提交任務(wù),ResourceManager分配容器資源并通知對應(yīng)的NodeManager啟動ApplicationMaster,ApplicationMaster啟動后加載Flink的jar包和配置文件構(gòu)建環(huán)境然后啟動JobManager,之后ApplicationMaster向ResourceManager申請資源,啟動TaskManager

,ResourceManager分配容器資源后,由ApplicationMaster加載Flink的jar包、配置構(gòu)建環(huán)境并啟動TaskManager

,TaskManager啟動后向JobManager發(fā)送心跳包,并等待JobManager向其分配任務(wù)。1.3.7FlaskFlask是一個使用Python編寫的輕量級Web應(yīng)用框架。Flask只是一個內(nèi)核,默認(rèn)依賴于兩個外部庫:

Jinja2模板引擎和WerkzeugWSGI工具集。其特點(diǎn)包括內(nèi)置開發(fā)服務(wù)器和快速調(diào)試器、集成支持單元測試、RESTful可請求調(diào)度、支持安全Cookie(客戶端會話)、符合WSGI1.0、基于Unicode等。Flask的擴(kuò)展包有Flask-SQLalchemy(操作數(shù)據(jù)庫)、Flask-Migrate(管理遷移數(shù)據(jù)庫)、Flask-Mail(郵件)、Flask-WTF(表單)、Flask-Script(插入腳本)、Flask-Login(認(rèn)證用戶狀態(tài))、Flask-RESTful(開發(fā)RESTAPI的工具)、Flask-Bootstrap(集成前端TwitterBootstrap框架)、Flask-Moment(本地化日期和時間)。1.3.7FlaskWSGI相當(dāng)于Web服務(wù)器和Python應(yīng)用之間的橋梁,隱藏了很多HTTP相關(guān)的細(xì)節(jié)。其目的是讓W(xué)eb服務(wù)器知道如何調(diào)用Python應(yīng)用,并且將ClientRequest傳遞給Python應(yīng)用;讓Python應(yīng)用能理解ClientRequest并執(zhí)行對應(yīng)操作,以及將執(zhí)行結(jié)果返回給Web服務(wù)器,最終響應(yīng)到Client。1.3.7FlaskFlask的基本模式Flask的基本模式為在程序里將一個視圖函數(shù)分配給一個URL,每當(dāng)用戶訪問這個URL時,系統(tǒng)就會執(zhí)行給該URL分配好的視圖函數(shù),獲取函數(shù)的返回值并將其顯示到瀏覽器上,F(xiàn)lask框架的工作過程如圖所示。1.3.7FlaskFlask的基本模式1.3.8MySQL在Web應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一。數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,每個數(shù)據(jù)庫都有一個或多個不同的API,用于創(chuàng)建、訪問、管理、搜索和復(fù)制所保存的數(shù)據(jù)。也可以將數(shù)據(jù)存儲在文件中,但是在文件中讀寫數(shù)據(jù)速度相對較慢。(1)RDBMS術(shù)語。數(shù)據(jù)庫:數(shù)據(jù)庫是一些關(guān)聯(lián)表的集合。數(shù)據(jù)表:數(shù)據(jù)表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的數(shù)據(jù)表看起來像一個簡單的電子表格。列:一列(數(shù)據(jù)元素)相同類型的數(shù)據(jù),如郵政編碼的數(shù)據(jù)。行:一行(元組或記錄)是一組相關(guān)的數(shù)據(jù),如一條用戶訂閱的數(shù)據(jù)。1.3.8MySQL冗余:存儲兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。主鍵:主鍵是唯一的,一個數(shù)據(jù)表中只能包含一個主鍵,可以使用主鍵來查詢數(shù)據(jù)。外鍵:外鍵用于關(guān)聯(lián)兩個數(shù)據(jù)表。復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),類似于書籍的目錄。參照完整性:參照完整性要求關(guān)系中不允許引用不存在的實(shí)體。參照完整性與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,其目的是保證數(shù)據(jù)的一致性。1.3.8MySQL(2)MySQL架構(gòu)。MySQL架構(gòu)如圖所示,其架構(gòu)自頂向下大致可以分為網(wǎng)絡(luò)連接層、數(shù)據(jù)庫服務(wù)層、存儲引擎層和系統(tǒng)文件層四大部分。

1.3.9EChartsECharts是一款基于JavaScript的數(shù)據(jù)可視化圖表庫,最初由百度團(tuán)隊開源,并于2018年初被捐贈給Apache基金會,成為ASF孵化級項目。ECharts可以流暢地運(yùn)行在PC和移動設(shè)備上,兼容當(dāng)前絕大部分瀏覽器(如IE9/10/11、Chrome、Firefox、Safari等),底層依賴矢量圖形庫ZRender,提供直觀、交互豐富、可高度個性化定制的數(shù)據(jù)可視化圖表。

1.3.10GrafanaGrafana是一種開源的可視化平臺,可用于監(jiān)視和分析各種指標(biāo),如服務(wù)器性能、網(wǎng)絡(luò)流量、傳感器數(shù)據(jù)、應(yīng)用程序指標(biāo)等。Grafana是由Torkel?degaard于2014年創(chuàng)建的,現(xiàn)在已經(jīng)成為一種被廣泛使用的監(jiān)控和可視化工具,Grafana官方網(wǎng)站如圖所示。

1.3.11VSCode

VisualStudioCode(VSCode)是由微軟開發(fā)的一款免費(fèi)的源代碼編輯器。它是一款輕量級的代碼編輯器,具有跨平臺、高度可定制化和豐富的插件生態(tài)系統(tǒng)等特點(diǎn)。1.3.12IntelliJIDEA

IntelliJIDEA是一款由JetBrains公司開發(fā)的集成開發(fā)環(huán)境(IDE),IntelliJIDEA界面如圖1-3-20所示,旨在提高Java和其他編程語言的開發(fā)效率。1.3.13Maven

Maven是一個開源的項目管理和構(gòu)建工具,它可以自動化管理Java項目的構(gòu)建、依賴管理和文檔發(fā)布等過程。Maven基于項目對象模型(POM)的概念來管理項目,并提供了一組插件來執(zhí)行常見的構(gòu)建任務(wù)。Maven也可用于構(gòu)建和管理各種項目,如由C#、Ruby、Scala和其他語言編寫的項目。Maven能夠幫助開發(fā)者完成構(gòu)建、文檔生成、報告、依賴管理、SCMs

、發(fā)布、分發(fā)、郵件列表等工作。Maven提倡使用一個共同的標(biāo)準(zhǔn)目錄結(jié)構(gòu),Maven使用約定優(yōu)于配置的原則。習(xí)題1.1請設(shè)計一個大學(xué)校園的相關(guān)物聯(lián)網(wǎng)應(yīng)用場景。1.2請設(shè)計一個大學(xué)校園的相關(guān)大數(shù)據(jù)應(yīng)用場景。第二章物聯(lián)網(wǎng)數(shù)據(jù)采集技能目標(biāo)能夠使用NodeMCU和常見傳感器組建一個簡單的物聯(lián)網(wǎng)環(huán)境。能夠部署物聯(lián)網(wǎng)數(shù)據(jù)采集所需要的軟件開發(fā)環(huán)境。能夠進(jìn)行NodeMCU編程。本章任務(wù)學(xué)習(xí)本章,讀者需要完成以下任務(wù)。任務(wù)2.1組建物聯(lián)網(wǎng)環(huán)境。任務(wù)2.2部署軟件開發(fā)環(huán)境。任務(wù)2.3NodeMCU編程。任務(wù)1組建物聯(lián)網(wǎng)環(huán)境01【任務(wù)描述】了解傳感器的定義、組成部分、種類及應(yīng)用領(lǐng)域;掌握通過NodeMCU連接傳感器,組建物聯(lián)網(wǎng)環(huán)境的方法,使用NodeMCU和常見傳感器組建一個簡單的物聯(lián)網(wǎng)環(huán)境。任務(wù)1組建物聯(lián)網(wǎng)環(huán)境01【關(guān)鍵步驟】(1)認(rèn)識傳感器,了解傳感器的定義、組成部分、種類及應(yīng)用領(lǐng)域。(2)使用杜邦線連接NodeMCU、DHT11溫濕度傳感器和人體紅外傳感器的對應(yīng)引腳,組建一個簡單的物聯(lián)網(wǎng)環(huán)境。傳感器(Sensor)是一種能夠檢測物理量、化學(xué)量、生物量等各種信號的裝置

,將這些信號轉(zhuǎn)化為電信號或其他形式的信號并輸出。傳感器可以測量溫度、濕度、壓力、流量、位置、速度、加速度、重力、光強(qiáng)度、聲音、磁場、化學(xué)成分等。傳感器在現(xiàn)代化生產(chǎn)和科學(xué)研究中起著重要的作用,它能夠?qū)崿F(xiàn)實(shí)時監(jiān)測和控制,可以提高生產(chǎn)效率和產(chǎn)品質(zhì)量,保障人們的安全和健康。2.1.1

認(rèn)識傳感器本小節(jié)分別以DHT11溫濕度傳感器和人體紅外傳感器為例演示如何利用NodeMCU連接傳感器,以組建一個簡單的物聯(lián)網(wǎng)環(huán)境,如圖所示。2.1.1

NodeMCU連接傳感器如圖所示,DHT11溫濕度傳感器有3個引腳,其中“+”引腳代表電源正極,接入NodeMCU的3.3v引腳處,“out”引腳代表數(shù)據(jù)輸出端口,在本示例中接入NodeMCU的D1引腳處,“-”代表傳感器接地引腳,將其接入NodeMCU的GND引腳即可。任務(wù)2部署軟件開發(fā)環(huán)境02【任務(wù)描述】在任務(wù)2.1中介紹了利用NodeMCU組建簡單物聯(lián)網(wǎng)環(huán)境的過程。本任務(wù)以Ubuntu系統(tǒng)為例,要求能夠獨(dú)立地安裝和配置EMQXBroker和ArduinoIDE,如圖所示任務(wù)2部署軟件開發(fā)環(huán)境02【關(guān)鍵步驟】(1)安裝和配置EMQXBroker。(2)安裝和配置ArduinoIDE。2.2.1

EMQXBroker從Github選擇、下載并安裝與操作系統(tǒng)版本一致的二進(jìn)制包。Github網(wǎng)址為/emqx/emqx/releases2.2.1

EMQXBroker啟動EMQXBroker進(jìn)入Web界面停止EMQXBroker2.2.2

安裝配置ArduinoIDE在Arduino官網(wǎng)下載最新版安裝包安裝文件安裝ArduinoIDE2.2.2

安裝配置ArduinoIDE安裝ArduinoIDE配置AdditionalboardsmanagerURLs打開ArduinoIDE,選擇“File”→“Preferences”。在打開的對話框的“AdditionalboardsmanagerURLs”輸入框中填寫以下鏈接:/stable/package_esp8266com_index.json2.2.2

安裝配置ArduinoIDE添加ESP8266相關(guān)開發(fā)板再次選中“Tools”→“Board:”ArduinoUno“”,選中“BOARDSMANAGER”開發(fā)板管理器,打開新的窗口。在開發(fā)板管理器上部的搜索欄輸入“esp8266”,搜索相關(guān)開發(fā)板。點(diǎn)擊“INSTALL”按鈕安裝,安裝完成后將開發(fā)板切換到NodeMCU1.0(ESP-12EModule),就可以使用ArduinoIDE對NodeMCU進(jìn)行代碼開發(fā)及代碼燒寫操作了。2.2.2

安裝配置ArduinoIDE準(zhǔn)備工作完成后可以在“File”→“example”中找到ESP8266相關(guān)示例程序,打開Blink示例程序,使用USB線連接電腦和NodeMCU,點(diǎn)擊ArduinoIDE中的上傳按鈕就可以將程序編譯燒寫到硬件中,測試ESP8266示例程序如圖所示。任務(wù)3NodeMCU編程03【任務(wù)描述】能夠?qū)odeMCU進(jìn)行編程,以連接EMQXBroker;掌握讀取DHT11溫濕度傳感器數(shù)據(jù)的方法和示例;掌握使用PubSubClient庫向MQTT服務(wù)器的特定數(shù)據(jù)主題發(fā)布消息的方法及傳感器數(shù)據(jù)發(fā)布示例,并能融會貫通。任務(wù)3NodeMCU編程03【關(guān)鍵步驟】(1)對NodeMCU編程,以連接EMQXBroker。(2)掌握讀取DHT11溫濕度傳感器數(shù)據(jù)的方法和示例。(3)掌握傳感器數(shù)據(jù)發(fā)布示例。2.3.1

連接EMQXBroker(1)連接NodeMCU與計算機(jī)。EMQXBroker本質(zhì)上是一個以MQTT協(xié)議實(shí)現(xiàn)的代理服務(wù)器,對其進(jìn)行連接需要使用硬件端MQTT庫,這里選擇PubSubClient

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論