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