劉冠群,馬 萍, 張汝波
(大連民族大學(xué) a.機電工程學(xué)院;b.智能感知與先進控制國家民委重點實驗室,遼寧 大連 116605)
工業(yè)現(xiàn)場傳感器實時數(shù)據(jù)存儲系統(tǒng)設(shè)計與實現(xiàn)
劉冠群a,b,馬 萍a, 張汝波a,b
(大連民族大學(xué) a.機電工程學(xué)院;b.智能感知與先進控制國家民委重點實驗室,遼寧 大連 116605)
針對工業(yè)現(xiàn)場中大量的傳感器以連續(xù)高并發(fā)的方式所產(chǎn)生的海量實時數(shù)據(jù)難以高效可靠存儲的問題,設(shè)計了基于 Hadoop 與 HBase 的工業(yè)現(xiàn)場傳感器實時數(shù)據(jù)存儲系統(tǒng),并利用5臺服務(wù)器和1個磁盤陣列構(gòu)建了數(shù)據(jù)存儲系統(tǒng)原型,最后通過仿真程序模擬工業(yè)現(xiàn)場傳感器實時數(shù)據(jù)的高并發(fā)特性,對所提出的數(shù)據(jù)存儲系統(tǒng)性能進行了驗證。實驗表明,所提出的工業(yè)現(xiàn)場傳感器實時數(shù)據(jù)存儲系統(tǒng)數(shù)據(jù)存儲可靠、運行穩(wěn)定、并發(fā)處理能力強。
數(shù)據(jù)存儲;傳感器;工業(yè)現(xiàn)場;HBase;Hadoop
Abstract:For the problem to store mass real-time data efficiently and reliably which are produced continuously and concurrently by a large number of sensors in the industrial field, a data storage system based on Hadoop and HBase for industrial field sensor real-time data is designed. The data storage system prototype is constructed with 5 servers and 1 disk array. Finally, the performance of the proposed data storage system is verified with the simulation program which simulates the high concurrency of the real-time data of industrial field sensors. The experimental results show that the real-time data storage system of the industrial field sensor in this paper is reliable in data storage, stable in operation and has a high concurrent processing capability.
Keywords:data storage; sensor; industrial field; HBase; Hadoop
隨著“中國制造2025”的提出,智慧工廠概念的加強和物聯(lián)網(wǎng)技術(shù)的使用,使得工業(yè)現(xiàn)場中傳感器的種類和數(shù)量日益增多。數(shù)據(jù)對于智能化生產(chǎn)的作用愈顯重要,數(shù)量龐大的傳感器每時每刻都在產(chǎn)生大量的數(shù)據(jù)。傳統(tǒng)的實時數(shù)據(jù)庫在處理高時效數(shù)據(jù)方面存在較強的優(yōu)勢,但是隨著大數(shù)據(jù)技術(shù)的應(yīng)用,暴露出實時數(shù)據(jù)庫在處理大規(guī)模傳感數(shù)據(jù)方面存在存儲量低、不便于擴展的缺點[1],人們開始尋找新的技術(shù)途徑以解決工業(yè)現(xiàn)場傳感器實時數(shù)據(jù)存儲所遇到的問題。
HBase在處理海量數(shù)據(jù)方面具有很多優(yōu)點,如高讀寫性能、高擴展性、高可靠性和高存儲性等[2], 是架設(shè)在分布式文件系統(tǒng)HDFS(Hadoop Distributed File System)之上的開源數(shù)據(jù)庫,而Hadoop具有底層細(xì)節(jié)透明、易于擴容和硬件要求低等特點,因此得到了廣泛的應(yīng)用[3]。人們在利用HBase處理工業(yè)傳感器數(shù)據(jù)方面做了較多的研究。文獻[4]為解決大規(guī)模無線傳感器網(wǎng)絡(luò)數(shù)據(jù)的存儲問題,使用HBase實現(xiàn)了一個近實時的存儲系統(tǒng)。文獻[5]針對交通流數(shù)據(jù)具有多來源、高速率和體量大的特點,設(shè)計并實現(xiàn)了一套基于HBase的交通流數(shù)據(jù)實時存儲系統(tǒng)。文獻[4-5]表明HBase可對實時數(shù)據(jù)進行有效存儲。文獻[1]將實時數(shù)據(jù)庫與HBase相結(jié)合,設(shè)計并實現(xiàn)了基于融合數(shù)據(jù)庫的海量傳感器信息存儲框架,實驗結(jié)果表明HBase具有較高的讀寫性能以及良好的擴燕尾服性。文獻[6]設(shè)計了基于Hadoop的海量海洋科學(xué)數(shù)據(jù)存儲平臺解決方案,并驗證了系統(tǒng)的可靠性、易維護性和良好的可擴展性。本文針對具有高并發(fā)特性的生產(chǎn)現(xiàn)場傳感器數(shù)據(jù)高效可靠性存儲的問題,提出以Hadoop和 HBase為基礎(chǔ)搭建分布式實時數(shù)據(jù)存儲系統(tǒng)的方法,其中,利用Hadoop實現(xiàn)文件的分布式存儲,利用HBase作為數(shù)據(jù)庫實現(xiàn)對數(shù)據(jù)的存儲以及查詢操作。
工業(yè)現(xiàn)場中各種傳感器產(chǎn)生的大量實時數(shù)據(jù)對企業(yè)具有重要的作用:一方面,可利用實時數(shù)據(jù)處理技術(shù)對這些數(shù)據(jù)進行處理,以實現(xiàn)對生產(chǎn)過程的實時監(jiān)控和預(yù)警等;另一方面,可對歷史數(shù)據(jù)進行分析,為企業(yè)決策提供支持。
隨著工業(yè)現(xiàn)場所使用的傳感器種類和數(shù)量的增多,可靠存儲和有效使用這些數(shù)據(jù)是智能化生產(chǎn)所關(guān)注的一個重要問題。這類數(shù)據(jù)的主要特點是稀疏的、非結(jié)構(gòu)化的和高并發(fā)的,而且隨時間的延長,數(shù)據(jù)量巨大。針對該類數(shù)據(jù)的可靠、高效存儲問題,并兼顧對大規(guī)模歷史數(shù)據(jù)分析的支持,本文使用的分布式數(shù)據(jù)存儲系統(tǒng)如圖1,用于工業(yè)現(xiàn)場各類傳感器實時數(shù)據(jù)的存儲。利用HBase與Hadoop來實現(xiàn)大數(shù)據(jù)的存儲具有一個優(yōu)勢,即可直接利用Hadoop的MapReduce計算框架對所搜集的歷史數(shù)據(jù)進行高效地挖掘分析。

圖1 分布式存儲系統(tǒng)結(jié)構(gòu)圖
圖1中的支撐層由HDFS和ZooKeeper兩部分組成。
Hadoop是現(xiàn)今大數(shù)據(jù)項目的事實標(biāo)準(zhǔn),它通過其核心部件HDFS來實現(xiàn)分布式存儲任務(wù)。HDFS具有高容錯性,可以用低價的硬件設(shè)備存儲海量數(shù)量集,并且具有很高的數(shù)據(jù)讀寫吞吐率[6]。HDFS的體系結(jié)構(gòu)如圖2,采用主/從(Mater/Slave)式體系結(jié)構(gòu),包括一個NameNode服務(wù)器和多個DataNode服務(wù)器。

圖2 HDFS體系結(jié)構(gòu)
NameNode是主控服務(wù)器,管理文件系統(tǒng)元數(shù)據(jù),執(zhí)行文件系統(tǒng)的命名空間操作,決定數(shù)據(jù)塊到DataNode的映射(Block Map)。DataNode負(fù)責(zé)實際數(shù)據(jù)的存儲,依據(jù)NameNode的命令,處理客戶端(Client)的讀寫請求,執(zhí)行數(shù)據(jù)塊的存儲工作。NameNode使用事務(wù)日志來記錄元數(shù)據(jù)的變化,使用映像文件存儲文件系統(tǒng)的命名空間。但隨著時間的推移,事務(wù)日志和映象文件變得龐大。為此,Secondary NameNode用來輔助NameNode處理事務(wù)日志和映象文件,使得事務(wù)日志大小始終保持在限值之下。
但基于下面的原因,使得HDFS不適合直接存儲傳感器數(shù)據(jù):(1)HDFS數(shù)據(jù)訪問延遲較大,難以應(yīng)對高并發(fā)的傳感器數(shù)據(jù);(2)當(dāng)存儲大量小文件(<64 MB)時,會因為名字節(jié)點占用太多內(nèi)存而影響性能,但直接存儲傳感器所需的文件數(shù)量卻是巨大的。利用HBase與傳感器數(shù)據(jù)進行直接交互,并通過HBase 的數(shù)據(jù)持久化機制將傳感器數(shù)據(jù)保存文件可靠地存儲到HDFS,則可彌補HDFS的劣勢。
ZooKeeper是HBase關(guān)鍵的協(xié)同服務(wù)組件,它利用HBase集群中各節(jié)點服務(wù)器狀態(tài)信息,對HBase集群的各節(jié)點進行管理。當(dāng)集群中有新的服務(wù)器節(jié)點出現(xiàn)時,ZooKeeper可以幫助HBase發(fā)現(xiàn)新的可用節(jié)點。當(dāng)HBase中某服務(wù)器崩潰時,ZooKeeper可幫助系統(tǒng)恢復(fù)到服務(wù)器崩潰前的狀態(tài)。
對于稀疏的、非結(jié)構(gòu)化數(shù)據(jù)的存儲,關(guān)系型數(shù)據(jù)庫受其存儲結(jié)構(gòu)的限制,性能受限。而HBase是面向列的非關(guān)系型數(shù)據(jù)庫,在存儲異構(gòu)類型數(shù)據(jù)方面具有較大的優(yōu)勢。HBase作為一款免費開源的分布式數(shù)據(jù)庫,具有很強的一致性和近似最優(yōu)的讀寫性能,可以充分利用磁盤空間。HBase與Hadoop進行集成,可實現(xiàn)對傳感器數(shù)據(jù)的可靠高效存儲。
HBase也采用主/從式體系結(jié)構(gòu)。HBase集群主要包括一個Master主節(jié)點和多個RegionServer工作節(jié)點。Master與ZooKeeper的緊密合作,負(fù)責(zé)協(xié)調(diào)管理RegionServer工作節(jié)點,對其進行區(qū)域分配、負(fù)載均衡和運行情況監(jiān)控等。RegionServer通過Master所提供的信息處理用戶的讀寫操作,并向Master反饋自身運行狀態(tài)等。用戶可以利用HBase所提供的API進行數(shù)據(jù)存儲和獲取集群狀態(tài)信息等。
應(yīng)用層是用戶根據(jù)項目要求,通過調(diào)用HDFS以及HBase所提供的API所實現(xiàn)的各類應(yīng)用程序。HDFS 和HBase提供了多種類型語言接口,其中Java API是最常規(guī)高效的方式。
本文基于實驗室現(xiàn)有設(shè)備搭建了一個系統(tǒng)原型驗證存儲系統(tǒng)的性能。系統(tǒng)原型硬件配置環(huán)境見表1,共有 5臺服務(wù)器(分為1個主節(jié)點和4個工作節(jié)點)與1個磁盤陣列,根據(jù)HDFS與HBase的結(jié)構(gòu)特點對該設(shè)備進行了角色分配。將其中具有較大內(nèi)存的服務(wù)器作為主節(jié)點,在主節(jié)點服務(wù)器上部署 HDFS NameNode、HBase Master和ZooKeeper, 主節(jié)點完成相當(dāng)于管理層的工作。4臺工作節(jié)點服務(wù)器配置相同,并行部署HDFS DataNode和HBase RegionServer,完成傳感器數(shù)據(jù)的分布式存儲工作。工作節(jié)點服務(wù)器需要大量的存儲空間用于數(shù)據(jù)存儲,為擴展其存儲空間,將磁盤陣列的12塊磁盤(每塊磁盤的容量為2 TB)平均分配給4臺工作節(jié)點服務(wù)器,每個工作節(jié)點具有6 TB的存儲空間。

表1 硬件配置環(huán)境
該系統(tǒng)原型的整體系統(tǒng)架構(gòu)如圖3,圖中的設(shè)備與表1的設(shè)備一致。整個集群處于一個局域網(wǎng)中,設(shè)備之間通過以太網(wǎng)線連接通信,磁盤陣列通過iSCSI協(xié)議掛載到各工作節(jié)點服務(wù)器。客戶端通過互聯(lián)網(wǎng)與該集群進行通信。

圖3 系統(tǒng)整體框架圖
為保障集群中各軟件系統(tǒng)之間交互的一致性,本分布式存儲系統(tǒng)所用Hadoop組件均為CDH5.7版本。服務(wù)器操作系統(tǒng)為CentOS 7。JDK的版本由Hadoop版本決定。本系統(tǒng)所用Hadoop組件版本以及服務(wù)器操作系統(tǒng)版本見表2。

表2 系統(tǒng)軟件版本列表
為驗證所構(gòu)建的分布式存儲系統(tǒng)在存儲可靠性、運行穩(wěn)定性、存儲均衡性和并發(fā)處理能力等方面的表現(xiàn),本文不同實驗場景的設(shè)定見表3。在每個場景中,令每個傳感器節(jié)點每秒產(chǎn)生100個數(shù)據(jù),以體現(xiàn)傳感器所產(chǎn)生數(shù)據(jù)的高頻特性。從場景一到場景三,通過傳感器數(shù)量的逐步增多來增加數(shù)據(jù)的并發(fā)性,驗證存儲系統(tǒng)的并發(fā)處理能力。每個場景分為三個實驗階段,每個階段的實驗時長不斷加長,分別為24 h、48 h和168 h,以驗證存儲系統(tǒng)長時間運行的穩(wěn)定性。在每次寫入傳感器數(shù)據(jù)后,將寫入數(shù)據(jù)再次從存儲系統(tǒng)中取回,以驗證存儲系統(tǒng)數(shù)據(jù)存儲的可靠性,同時驗證系統(tǒng)的并發(fā)處理能力。最后通過分析存儲系統(tǒng)中每個數(shù)據(jù)節(jié)點的存儲量,以驗證分布式存儲系統(tǒng)在每個數(shù)據(jù)節(jié)點上進行數(shù)據(jù)存儲的均衡性。

表3 實驗仿真多場景列表
本文構(gòu)建的仿真測試系統(tǒng)如圖4,仿真測試程序由Java語言編寫,主要功能是模擬傳感器數(shù)據(jù)的生成、實現(xiàn)數(shù)據(jù)庫的訪問等。仿真測試程序根據(jù)實驗場景的設(shè)定,為每個傳感器創(chuàng)建一個Java線程進行模擬。傳感器線程被創(chuàng)建后,通過調(diào)用HBase相關(guān)Java API為該傳感器創(chuàng)建一張數(shù)據(jù)存儲表,傳感器所產(chǎn)生的數(shù)據(jù)信息將存儲在此表中。每個傳感器線程通過設(shè)置定時器,每秒產(chǎn)生100個單精度浮點數(shù)據(jù),并為每個數(shù)據(jù)加上產(chǎn)生時間等其他數(shù)據(jù)描述信息,構(gòu)成一個數(shù)據(jù)記錄,并調(diào)用 HBase API將數(shù)據(jù)記錄寫入對應(yīng)的數(shù)據(jù)表中,然后再將寫入的數(shù)據(jù)從數(shù)據(jù)庫中取出,以驗證寫入數(shù)據(jù)的完整性。仿真程序以一定的概率隨機結(jié)束某個傳感器線程,并重新創(chuàng)建一個傳感器線程,以模擬工業(yè)現(xiàn)場中傳感器數(shù)據(jù)的突發(fā)性和隨機性。

圖4 仿真測試系統(tǒng)結(jié)構(gòu)圖(線程2)
經(jīng)過測試,與每個實驗場景中不同實驗時長對應(yīng)的數(shù)據(jù)節(jié)點存活量見表4。在場景一的24h實驗設(shè)置中,HBase數(shù)據(jù)節(jié)點存活數(shù)量為3個,說明有一個數(shù)據(jù)節(jié)點已經(jīng)掉線,經(jīng)過查看日志,分析掉線原因為該節(jié)點所在服務(wù)器的系統(tǒng)時間與整個集群的時間相差較大,導(dǎo)致該節(jié)點與集群溝通不順暢。對該節(jié)點所在服務(wù)器的時間進行調(diào)整后,隨后的實驗中沒有發(fā)生類似情況,HBase節(jié)點和HDFS節(jié)點都完全存活,說明HBase集群對時間一致性問題較為敏感。在大量傳感器實時并發(fā)產(chǎn)生數(shù)據(jù)的條件下,存儲系統(tǒng)能在較長的實驗周期中正常運行,表示分布式集群的穩(wěn)定性較強。

表4 多場景仿真測試存儲數(shù)據(jù)節(jié)點統(tǒng)計
實驗中,HDFS的replication因子設(shè)置為3,NameNode節(jié)點根據(jù)相關(guān)信息選取數(shù)據(jù)節(jié)點進行數(shù)據(jù)存儲。每個數(shù)據(jù)節(jié)點存儲數(shù)據(jù)量見表5,從表中的數(shù)據(jù)可知,每個數(shù)據(jù)節(jié)點的數(shù)據(jù)存儲量大致是均衡的。如果數(shù)據(jù)存儲不夠均衡,可運行HDFS的balancer程序來進行均衡。

表5 HDFS 工作節(jié)點存儲量統(tǒng)計 G
實驗表明,本文所構(gòu)建的分布式存儲系數(shù)能夠?qū)I(yè)現(xiàn)場傳感器產(chǎn)生的高并發(fā)性實時數(shù)據(jù)進行有效、可靠存儲。
生產(chǎn)智能化程度的提高和大數(shù)據(jù)技術(shù)的應(yīng)用,使得工業(yè)現(xiàn)場各種傳感器數(shù)據(jù)對于企業(yè)的作用越顯重要。本文針對傳統(tǒng)工業(yè)數(shù)據(jù)庫在大規(guī)模傳感器數(shù)據(jù)處理方面具有存儲量低、不便于擴展的缺點,研究了工業(yè)現(xiàn)場大量傳感器所產(chǎn)生的連續(xù)并發(fā)海量實時數(shù)據(jù)的高效可靠存儲方法,基于Hadoop與HBase構(gòu)建了傳感器實時數(shù)據(jù)存儲系統(tǒng),并通過仿真實驗對所構(gòu)建的存儲系統(tǒng)原型進行了性能驗證。實驗表明,本文所設(shè)計的存儲系統(tǒng)數(shù)據(jù)存儲可靠、運行穩(wěn)定、并行處理能力強、數(shù)據(jù)存儲均衡,對服務(wù)器硬件配置要求不高,對于實際生產(chǎn)具有較大的應(yīng)用價值。
[1] 類興邦, 房俊. 基于融合數(shù)據(jù)庫的海量傳感器信息存儲架構(gòu)[J]. 計算機科學(xué), 2016, 43(6):68-71.
[2] GEORGE L. HBase: The Definitive Guide[M].O’reilly Media, Inc. 2010.
[3] WHITE T. Hadoop: The Definitive Guide[M].O’reilly Media, Inc. 2012.
[4] 陳慶奎, 周利珍. 基于HBase的大規(guī)模無線傳感器網(wǎng)絡(luò)數(shù)據(jù)存儲系統(tǒng)[J]. 計算機應(yīng)用, 2012, 32(7):1920-1923.
[5] 陸婷, 房俊, 喬彥克. 基于HBase的交通流數(shù)據(jù)實時存儲系統(tǒng)[J]. 計算機應(yīng)用,2015, 35(1) : 103 - 107.
[6] 崔杰,李陶深,蘭紅星.基于Hadoop的海量數(shù)據(jù)存儲平臺設(shè)計與開發(fā)[J]. 計算機研究與發(fā)展, 2012, 49(S1): 12-18.
(責(zé)任編輯 趙環(huán)宇)
DesignandImplementationoftheDataStorageSystemforIndustrialFieldSensorReal-timeData
LIUGuan-quna,b,MAPinga,ZHANGRu-boa,b
(a. School of Electromechanical Engineering, b. Key Laboratory of Intelligent Perception and Advanced Control of State Ethnic Affairs Commission, Dalian Minzu University, Dalian Liaoning 116605, China)
張汝波 (1963-),男,吉林省吉林人,教授,博士,主要從事傳感器與機器人技術(shù)研究, Email:zhangrubo@dlnu.edu.cn。
TP274
A
2017-05-15;
2017-06-15
遼寧省教育廳科學(xué)研究一般項目 (L2014542);遼寧省博士科研啟動基金 (201501164);中央高校基本科研業(yè)務(wù)費專項資金資助項目 (DC201502010404)。
劉冠群 (1980-),男,湖南衡東人,講師,博士,主要從事傳感器技術(shù)、聲源定位和機器人技術(shù)研究。
2096-1383(2017)05-0456-05