趙 康 楊余旺
(南京理工大學 南京 210094)
物聯網是新一代網絡信息技術[1]。它在互聯網的基礎上,在用戶端進行拓展和延伸,來進行信息交換和通信,互聯網強調人與人之前的通信和信息交流,而物聯網通過自組網建立起新形式的無線傳感網[2~3],按照約定的協議,將物與物,物與人聯系在一起,實現萬物聯網。物聯網表現出高度智能,全面感知,無縫互聯的特征,使物聯網被廣泛地應用與各個領域。
將物聯網技術應用與環境檢測,能夠獲得大量實時、動態的數據[4~5]。傳統的物聯網技術強調物與物的連接與整合,對于其產生的大量數據,僅僅是傳輸到指定的數據的數據中心,缺少深入的數據整合和數據分析,沒有發揮出數據集成的優勢[6~7];將云計算技術與物聯網相結合,利用計算機服務集群強大的計算能力,可以實現靈活多變的數據分析應用,深度發掘物聯網數據的價值。
大數據平臺Hadoop 目前是最流行的云計算開源項目[8~9],它旨在利用集群節點的資源,使用簡單的編程模型對大數據集進行分布式存儲和處理,可以在大量通用硬件設備組成的集群上運行應用程序,構建一個擴容性強,成本低廉,高效可靠的分布式系統[10~11]。
本文基于Hadoop 設計構建一個物聯云監控系統,并給出了原型系統和實驗驗證。該系統由物聯自組網和物聯云平臺兩大子系統組成,物聯自組網采用無線傳感網技術,采用多種傳感器技術采集和檢測環境數據,利用GPRS 技術實現無線傳感網與傳統電信網絡之間的數據傳送[12];物聯云平臺采用Windows 網絡編程技術實現存儲網關實現電信網絡與互聯網之間的數據傳輸,采用Hadoop 技術實現云計算平臺實現對監測數據的分析和處理,采用JavaEE 技術實現檢測數據和數據應用程序的可視化[13]。該系統充分結合了物聯網技術和云計算技術的優點,能夠實現環境數據的實時監控和海量監控數據的處理和分析。希望能夠對于改善監控手段和提高物聯網數據處理和數據分析能力有所借鑒。
本物聯網監控系統體系由兩大部分組成,分別為物聯自組網和物聯云平臺。如圖1 所示。

圖1 物聯網監控系統體系圖
其中物聯自組網由若干個數據采集節點和一個中繼節點組成,形成一個無線傳感網絡兩類節點通過射頻天線模塊形成一個星型拓撲網絡。數據采集節點包括傳感單元,網內通信單元等。傳感單元有多種環境傳感器,用以采集環境數據(包括光照強度傳感器,空氣溫濕度傳感器和土壤空氣溫濕度傳感器)。網內通信單元,用以將其采集到的數據傳輸到中繼節點。中繼節點包括網內通信單元,數據顯示單元,遠程通信單元等[14]。數據顯示單元用以實時顯示自數據采集節點接收到的數據;網內通信單元實現節點間的通信。
物聯云平臺由上位機服務器,云計算平臺和Web服務器組成。上位機服務器作為數據網關,負責與物聯自組網的網絡通信,接收物聯自組網發送過來的數據,為了保證數據持久化,采用數據庫技術保存這些接收到的數據[15]。云計算平臺負責對上位機服務器接收到,持久化保存下的數據進行分析和處理。Web 服務器負責對上位機服務器接收到數據和云計算平臺的數據分析結果進行可視化展示。
物聯自組網采集環境中的數據并將其上傳到服務器,是物聯云監控系統的重要組成部分。物聯自組網有兩類節點組成,數據采集節點和中繼節點。接下來將從硬件和軟件兩方面介紹這兩個節點。
數據采集節點采用STC89C52RC 作為主控單元,使用SHT11 空氣溫濕度傳感器和BH1750 光照強度傳感器作為傳感單元,采用MC13213 射頻模塊來作為網內通信單元[16],主控單元通過通用I/O從傳感單元獲取所要的數據,再通過串口傳輸給網內通信單元,其硬件結構圖如圖2所示。

圖2 數據采集節點硬件結構圖
中繼節點采用MSP430F149 作為主控單元,采用MC13213 射頻模塊來作為網內通信單元,與數據采集節點形成自組網。使用LCD12864液晶作為數據顯示單元,實時顯示采集到的數據,采用GTM900B 無線通信模塊將作為遠程通信單元,將采集到數據通過電信網絡上傳至上位機服務器,其硬件結構圖如圖3所示。

圖3 中繼節點硬件結構圖
為了實現自組網各節點的功能,必須對于兩類主控制器芯片進行程序設計。
數據采集節點的功能在于采集數據和向傳輸中繼節點傳輸數據。程序首先初始化光照強度傳感器和空氣溫濕度傳感器,隨后初始化串口并開啟串口,隨后監聽串口,如果接收到中繼節點發送的數據采集指令,則開始采集環境中光照數據,溫度數據和濕度數據,獲取這些數據,將它們進行封裝后,再通過串口發送至射頻模塊,由其將封裝后的數據傳輸至中繼節點。
中繼節點的功能在于顯示數據和接收來自采集節點的數據,和向上位機服務器發送數據。其主程序首先初始化液晶模塊和兩個串口,串口1 與射頻模塊通信,串口2 與GPRS 模塊通信,隨后通過AT 指令控制GPRS 模塊連接上位機服務器。連接服務器成功后,開始監控串口1,如果接收到數據采集節點傳輸過來的數據,將封裝在AT指令中,向串口2 轉發,隨后解析源數據并將其顯示在液晶屏上。
物聯云平臺由上位機服務器,Web 服務器,和云計算平臺組成,接下來分別對這三部分進行介紹。
上位機服務器為一個TCP服務器,能夠獲取本地IP,監聽特定端口,與中繼節點建立可靠的連接鏈路,持續地從中繼節點接收數據,并將這些數據保存到數據庫中,并且能夠與多個中繼節點同時通信,且保證各個節點的數據不會混淆。
采用.NET 架構實現這些功能,利用網絡套接字實現數據傳輸,上位機服務器啟動后,自動獲取本地IP 并開始監聽指定的端口,同時新建一個線程池來處理不同節點的連接,某一節點連接到服務器則從線程池中取出一個線程來處理此節點的連接。當接收到從中繼節點發來的數據包時,服務器對其進行解析,分析其節點號和數據信息,將主要信息在圖形界面上顯示;隨后根據這些信息構造相應的SQL 語句,將獲取的數據存儲至數據庫中,實現數據持久化。數據庫管理系統采用是開源關系型數據庫MySQL。MySQL 數據庫支持標準SQL 語言,功能強大,高效易用,可以滿足本系統的要求。
云計算平臺為整個系統提供的數據的分析處理能力,本系統中云計算機平臺通過Hadoop 集群來實現,架構如圖4所示。

圖4 云計算平臺體系圖
整個集群共有六臺服務器,其中一臺服務器作為主節點(NameNode),一臺作為備份節點(Secondary NameNode),其余四臺作為數據節點(DataNode);每臺服務器均配置有Intel Xeon E552中央處理器,32G 內存,并且安裝64 位CentOS 6.5操作系統。集群服務器通過企業級路由器與外界通信,服務器之間通過千兆交換機進行通信,為了方便對集群服務器進行操作,配置有16 端口多電腦切換器(KVM)[17]。
具體到每一類上節點,主節點負責控制所有的節點,通過JobTracker 和TaskTracker 監視數據節點的心跳及其協調MapReduce計算[18~19];通過SQOOP將數據格式轉換成 HDFS 數據格式[20];Hive 服務器負責管理和查詢存儲在HDFS 中的數據集;通過Oozie控制工作流的調度。為了更好地管理整個集群,在主節點上安裝了Cloudera Manager管理系統,該系統能夠通過配置參數管理寄存,并監控集群的健康情況,對集群出現的問題進行診斷。備份節點定時到主節點上獲取edits 日志文件,并更新到fsimage 上,控制edit 日志文件的規模,一旦它有了新的fsimage 文件,將其拷貝回主節點中;如果主節點宕機,可利用備份節點來恢復主節點。數據節點提供真實文件數據的存儲服務和MapReduce 計算。數據節點響應來自客戶機的請求和來自主節點的命令。當執行MapReduce 作業時,主節點上Job-Tracker 會激活數據節點上的TaskTracker,通過心跳與之通信,數據節點上的TaskTracker 接收作業,并執行每一個任務,同時反饋執行狀態給JobTracker[21]。
本系統提供一個網站來更好地呈現數據和實現節點管理,網站采用MVC 模式開發,網站前端采用Bootstrap 架構來實現,能夠提供一個友好的界面;網站后端采用structs2 架構,實現用戶登錄和數據的增刪改查。
本文實現的物聯自組網由兩個數據采集節點和一個中繼節點組成,數據采集節點不至于實驗房間內,中繼節點布置與實驗房間外,兩個數據采集節點相距30m,它們與中繼節點的距離均為50m。兩類節點的實物圖如圖5 所示(左為數據采集節點,右為中繼節點)。

圖5 物聯自組網節點圖
上位機服務器接收下位機傳輸過來的數據,并將數據存入數據庫中,供系統中其他組件調用,它部署于物聯云平臺的入口。上位機服務器工作效果如圖6所示,在配置服務器的IP地址和端口后啟動服務器,服務器即開始向下位機提供服務。

圖6 上位機服務器工作圖
Web 服務器負責呈現數據和接受數據分析請求,是整個系統對外交互的接口。能夠時實時采集到的傳感器數據,包括光照,溫度和濕度數據。還可以查詢到歷史數據和利用云計算平臺對數據進行分析,并展示分析結果,圖7 是歷史數據查詢的數據展示圖。

圖7 數據信息網頁圖
Hadoop 集群是整個物理云平臺的核心。集群主機配置如圖8 所示:整個集群由六個節點組成,包括一個主節點(master),一個備份節點(secondnn)和四個數據節點(slaves0x),六個節點被組織在同一個域中,主節點可以通過心跳與數據節點通信。

圖8 集群主機配置圖
整個集群使用Cloudera Manager來管理各類云計算組件,并對集群中各類資源,如CPU,內存,I/O消耗等參數進行監控。對集群信息的管理情況如圖9所示。

圖9 集群信息管理圖
本文設計并實現了一個基于Hadoop 構建的物聯云監控系統,采用無線傳感技術構建物聯自組網實現對于環境數據的實時監控,并且能夠利用Hadoop 云計算平臺實現對海量監控數據的處理和分析。該系統界面簡潔,功能實用,能夠推廣應用于智能家居、工業監控、智能電網、等物聯網應用領域。