趙 康 楊余旺
(南京理工大學(xué) 南京 210094)
物聯(lián)網(wǎng)是新一代網(wǎng)絡(luò)信息技術(shù)[1]。它在互聯(lián)網(wǎng)的基礎(chǔ)上,在用戶端進(jìn)行拓展和延伸,來進(jìn)行信息交換和通信,互聯(lián)網(wǎng)強(qiáng)調(diào)人與人之前的通信和信息交流,而物聯(lián)網(wǎng)通過自組網(wǎng)建立起新形式的無線傳感網(wǎng)[2~3],按照約定的協(xié)議,將物與物,物與人聯(lián)系在一起,實現(xiàn)萬物聯(lián)網(wǎng)。物聯(lián)網(wǎng)表現(xiàn)出高度智能,全面感知,無縫互聯(lián)的特征,使物聯(lián)網(wǎng)被廣泛地應(yīng)用與各個領(lǐng)域。
將物聯(lián)網(wǎng)技術(shù)應(yīng)用與環(huán)境檢測,能夠獲得大量實時、動態(tài)的數(shù)據(jù)[4~5]。傳統(tǒng)的物聯(lián)網(wǎng)技術(shù)強(qiáng)調(diào)物與物的連接與整合,對于其產(chǎn)生的大量數(shù)據(jù),僅僅是傳輸?shù)街付ǖ臄?shù)據(jù)的數(shù)據(jù)中心,缺少深入的數(shù)據(jù)整合和數(shù)據(jù)分析,沒有發(fā)揮出數(shù)據(jù)集成的優(yōu)勢[6~7];將云計算技術(shù)與物聯(lián)網(wǎng)相結(jié)合,利用計算機(jī)服務(wù)集群強(qiáng)大的計算能力,可以實現(xiàn)靈活多變的數(shù)據(jù)分析應(yīng)用,深度發(fā)掘物聯(lián)網(wǎng)數(shù)據(jù)的價值。
大數(shù)據(jù)平臺Hadoop 目前是最流行的云計算開源項目[8~9],它旨在利用集群節(jié)點的資源,使用簡單的編程模型對大數(shù)據(jù)集進(jìn)行分布式存儲和處理,可以在大量通用硬件設(shè)備組成的集群上運行應(yīng)用程序,構(gòu)建一個擴(kuò)容性強(qiáng),成本低廉,高效可靠的分布式系統(tǒng)[10~11]。
本文基于Hadoop 設(shè)計構(gòu)建一個物聯(lián)云監(jiān)控系統(tǒng),并給出了原型系統(tǒng)和實驗驗證。該系統(tǒng)由物聯(lián)自組網(wǎng)和物聯(lián)云平臺兩大子系統(tǒng)組成,物聯(lián)自組網(wǎng)采用無線傳感網(wǎng)技術(shù),采用多種傳感器技術(shù)采集和檢測環(huán)境數(shù)據(jù),利用GPRS 技術(shù)實現(xiàn)無線傳感網(wǎng)與傳統(tǒng)電信網(wǎng)絡(luò)之間的數(shù)據(jù)傳送[12];物聯(lián)云平臺采用Windows 網(wǎng)絡(luò)編程技術(shù)實現(xiàn)存儲網(wǎng)關(guān)實現(xiàn)電信網(wǎng)絡(luò)與互聯(lián)網(wǎng)之間的數(shù)據(jù)傳輸,采用Hadoop 技術(shù)實現(xiàn)云計算平臺實現(xiàn)對監(jiān)測數(shù)據(jù)的分析和處理,采用JavaEE 技術(shù)實現(xiàn)檢測數(shù)據(jù)和數(shù)據(jù)應(yīng)用程序的可視化[13]。該系統(tǒng)充分結(jié)合了物聯(lián)網(wǎng)技術(shù)和云計算技術(shù)的優(yōu)點,能夠?qū)崿F(xiàn)環(huán)境數(shù)據(jù)的實時監(jiān)控和海量監(jiān)控數(shù)據(jù)的處理和分析。希望能夠?qū)τ诟纳票O(jiān)控手段和提高物聯(lián)網(wǎng)數(shù)據(jù)處理和數(shù)據(jù)分析能力有所借鑒。
本物聯(lián)網(wǎng)監(jiān)控系統(tǒng)體系由兩大部分組成,分別為物聯(lián)自組網(wǎng)和物聯(lián)云平臺。如圖1 所示。
圖1 物聯(lián)網(wǎng)監(jiān)控系統(tǒng)體系圖
其中物聯(lián)自組網(wǎng)由若干個數(shù)據(jù)采集節(jié)點和一個中繼節(jié)點組成,形成一個無線傳感網(wǎng)絡(luò)兩類節(jié)點通過射頻天線模塊形成一個星型拓?fù)渚W(wǎng)絡(luò)。數(shù)據(jù)采集節(jié)點包括傳感單元,網(wǎng)內(nèi)通信單元等。傳感單元有多種環(huán)境傳感器,用以采集環(huán)境數(shù)據(jù)(包括光照強(qiáng)度傳感器,空氣溫濕度傳感器和土壤空氣溫濕度傳感器)。網(wǎng)內(nèi)通信單元,用以將其采集到的數(shù)據(jù)傳輸?shù)街欣^節(jié)點。中繼節(jié)點包括網(wǎng)內(nèi)通信單元,數(shù)據(jù)顯示單元,遠(yuǎn)程通信單元等[14]。數(shù)據(jù)顯示單元用以實時顯示自數(shù)據(jù)采集節(jié)點接收到的數(shù)據(jù);網(wǎng)內(nèi)通信單元實現(xiàn)節(jié)點間的通信。
物聯(lián)云平臺由上位機(jī)服務(wù)器,云計算平臺和Web服務(wù)器組成。上位機(jī)服務(wù)器作為數(shù)據(jù)網(wǎng)關(guān),負(fù)責(zé)與物聯(lián)自組網(wǎng)的網(wǎng)絡(luò)通信,接收物聯(lián)自組網(wǎng)發(fā)送過來的數(shù)據(jù),為了保證數(shù)據(jù)持久化,采用數(shù)據(jù)庫技術(shù)保存這些接收到的數(shù)據(jù)[15]。云計算平臺負(fù)責(zé)對上位機(jī)服務(wù)器接收到,持久化保存下的數(shù)據(jù)進(jìn)行分析和處理。Web 服務(wù)器負(fù)責(zé)對上位機(jī)服務(wù)器接收到數(shù)據(jù)和云計算平臺的數(shù)據(jù)分析結(jié)果進(jìn)行可視化展示。
物聯(lián)自組網(wǎng)采集環(huán)境中的數(shù)據(jù)并將其上傳到服務(wù)器,是物聯(lián)云監(jiān)控系統(tǒng)的重要組成部分。物聯(lián)自組網(wǎng)有兩類節(jié)點組成,數(shù)據(jù)采集節(jié)點和中繼節(jié)點。接下來將從硬件和軟件兩方面介紹這兩個節(jié)點。
數(shù)據(jù)采集節(jié)點采用STC89C52RC 作為主控單元,使用SHT11 空氣溫濕度傳感器和BH1750 光照強(qiáng)度傳感器作為傳感單元,采用MC13213 射頻模塊來作為網(wǎng)內(nèi)通信單元[16],主控單元通過通用I/O從傳感單元獲取所要的數(shù)據(jù),再通過串口傳輸給網(wǎng)內(nèi)通信單元,其硬件結(jié)構(gòu)圖如圖2所示。
圖2 數(shù)據(jù)采集節(jié)點硬件結(jié)構(gòu)圖
中繼節(jié)點采用MSP430F149 作為主控單元,采用MC13213 射頻模塊來作為網(wǎng)內(nèi)通信單元,與數(shù)據(jù)采集節(jié)點形成自組網(wǎng)。使用LCD12864液晶作為數(shù)據(jù)顯示單元,實時顯示采集到的數(shù)據(jù),采用GTM900B 無線通信模塊將作為遠(yuǎn)程通信單元,將采集到數(shù)據(jù)通過電信網(wǎng)絡(luò)上傳至上位機(jī)服務(wù)器,其硬件結(jié)構(gòu)圖如圖3所示。
圖3 中繼節(jié)點硬件結(jié)構(gòu)圖
為了實現(xiàn)自組網(wǎng)各節(jié)點的功能,必須對于兩類主控制器芯片進(jìn)行程序設(shè)計。
數(shù)據(jù)采集節(jié)點的功能在于采集數(shù)據(jù)和向傳輸中繼節(jié)點傳輸數(shù)據(jù)。程序首先初始化光照強(qiáng)度傳感器和空氣溫濕度傳感器,隨后初始化串口并開啟串口,隨后監(jiān)聽串口,如果接收到中繼節(jié)點發(fā)送的數(shù)據(jù)采集指令,則開始采集環(huán)境中光照數(shù)據(jù),溫度數(shù)據(jù)和濕度數(shù)據(jù),獲取這些數(shù)據(jù),將它們進(jìn)行封裝后,再通過串口發(fā)送至射頻模塊,由其將封裝后的數(shù)據(jù)傳輸至中繼節(jié)點。
中繼節(jié)點的功能在于顯示數(shù)據(jù)和接收來自采集節(jié)點的數(shù)據(jù),和向上位機(jī)服務(wù)器發(fā)送數(shù)據(jù)。其主程序首先初始化液晶模塊和兩個串口,串口1 與射頻模塊通信,串口2 與GPRS 模塊通信,隨后通過AT 指令控制GPRS 模塊連接上位機(jī)服務(wù)器。連接服務(wù)器成功后,開始監(jiān)控串口1,如果接收到數(shù)據(jù)采集節(jié)點傳輸過來的數(shù)據(jù),將封裝在AT指令中,向串口2 轉(zhuǎn)發(fā),隨后解析源數(shù)據(jù)并將其顯示在液晶屏上。
物聯(lián)云平臺由上位機(jī)服務(wù)器,Web 服務(wù)器,和云計算平臺組成,接下來分別對這三部分進(jìn)行介紹。
上位機(jī)服務(wù)器為一個TCP服務(wù)器,能夠獲取本地IP,監(jiān)聽特定端口,與中繼節(jié)點建立可靠的連接鏈路,持續(xù)地從中繼節(jié)點接收數(shù)據(jù),并將這些數(shù)據(jù)保存到數(shù)據(jù)庫中,并且能夠與多個中繼節(jié)點同時通信,且保證各個節(jié)點的數(shù)據(jù)不會混淆。
采用.NET 架構(gòu)實現(xiàn)這些功能,利用網(wǎng)絡(luò)套接字實現(xiàn)數(shù)據(jù)傳輸,上位機(jī)服務(wù)器啟動后,自動獲取本地IP 并開始監(jiān)聽指定的端口,同時新建一個線程池來處理不同節(jié)點的連接,某一節(jié)點連接到服務(wù)器則從線程池中取出一個線程來處理此節(jié)點的連接。當(dāng)接收到從中繼節(jié)點發(fā)來的數(shù)據(jù)包時,服務(wù)器對其進(jìn)行解析,分析其節(jié)點號和數(shù)據(jù)信息,將主要信息在圖形界面上顯示;隨后根據(jù)這些信息構(gòu)造相應(yīng)的SQL 語句,將獲取的數(shù)據(jù)存儲至數(shù)據(jù)庫中,實現(xiàn)數(shù)據(jù)持久化。數(shù)據(jù)庫管理系統(tǒng)采用是開源關(guān)系型數(shù)據(jù)庫MySQL。MySQL 數(shù)據(jù)庫支持標(biāo)準(zhǔn)SQL 語言,功能強(qiáng)大,高效易用,可以滿足本系統(tǒng)的要求。
云計算平臺為整個系統(tǒng)提供的數(shù)據(jù)的分析處理能力,本系統(tǒng)中云計算機(jī)平臺通過Hadoop 集群來實現(xiàn),架構(gòu)如圖4所示。
圖4 云計算平臺體系圖
整個集群共有六臺服務(wù)器,其中一臺服務(wù)器作為主節(jié)點(NameNode),一臺作為備份節(jié)點(Secondary NameNode),其余四臺作為數(shù)據(jù)節(jié)點(DataNode);每臺服務(wù)器均配置有Intel Xeon E552中央處理器,32G 內(nèi)存,并且安裝64 位CentOS 6.5操作系統(tǒng)。集群服務(wù)器通過企業(yè)級路由器與外界通信,服務(wù)器之間通過千兆交換機(jī)進(jìn)行通信,為了方便對集群服務(wù)器進(jìn)行操作,配置有16 端口多電腦切換器(KVM)[17]。
具體到每一類上節(jié)點,主節(jié)點負(fù)責(zé)控制所有的節(jié)點,通過JobTracker 和TaskTracker 監(jiān)視數(shù)據(jù)節(jié)點的心跳及其協(xié)調(diào)MapReduce計算[18~19];通過SQOOP將數(shù)據(jù)格式轉(zhuǎn)換成 HDFS 數(shù)據(jù)格式[20];Hive 服務(wù)器負(fù)責(zé)管理和查詢存儲在HDFS 中的數(shù)據(jù)集;通過Oozie控制工作流的調(diào)度。為了更好地管理整個集群,在主節(jié)點上安裝了Cloudera Manager管理系統(tǒng),該系統(tǒng)能夠通過配置參數(shù)管理寄存,并監(jiān)控集群的健康情況,對集群出現(xiàn)的問題進(jìn)行診斷。備份節(jié)點定時到主節(jié)點上獲取edits 日志文件,并更新到fsimage 上,控制edit 日志文件的規(guī)模,一旦它有了新的fsimage 文件,將其拷貝回主節(jié)點中;如果主節(jié)點宕機(jī),可利用備份節(jié)點來恢復(fù)主節(jié)點。數(shù)據(jù)節(jié)點提供真實文件數(shù)據(jù)的存儲服務(wù)和MapReduce 計算。數(shù)據(jù)節(jié)點響應(yīng)來自客戶機(jī)的請求和來自主節(jié)點的命令。當(dāng)執(zhí)行MapReduce 作業(yè)時,主節(jié)點上Job-Tracker 會激活數(shù)據(jù)節(jié)點上的TaskTracker,通過心跳與之通信,數(shù)據(jù)節(jié)點上的TaskTracker 接收作業(yè),并執(zhí)行每一個任務(wù),同時反饋執(zhí)行狀態(tài)給JobTracker[21]。
本系統(tǒng)提供一個網(wǎng)站來更好地呈現(xiàn)數(shù)據(jù)和實現(xiàn)節(jié)點管理,網(wǎng)站采用MVC 模式開發(fā),網(wǎng)站前端采用Bootstrap 架構(gòu)來實現(xiàn),能夠提供一個友好的界面;網(wǎng)站后端采用structs2 架構(gòu),實現(xiàn)用戶登錄和數(shù)據(jù)的增刪改查。
本文實現(xiàn)的物聯(lián)自組網(wǎng)由兩個數(shù)據(jù)采集節(jié)點和一個中繼節(jié)點組成,數(shù)據(jù)采集節(jié)點不至于實驗房間內(nèi),中繼節(jié)點布置與實驗房間外,兩個數(shù)據(jù)采集節(jié)點相距30m,它們與中繼節(jié)點的距離均為50m。兩類節(jié)點的實物圖如圖5 所示(左為數(shù)據(jù)采集節(jié)點,右為中繼節(jié)點)。
圖5 物聯(lián)自組網(wǎng)節(jié)點圖
上位機(jī)服務(wù)器接收下位機(jī)傳輸過來的數(shù)據(jù),并將數(shù)據(jù)存入數(shù)據(jù)庫中,供系統(tǒng)中其他組件調(diào)用,它部署于物聯(lián)云平臺的入口。上位機(jī)服務(wù)器工作效果如圖6所示,在配置服務(wù)器的IP地址和端口后啟動服務(wù)器,服務(wù)器即開始向下位機(jī)提供服務(wù)。
圖6 上位機(jī)服務(wù)器工作圖
Web 服務(wù)器負(fù)責(zé)呈現(xiàn)數(shù)據(jù)和接受數(shù)據(jù)分析請求,是整個系統(tǒng)對外交互的接口。能夠時實時采集到的傳感器數(shù)據(jù),包括光照,溫度和濕度數(shù)據(jù)。還可以查詢到歷史數(shù)據(jù)和利用云計算平臺對數(shù)據(jù)進(jìn)行分析,并展示分析結(jié)果,圖7 是歷史數(shù)據(jù)查詢的數(shù)據(jù)展示圖。
圖7 數(shù)據(jù)信息網(wǎng)頁圖
Hadoop 集群是整個物理云平臺的核心。集群主機(jī)配置如圖8 所示:整個集群由六個節(jié)點組成,包括一個主節(jié)點(master),一個備份節(jié)點(secondnn)和四個數(shù)據(jù)節(jié)點(slaves0x),六個節(jié)點被組織在同一個域中,主節(jié)點可以通過心跳與數(shù)據(jù)節(jié)點通信。
圖8 集群主機(jī)配置圖
整個集群使用Cloudera Manager來管理各類云計算組件,并對集群中各類資源,如CPU,內(nèi)存,I/O消耗等參數(shù)進(jìn)行監(jiān)控。對集群信息的管理情況如圖9所示。
圖9 集群信息管理圖
本文設(shè)計并實現(xiàn)了一個基于Hadoop 構(gòu)建的物聯(lián)云監(jiān)控系統(tǒng),采用無線傳感技術(shù)構(gòu)建物聯(lián)自組網(wǎng)實現(xiàn)對于環(huán)境數(shù)據(jù)的實時監(jiān)控,并且能夠利用Hadoop 云計算平臺實現(xiàn)對海量監(jiān)控數(shù)據(jù)的處理和分析。該系統(tǒng)界面簡潔,功能實用,能夠推廣應(yīng)用于智能家居、工業(yè)監(jiān)控、智能電網(wǎng)、等物聯(lián)網(wǎng)應(yīng)用領(lǐng)域。