張寶燕
(晉中學(xué)院信息技術(shù)與工程學(xué)院,山西 晉中 030619)
近些年來(lái),大數(shù)據(jù)技術(shù)發(fā)展迅速。大數(shù)據(jù)已經(jīng)廣泛地應(yīng)用在交通系統(tǒng)[1]、農(nóng)業(yè)生產(chǎn)[2-4]、石油工業(yè)[5]、電力[6]等領(lǐng)域。通過(guò)大數(shù)據(jù)技術(shù)為很多領(lǐng)域提供了新的發(fā)展思路。在美國(guó),很多農(nóng)業(yè)產(chǎn)品的生長(zhǎng)過(guò)程都通過(guò)傳感器來(lái)采集數(shù)據(jù)并加以分析,提高農(nóng)作物的產(chǎn)量和質(zhì)量。其中會(huì)產(chǎn)生海量的數(shù)據(jù),需要為它們提供一個(gè)存儲(chǔ)和處理的方法,來(lái)實(shí)時(shí)地把握農(nóng)作物生長(zhǎng)狀態(tài),進(jìn)而為農(nóng)場(chǎng)主提供一個(gè)合理高效的農(nóng)田治理方法。在國(guó)內(nèi),大數(shù)據(jù)技術(shù)發(fā)展很快,在北京,上海等城市也使用大數(shù)據(jù)技術(shù)為交通管理提供智能分析,智能決策。結(jié)合社會(huì)實(shí)際需求,網(wǎng)絡(luò)的很多節(jié)點(diǎn)都是嵌入式設(shè)備,它們往往是計(jì)算能力弱,分布廣泛,節(jié)點(diǎn)眾多,采用無(wú)線連接。這種網(wǎng)絡(luò)情形下,往往需要把數(shù)據(jù)傳輸?shù)綌?shù)據(jù)中心進(jìn)行統(tǒng)一處理和分析。使用大數(shù)據(jù)技術(shù)對(duì)物聯(lián)網(wǎng)的實(shí)際應(yīng)用提供解決方案,是時(shí)代發(fā)展的迫切需求,對(duì)促進(jìn)產(chǎn)業(yè)升級(jí)有重要的意義。
Hadoop平臺(tái)[7]是近些年來(lái)大數(shù)據(jù)領(lǐng)域使用較為廣泛的產(chǎn)品。它將分布式文件系統(tǒng)HDFS和集群計(jì)算結(jié)合在了一起。圍繞該平臺(tái)的一系列軟件組件為大數(shù)據(jù)的很多問(wèn)題解決提供了技術(shù)支撐。這其中就包括了分布式數(shù)據(jù)庫(kù)HBASE以及多種數(shù)據(jù)庫(kù)數(shù)據(jù)共享和導(dǎo)入導(dǎo)出的插件Sqoop,它們?yōu)閼?yīng)用數(shù)據(jù)的無(wú)縫傳輸提供了方便。在物聯(lián)網(wǎng)當(dāng)中,使用CC2430作為控制節(jié)點(diǎn),負(fù)責(zé)將傳感器節(jié)點(diǎn)CC2530的相應(yīng)數(shù)據(jù)上報(bào)給大數(shù)據(jù)中心,大數(shù)據(jù)中心使用計(jì)算機(jī)集群對(duì)日志數(shù)據(jù)進(jìn)行采集和分析,為物聯(lián)網(wǎng)的應(yīng)用業(yè)務(wù)提供數(shù)據(jù)和計(jì)算決策支持。
Web技術(shù)開發(fā)方便了系統(tǒng)維護(hù)人員及時(shí)查看物聯(lián)網(wǎng)的狀態(tài),對(duì)其中的采集數(shù)據(jù)進(jìn)行實(shí)時(shí)查看,和對(duì)分析結(jié)果進(jìn)行及時(shí)響應(yīng)。它的優(yōu)點(diǎn)在于提供了一個(gè)多種視角的可視化界面。用戶能夠在第一時(shí)間內(nèi)查看和發(fā)現(xiàn)系統(tǒng)中的變化,這對(duì)于管理和維護(hù)整個(gè)系統(tǒng)運(yùn)行是非常有必要的。Tomcat為后臺(tái)運(yùn)行和瀏覽器數(shù)據(jù)傳輸提供一個(gè)平臺(tái),而Spring框架結(jié)合MySQL數(shù)據(jù)為Web應(yīng)用提供了很好的B/S架構(gòu)。在應(yīng)用當(dāng)中,只需要通過(guò)瀏覽器可以在各種計(jì)算機(jī)設(shè)備上方便地查看和訪問(wèn)大數(shù)據(jù)中心的各個(gè)數(shù)據(jù),并做各自權(quán)限內(nèi)的系統(tǒng)操作。
物聯(lián)網(wǎng)絡(luò)當(dāng)中設(shè)置大量的傳感器作為基礎(chǔ)的采集數(shù)據(jù)節(jié)點(diǎn)。有些具有無(wú)線通信的特點(diǎn),然后通過(guò)相應(yīng)的協(xié)議傳輸?shù)酱髷?shù)據(jù)中心。本系統(tǒng)在服務(wù)器上搭建了相應(yīng)的大數(shù)據(jù)中心,同時(shí)使用Web界面來(lái)顯示相應(yīng)的數(shù)據(jù),通過(guò)網(wǎng)絡(luò)連接大數(shù)據(jù)中心。作為系統(tǒng)的采集層,其數(shù)據(jù)要進(jìn)行采集和存儲(chǔ),并為后續(xù)的控制層提供相應(yīng)的調(diào)用接口。這也是大數(shù)據(jù)中心處理數(shù)據(jù)系統(tǒng)的基礎(chǔ)。分布式的文件訪問(wèn)系統(tǒng)當(dāng)中,包括了數(shù)據(jù)的冗余備份、高并發(fā)的快速訪問(wèn)控制、以及傳感數(shù)據(jù)的安全存儲(chǔ)。總體結(jié)構(gòu)如圖1系統(tǒng)框架結(jié)構(gòu)所示。
圖1 系統(tǒng)框架結(jié)構(gòu)
控制層要能夠?qū)?shù)據(jù)和相應(yīng)的外部操作結(jié)合起來(lái)。在這其中很多數(shù)據(jù)都是以數(shù)據(jù)表的形式存在,還有一些數(shù)據(jù)是以一些結(jié)構(gòu)化的文件、圖片和流數(shù)據(jù)存在。通過(guò)控制節(jié)點(diǎn)對(duì)傳感節(jié)點(diǎn)的管理,實(shí)現(xiàn)數(shù)據(jù)的及時(shí)上報(bào)和采集。在外部服務(wù)當(dāng)中,需要在前端為瀏覽器推送相應(yīng)的數(shù)據(jù)。而后臺(tái)需要對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行處理和分析。在大數(shù)據(jù)中心需要對(duì)這些操作提交到Hadoop大數(shù)據(jù)平臺(tái)上進(jìn)行。這里不可避免地需要訪問(wèn)分布式的文件系統(tǒng)和計(jì)算機(jī)資源的調(diào)度。在這個(gè)過(guò)程當(dāng)中,處理過(guò)程通常以作業(yè)的形式提交到系統(tǒng)后臺(tái)??梢酝ㄟ^(guò)通信的方式來(lái)實(shí)現(xiàn)數(shù)據(jù)之間的轉(zhuǎn)換。
在業(yè)務(wù)層上主要是系統(tǒng)的一些功能,如何把相應(yīng)的日志數(shù)據(jù)在傳感器上進(jìn)行采集并把它整理到分布式文件系統(tǒng)上和數(shù)據(jù)庫(kù)上。然后通過(guò)相應(yīng)的計(jì)算機(jī)資源對(duì)數(shù)據(jù)進(jìn)行分析整理。這些數(shù)據(jù)再通過(guò)后臺(tái)處理,把平臺(tái)上的數(shù)據(jù)以合適的視圖推送給瀏覽器。這樣,用戶可以以Web視圖的方式把相應(yīng)的數(shù)據(jù)通過(guò)瀏覽器查看和修改。
在節(jié)點(diǎn)網(wǎng)絡(luò)當(dāng)中需要配置相應(yīng)的認(rèn)證來(lái)確保數(shù)據(jù)之間傳輸?shù)陌踩?。要通過(guò)生成證書,互相之間添加信任的公鑰證書來(lái)實(shí)現(xiàn)無(wú)密碼通信。這樣建立的網(wǎng)絡(luò)可以不需要用戶頻繁的輸入密碼來(lái)進(jìn)行互相之間的數(shù)據(jù)備份,以及其他的計(jì)算交流。在數(shù)據(jù)的配置方面需要指定相應(yīng)的驅(qū)動(dòng)和相應(yīng)的數(shù)據(jù)庫(kù)存儲(chǔ)的路徑,并把相應(yīng)的用戶名和密碼指定在相應(yīng)的參數(shù)作為數(shù)據(jù)庫(kù)的配置參數(shù)。將系統(tǒng)業(yè)務(wù)的相關(guān)操作轉(zhuǎn)化成對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作語(yǔ)句,如果數(shù)據(jù)庫(kù)輸入格式化類,將該語(yǔ)句提交到分布式數(shù)據(jù)庫(kù)上面。集合多個(gè)業(yè)務(wù)的處理,把數(shù)據(jù)進(jìn)行整合導(dǎo)入到對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)中。
在日志數(shù)據(jù)的處理方面,把多個(gè)數(shù)據(jù)進(jìn)行標(biāo)簽化處理。在作業(yè)上,通過(guò)相應(yīng)的reduce組件,對(duì)系統(tǒng)的多個(gè)鍵值對(duì)進(jìn)行合并。設(shè)計(jì)相關(guān)的處理邏輯把數(shù)據(jù)匯聚到一個(gè)可視化的顯示記錄上面去,再通過(guò)Web頁(yè)面顯示出來(lái)。
在系統(tǒng)實(shí)驗(yàn)階段,要首先能夠啟動(dòng)平臺(tái)的各個(gè)服務(wù),分別包括主節(jié)點(diǎn)NameNode,第二節(jié)點(diǎn)SecondaryNameNode,數(shù)據(jù)節(jié)點(diǎn)DataNode,作業(yè)節(jié)點(diǎn)TaskTracker。在數(shù)據(jù)的轉(zhuǎn)入轉(zhuǎn)出方面,啟動(dòng)了很多服務(wù)。這包括了主轉(zhuǎn)換節(jié)點(diǎn)HMaster,注冊(cè)服務(wù)節(jié)點(diǎn)HRegionServer,以及查詢節(jié)點(diǎn)HQuorumPeer。在正常啟動(dòng)時(shí),可以在界面當(dāng)中輸入jps命令來(lái)查看相應(yīng)的結(jié)果??梢栽诿钚挟?dāng)中看到相應(yīng)的服務(wù)都已經(jīng)正確啟動(dòng)。如果有一些服務(wù)沒(méi)有出現(xiàn),那么可以查看相應(yīng)的日志文件,可以看出系統(tǒng)拋出了哪些異常,從而鎖定相應(yīng)的問(wèn)題。啟動(dòng)成功界面如圖2。
圖2 大數(shù)據(jù)服務(wù)啟動(dòng)成功界面
在數(shù)據(jù)的處理過(guò)程當(dāng)中可以通過(guò)在線網(wǎng)絡(luò),在相應(yīng)的Web界面查看相應(yīng)的數(shù)據(jù)。這里配置的路徑如下,http://localhost:50030/。可以在瀏覽器當(dāng)中輸入這個(gè)地址查看作業(yè)的運(yùn)行情況和相應(yīng)運(yùn)行結(jié)果。系統(tǒng)運(yùn)行測(cè)試狀況如表1數(shù)據(jù)采集性能所示。
在這個(gè)數(shù)據(jù)當(dāng)中可以看到處理的進(jìn)程包括了四個(gè)任務(wù)線。通過(guò)并行的處理對(duì)數(shù)據(jù)進(jìn)行快速的采集,并存到對(duì)應(yīng)的數(shù)據(jù)庫(kù)當(dāng)中。分布式數(shù)據(jù)庫(kù)需要提前做好相應(yīng)的表的結(jié)構(gòu)的存儲(chǔ)設(shè)計(jì),并創(chuàng)建。這里面采用了數(shù)據(jù)庫(kù)提供的庫(kù)文件。使用其中的Java接口通過(guò)servlet轉(zhuǎn)接存儲(chǔ)到分布式數(shù)據(jù)庫(kù)當(dāng)中。系統(tǒng)運(yùn)行測(cè)試狀況如表2日志數(shù)據(jù)分析性能所示。
表1 數(shù)據(jù)采集性能
表2 日志數(shù)據(jù)分析性能
日志的分析過(guò)程需要整合相應(yīng)的計(jì)算機(jī)資源,對(duì)數(shù)據(jù)進(jìn)行分割并處理最終聚合到一個(gè)處理結(jié)果當(dāng)中。最后的結(jié)果就是能夠展示相應(yīng)的系統(tǒng)狀態(tài)變化提醒用戶人員及時(shí)的維護(hù)和響應(yīng)。
針對(duì)物聯(lián)網(wǎng)大量采集數(shù)據(jù)的處理問(wèn)題,本文采用了大數(shù)據(jù)處理技術(shù)來(lái)和物聯(lián)網(wǎng)進(jìn)行整合。提供了一個(gè)高效的解決方案。該方案能夠很好地利用軟硬件資源實(shí)現(xiàn)成本較低而運(yùn)行非常的高效。這為物聯(lián)網(wǎng)的快速普及和應(yīng)用提供了便利。