許 鑫,時(shí) 雷,何 龍,張 浩※,馬新明,3
?
基于NoSQL數(shù)據(jù)庫(kù)的農(nóng)田物聯(lián)網(wǎng)云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
許 鑫1,2,時(shí) 雷1,何 龍1,張 浩1,2※,馬新明1,2,3
(1. 河南農(nóng)業(yè)大學(xué)信息與管理科學(xué)學(xué)院,鄭州 450002;2. 河南糧食作物協(xié)同創(chuàng)新中心,鄭州 450002; 3.農(nóng)業(yè)部黃淮海農(nóng)業(yè)信息技術(shù)科學(xué)觀測(cè)實(shí)驗(yàn)站,鄭州 450002)
為了解決農(nóng)田物聯(lián)網(wǎng)大量圖像、視頻和傳感器等結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)實(shí)時(shí)處理與寫(xiě)入問(wèn)題,該文基于分布式存儲(chǔ)與NoSQL(Not Only SQL)技術(shù),結(jié)合農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)特征,利用HDFS(Hadoop Distributed File System)和HBase(Hadoop Database)存儲(chǔ)非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù),基于Redis緩存服務(wù),設(shè)計(jì)了三層物聯(lián)網(wǎng)數(shù)據(jù)云存儲(chǔ)框架,實(shí)現(xiàn)了海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)中的業(yè)務(wù)處理、事務(wù)處理、圖片打包與索引、負(fù)載均衡等關(guān)鍵技術(shù)。面對(duì)復(fù)雜業(yè)務(wù)下的事務(wù)數(shù)據(jù)一致性,該文采用基于HLock的樂(lè)觀鎖機(jī)制,實(shí)現(xiàn)了HBase對(duì)強(qiáng)事務(wù)性的支持,經(jīng)過(guò)與傳統(tǒng)MySQL集群事務(wù)對(duì)比測(cè)試,當(dāng)數(shù)據(jù)量級(jí)在500萬(wàn)時(shí),數(shù)據(jù)讀取效率提升達(dá)35.75%。為了提高農(nóng)田物聯(lián)網(wǎng)中大量的小圖片和小文件處理效率,基于圖片打包合并策略,利用SequenceFile技術(shù)實(shí)現(xiàn)物聯(lián)圖片的快速索引讀寫(xiě)技術(shù),與原生HDFS存儲(chǔ)效率相比,讀寫(xiě)效率提升30%以上。該研究可以為海量農(nóng)業(yè)物聯(lián)網(wǎng)數(shù)據(jù)的存儲(chǔ)和管理提供技術(shù)參考和理論支撐。
農(nóng)田;數(shù)據(jù)存儲(chǔ)系統(tǒng);管理;物聯(lián)網(wǎng);NoSQL;Hadoop;HBase;云存儲(chǔ)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,物聯(lián)網(wǎng)在農(nóng)田數(shù)據(jù)采集、環(huán)境監(jiān)測(cè)、智能灌溉、災(zāi)害和苗情診斷、精細(xì)作業(yè)等生產(chǎn)過(guò)程中得到了廣泛應(yīng)用[1-7]。學(xué)界對(duì)農(nóng)田物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)、組網(wǎng)、數(shù)據(jù)傳輸、實(shí)現(xiàn)等方面也有了長(zhǎng)足的發(fā)展[8-14],同時(shí)農(nóng)田物聯(lián)網(wǎng)中的光、溫、土壤墑情、pH值等傳感器和視頻監(jiān)控設(shè)備產(chǎn)生了海量的數(shù)據(jù),如何高效存儲(chǔ)和管理海量數(shù)據(jù)是當(dāng)前農(nóng)業(yè)物聯(lián)網(wǎng)研究的核心[15-21]。
農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)融合了作物生長(zhǎng)的地域性和季節(jié)性等特征,導(dǎo)致農(nóng)田物聯(lián)網(wǎng)在應(yīng)用層面上需考慮地域、天氣、續(xù)航、傳輸接口與設(shè)備等因素的影響。尤其是在農(nóng)田物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)上,需要兼顧作物產(chǎn)前、產(chǎn)中和產(chǎn)后的各個(gè)環(huán)節(jié)。其系統(tǒng)的動(dòng)態(tài)擴(kuò)展性要求較高,對(duì)數(shù)據(jù)存儲(chǔ)模型的通用性要求也較高。目前,農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)的海量、異構(gòu)及非結(jié)構(gòu)趨勢(shì)明顯[22]。
在存儲(chǔ)農(nóng)田物聯(lián)網(wǎng)中的海量數(shù)據(jù)方面,縱向增加數(shù)據(jù)節(jié)點(diǎn)擴(kuò)容能力有限,且在海量數(shù)據(jù)處理會(huì)造成性能瓶頸,而采用分布式云存儲(chǔ)方案,通過(guò)橫向擴(kuò)展動(dòng)態(tài)接入新的存儲(chǔ)節(jié)點(diǎn),是一種理想的解決方案。以Hadoop生態(tài)圈為代表的開(kāi)源分布式存儲(chǔ)與計(jì)算平臺(tái)逐漸被各行業(yè)認(rèn)可和應(yīng)用,其具有海量存儲(chǔ)、高容錯(cuò)性、高性能、高擴(kuò)展性等特點(diǎn),可滿(mǎn)足當(dāng)前農(nóng)田物聯(lián)網(wǎng)海量數(shù)據(jù)存儲(chǔ)與管理的需求。
農(nóng)田物聯(lián)網(wǎng)中產(chǎn)生的大量小文件,如圖像、傳感器文本和視頻等非結(jié)構(gòu)化數(shù)據(jù)的實(shí)時(shí)處理與寫(xiě)入,是傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)難以解決的問(wèn)題。以HBase為代表的NoSQL(Not Only SQL)數(shù)據(jù)庫(kù)產(chǎn)品的分布式、面向列、可伸縮的特點(diǎn),對(duì)圖片、視頻等非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)具有天然的優(yōu)勢(shì),同時(shí),農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)天然的異構(gòu)性,關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系模型難以滿(mǎn)足新傳感器的接入,不利于系統(tǒng)擴(kuò)展,而NoSQL技術(shù)支持動(dòng)態(tài)的數(shù)據(jù)模型,可以應(yīng)對(duì)農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)采集設(shè)備種類(lèi)繁多、類(lèi)型繁雜以及后期擴(kuò)展問(wèn)題[23]。
本文基于Hadoop生態(tài)圈,利用分布式云存儲(chǔ)及NoSQL技術(shù),構(gòu)建海量存儲(chǔ)、高性能、安全可靠、易擴(kuò)展的農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)云存儲(chǔ)系統(tǒng),并深入剖析了農(nóng)田物聯(lián)網(wǎng)的存儲(chǔ)事務(wù)一致性、小文件處理等問(wèn)題,以期為海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)提供解決方案。
從農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)特征出發(fā),結(jié)合Hadoop平臺(tái),考慮系統(tǒng)的安全可靠、高效讀寫(xiě)、數(shù)據(jù)轉(zhuǎn)換、事務(wù)處理、小文件處理、緩存策略、負(fù)載均衡、成本及擴(kuò)容等關(guān)鍵因素[24]。自下而上將系統(tǒng)分為3層:存儲(chǔ)層、服務(wù)層及應(yīng)用層。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 農(nóng)田物聯(lián)網(wǎng)云存儲(chǔ)系統(tǒng)框架
存儲(chǔ)層是農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)模型的最底層,其主要作用是用來(lái)持久化存儲(chǔ)數(shù)據(jù)。該層包括分布式文件系統(tǒng)HDFS、面向列的HBase數(shù)據(jù)庫(kù)以及Redis緩存模塊。HDFS用來(lái)存儲(chǔ)農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中圖片、視頻等非結(jié)構(gòu)化數(shù)據(jù);HBase數(shù)據(jù)庫(kù)用來(lái)存儲(chǔ)農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中氣象、墑情等結(jié)構(gòu)化數(shù)據(jù);Redis數(shù)據(jù)庫(kù)用來(lái)作為底層存儲(chǔ)的緩存服務(wù)器[25]。
服務(wù)層位于存儲(chǔ)層和應(yīng)用層的中間,作用是為上層的業(yè)務(wù)處理和下層數(shù)據(jù)存儲(chǔ)訪(fǎng)問(wèn)提供服務(wù)。服務(wù)層包括事務(wù)處理模塊、數(shù)據(jù)轉(zhuǎn)換模塊、圖片合并與索引模塊。事務(wù)處理模塊用來(lái)優(yōu)化HBase數(shù)據(jù)庫(kù)對(duì)事務(wù)ACID(atomicity,consistency, isolation,durability)特性的支持;數(shù)據(jù)轉(zhuǎn)換模塊是對(duì)物聯(lián)網(wǎng)設(shè)備元數(shù)據(jù)信息的轉(zhuǎn)換,由于多源傳感器數(shù)據(jù)格式不一定一致,尤其是隨業(yè)務(wù)發(fā)展新增的傳感器,利用數(shù)據(jù)轉(zhuǎn)換模塊將傳感器的元數(shù)據(jù)信息轉(zhuǎn)換成存儲(chǔ)模型能夠接受的格式,可以有效提高系統(tǒng)的后期擴(kuò)展性能。圖片合并與索引模塊用來(lái)解決Hadoop在處理海量小文件時(shí)的不足,在設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模型時(shí)針對(duì)農(nóng)田物聯(lián)網(wǎng)采集的海量圖片進(jìn)行合并,并構(gòu)建合并后的索引方案,將圖片元數(shù)據(jù)信息寫(xiě)到HBase中[26],方便圖片的查詢(xún)。
應(yīng)用層主要面向農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中的各種業(yè)務(wù)處理并提供統(tǒng)一的數(shù)據(jù)訪(fǎng)問(wèn)接口。業(yè)務(wù)處理模塊對(duì)統(tǒng)一數(shù)據(jù)訪(fǎng)問(wèn)接口傳遞過(guò)來(lái)的指令信息進(jìn)行判斷并確定業(yè)務(wù)類(lèi)型。根據(jù)農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)特征將具體業(yè)務(wù)分為結(jié)構(gòu)化數(shù)據(jù)讀寫(xiě)、文本文件讀寫(xiě)、圖像讀寫(xiě)及視頻讀寫(xiě)4大類(lèi)。將應(yīng)用層單獨(dú)獨(dú)立于其他層之上,可以達(dá)到業(yè)務(wù)與服務(wù)解耦的目的。
負(fù)載均衡模塊部署在整個(gè)農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)模型中。負(fù)載均衡模塊在應(yīng)用層的作用是將前端用戶(hù)的高并發(fā)請(qǐng)求分載到多個(gè)服務(wù)器上;在服務(wù)層作用于MapReduce實(shí)現(xiàn)大文件分割與小文件合并等并行處理場(chǎng)景;在存儲(chǔ)層的作用是平衡農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)分配存儲(chǔ)節(jié)點(diǎn)問(wèn)題。設(shè)計(jì)負(fù)載均衡模塊可以保證服務(wù)器集群在處理極端問(wèn)題時(shí)穩(wěn)定高效的運(yùn)行[27]。
針對(duì)結(jié)構(gòu)化數(shù)據(jù)、文本、圖像及視頻4大類(lèi)數(shù)據(jù)的讀寫(xiě)業(yè)務(wù)需要不同的流程來(lái)處理。
1)數(shù)據(jù)寫(xiě)入業(yè)務(wù)處理
業(yè)務(wù)處理模塊需要對(duì)統(tǒng)一數(shù)據(jù)訪(fǎng)問(wèn)接口寫(xiě)入的數(shù)據(jù)進(jìn)行類(lèi)型判斷。農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中的數(shù)據(jù)類(lèi)型主要包括氣象和墑情等結(jié)構(gòu)化數(shù)據(jù)、圖片、視頻及文本文件4大類(lèi)。其中文本文件又包括Excel文件、XML文件與TXT文件等。數(shù)據(jù)寫(xiě)入業(yè)務(wù)處理流程如圖2所示。
當(dāng)寫(xiě)入數(shù)據(jù)類(lèi)型為圖片時(shí),采取圖片“合并”策略存儲(chǔ)。首先把文件寫(xiě)入圖片隊(duì)列,然后判斷圖片隊(duì)列累計(jì)文件大小是否夠一個(gè)“Block”的大小,如果不夠一個(gè)“Block”的大小,等待后續(xù)圖片寫(xiě)入;如果大于一個(gè)“Block”的大小,進(jìn)行圖片合并,建立索引信息并把圖片元數(shù)據(jù)信息寫(xiě)入HBase中,圖片數(shù)據(jù)寫(xiě)入HDFS和Redis緩存服務(wù)器中[28]。
當(dāng)寫(xiě)入數(shù)據(jù)類(lèi)型為視頻時(shí),判斷其大小是否超過(guò)一個(gè)“Block”的大小,如果小于一個(gè)“Block”的大小,直接按照一個(gè)“Block”來(lái)處理;如果大于一個(gè)“Block”的大小,采用Hadoop提供的“分塊”策略進(jìn)行處理,并將索引信息直接寫(xiě)入NameNode主節(jié)點(diǎn)中。視頻數(shù)據(jù)最終寫(xiě)入HDFS和Redis緩存服務(wù)器中。
當(dāng)寫(xiě)入數(shù)據(jù)類(lèi)型為文本文件時(shí),需要服務(wù)層數(shù)據(jù)轉(zhuǎn)換模塊中相應(yīng)的Parser解析進(jìn)行處理。
當(dāng)寫(xiě)入數(shù)據(jù)類(lèi)型為氣象、墑情等結(jié)構(gòu)化數(shù)據(jù)時(shí),通過(guò)結(jié)構(gòu)化數(shù)據(jù)訪(fǎng)問(wèn)接口(structured data access interface)直接將數(shù)據(jù)寫(xiě)入HBase數(shù)據(jù)庫(kù)及Redis緩存服務(wù)器中。
圖2 數(shù)據(jù)寫(xiě)入業(yè)務(wù)處理流程
2)數(shù)據(jù)讀取業(yè)務(wù)處理
業(yè)務(wù)處理模塊在處理數(shù)據(jù)讀取業(yè)務(wù)時(shí)流程優(yōu)先訪(fǎng)問(wèn)Redis緩存數(shù)據(jù),并進(jìn)行判斷是否需要需要訪(fǎng)問(wèn)HBase和HDFS數(shù)據(jù),如圖3所示。
圖3 數(shù)據(jù)讀取業(yè)務(wù)處理流程
從模型存儲(chǔ)層可以看出,農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)都是存儲(chǔ)在HDFS、HBase及Redis緩存服務(wù)器中,其中Redis緩存服務(wù)器讀取效率最高,所以?xún)?yōu)先訪(fǎng)問(wèn)Redis緩存數(shù)據(jù)庫(kù)中的數(shù)據(jù);若Redis數(shù)據(jù)庫(kù)中沒(méi)有數(shù)據(jù),再訪(fǎng)問(wèn)HBase數(shù)據(jù)庫(kù)中的數(shù)據(jù);若HBase中也沒(méi)有要讀取的數(shù)據(jù),則訪(fǎng)問(wèn)Hadoop底層HDFS中的數(shù)據(jù)。
由于HBase一般搭建在分布式集群環(huán)境下,其在跨行事務(wù)及長(zhǎng)事務(wù)處理的可靠性上受到了制約,只能提供基礎(chǔ)級(jí)別的弱事務(wù)性處理,無(wú)法對(duì)跨行事務(wù)及長(zhǎng)事務(wù)精準(zhǔn)有序地處理,很難保證像海量數(shù)據(jù)分析等復(fù)雜業(yè)務(wù)下的數(shù)據(jù)一致性。目前,解決NoSQL數(shù)據(jù)庫(kù)跨行事務(wù)及長(zhǎng)事務(wù)處理的方法主要有2種方案:一種是分布式有鎖方案,如Google公司為了解決BigTable海量數(shù)據(jù)的增量更新操作開(kāi)發(fā)的Percolator[29]框架;另一種是集中式無(wú)鎖方案,如為分布式key-value數(shù)據(jù)庫(kù)提供強(qiáng)事務(wù)性支持的Omid開(kāi)源框架[30]。
分布式有鎖方案通過(guò)侵入數(shù)據(jù)方式在表結(jié)構(gòu)中增加鎖協(xié)議算法,采用該方案可以保證事務(wù)執(zhí)行的強(qiáng)ACID特性,但很難避免因?yàn)槟硞€(gè)事務(wù)鎖阻塞影響其他事務(wù)的正常運(yùn)行,在性能及時(shí)效性上會(huì)受到影響。因此,在不改變HBase底層存儲(chǔ)的基礎(chǔ)上,采用犧牲部分性能保證整個(gè)存儲(chǔ)系統(tǒng)可靠性的分布式有鎖方案。分布式有鎖方案又分為悲觀鎖和樂(lè)觀鎖2種。
悲觀鎖是大部分關(guān)系型數(shù)據(jù)庫(kù)提供的鎖機(jī)制,實(shí)現(xiàn)了事務(wù)的完全串行化。但是由于悲觀鎖的弱并發(fā)性能,尤其是在高并發(fā)的情況下,悲觀鎖的額外開(kāi)銷(xiāo)是無(wú)法承受的。樂(lè)觀鎖在一定程度上解決了悲觀鎖的弊端,通過(guò)樂(lè)觀鎖機(jī)制可以有效降低長(zhǎng)事務(wù)中加鎖的額外開(kāi)銷(xiāo),可以有效提高系統(tǒng)的整體性能,增加系統(tǒng)的整體吞吐量。所以,在對(duì)性能及吞吐量要求較高 HBase數(shù)據(jù)庫(kù)事務(wù)處理中,樂(lè)觀鎖方案是較好的選擇。
本文通過(guò)樂(lè)觀鎖來(lái)保證HBase長(zhǎng)事務(wù)的ACID特性,需要在HBase表結(jié)構(gòu)中添加一個(gè)HLock列,HLock列是一種結(jié)構(gòu)體,其結(jié)構(gòu)設(shè)計(jì)如表1所示。
通過(guò)設(shè)計(jì)的HLock鎖結(jié)構(gòu)體,可以在不修改HBase底層存儲(chǔ)結(jié)構(gòu)的前提下通過(guò)事務(wù)處理模塊保證農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中對(duì)強(qiáng)事務(wù)性的要求,事務(wù)處理模塊包括讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)2個(gè)流程。
表1 基于樂(lè)觀鎖的HLock結(jié)構(gòu)體
讀數(shù)據(jù)流程如下:
1)先處理單元讀取事務(wù)中所需數(shù)據(jù)的HLock列,若其State狀態(tài)值為FREE,取得并返回?cái)?shù)據(jù)結(jié)果;
2)若HLock列的State狀態(tài)值不為FREE,查看鎖結(jié)構(gòu)體中ExpiryTime的值,若ExpiryTime值還未過(guò)期,則回滾本事務(wù);
3)若ExpiryTime值已經(jīng)過(guò)期,則回滾此HLock所屬的上一個(gè)版本事務(wù)數(shù)據(jù),清除過(guò)期事務(wù)所有HLock值,然后執(zhí)行當(dāng)前事務(wù)。
寫(xiě)數(shù)據(jù)流程如下:
1)先處理單元讀取事務(wù)中所需數(shù)據(jù)的HLock列,若其State狀態(tài)值為FREE,則跳轉(zhuǎn)到4中;
2)若HLock列的State狀態(tài)值不為FREE,查看鎖結(jié)構(gòu)體中ExpiryTime的值,若ExpiryTime值還未過(guò)期,則回滾本事務(wù);
3)若ExpiryTime值已經(jīng)過(guò)期,則回滾此HLock所屬的上一個(gè)版本事務(wù)數(shù)據(jù),清除過(guò)期事務(wù)所有HLock值,然后執(zhí)行當(dāng)前事務(wù);
4)在ExpiryTime值未過(guò)期的情況下,把寫(xiě)入的數(shù)據(jù)先存入緩存模塊中,等待寫(xiě)入數(shù)據(jù)庫(kù);
5)在事務(wù)提交階段,若操作數(shù)據(jù)的HLock鎖沒(méi)有被改變,則把緩存中的待寫(xiě)入數(shù)據(jù)存儲(chǔ)到HBase數(shù)據(jù)庫(kù)中。
事務(wù)處理模塊的完整流程如圖4所示。
整個(gè)事務(wù)提交過(guò)程分2個(gè)階段:Prewrite階段與ChangeState階段。事務(wù)提交詳細(xì)流程如下:
1)在Prewrite階段,事務(wù)處理模塊隨機(jī)選擇本事務(wù)中的一行數(shù)據(jù),將其設(shè)置為主鎖,其余行設(shè)置為副鎖;
2)事務(wù)處理模塊生成PrewriteTimestamp及CurrentTimestamp 2個(gè)時(shí)間戳;
3)事務(wù)處理模塊將所有PUT操作的行數(shù)據(jù)從緩存中寫(xiě)入HBase,更新其HLock的狀態(tài)State為PREWRITTERN;
4)事務(wù)處理模塊將所有REMOVE操作的行數(shù)據(jù)HLock的狀態(tài)State為PREWRITTERN,此時(shí)不做DELETE操作;
5)在ChangeState階段,事務(wù)處理模塊先將主鎖所在行鎖狀態(tài)State改為COMMITTED狀態(tài);
6)事務(wù)處理模塊遍歷本事務(wù)涉及的所有行,如果Operation類(lèi)型為REMOVE,進(jìn)行DELETE操作,刪除REMOVE標(biāo)志行所有版本的數(shù)據(jù),不可恢復(fù),因此將REMOVE操作放在COMMITTED之后;
7)將所有非主鎖所在行狀態(tài)State改為FREE;
8)改變主鎖State狀態(tài)為FREE;
9)完成事務(wù)。
圖4 事務(wù)處理流程
在宕機(jī)處理上,通過(guò)HLock鎖的設(shè)計(jì),可以保證HBase在長(zhǎng)事務(wù)讀寫(xiě)過(guò)程中的事務(wù)性,為了降低線(xiàn)程阻塞帶來(lái)的額外開(kāi)銷(xiāo),事務(wù)處理模塊并不需要定時(shí)主動(dòng)清理壞死的HLock鎖,而是將該任務(wù)交給新事務(wù)去處理。通過(guò)可配置ExpiryTime屬性可以獲取舊事務(wù)是否為線(xiàn)程阻塞事務(wù)。如果ExpiryTime超時(shí),新事務(wù)會(huì)首先檢查超時(shí)事務(wù)的主鎖,若主鎖狀態(tài)為COMMITTED,則說(shuō)明超時(shí)事務(wù)已經(jīng)提交,事務(wù)處理模塊可以根據(jù)超時(shí)事務(wù)HLock列的副鎖信息完成整個(gè)事務(wù)的提交過(guò)程;若主鎖State標(biāo)志為其他狀態(tài),則事務(wù)處理模塊根據(jù)主鎖信息完成超時(shí)事務(wù)的回滾。
在集群時(shí)間同步上,由于所有的TimeStamp都是由系統(tǒng)機(jī)器的本地時(shí)間生成,在一個(gè)龐大的集群系統(tǒng)中,很難保證所有機(jī)器節(jié)點(diǎn)時(shí)間的一致,這就有可能因?yàn)闀r(shí)間混亂造成事務(wù)的錯(cuò)誤。針對(duì)事務(wù)對(duì)時(shí)間的高準(zhǔn)確性與高統(tǒng)一性要求,在本文設(shè)計(jì)方案中,采用在Hadoop集群中搭建NTP服務(wù)器[31]的方式為集群提高全局唯一的時(shí)間戳服務(wù),以保證各個(gè)機(jī)器節(jié)點(diǎn)的時(shí)間一致性。
由于農(nóng)田物聯(lián)網(wǎng)圖片中大多是比較小的文件,針對(duì)海量小文件圖片合并算法有4種處理方法,分別是TextInputFormat、CombineFileInputFormat、SequenceFile和Harballing[32]。由于這4種處理方法的應(yīng)用場(chǎng)景不同,考慮到需要重新設(shè)計(jì)海量圖片的索引信息,選擇了更為合適的SequenceFile技術(shù)。SequenceFile是序列化后的二進(jìn)制文件,使用該技術(shù)的優(yōu)點(diǎn)是它記錄的是
由于SequenceFile中使用FileName作為key,F(xiàn)ile contents作為value,每一個(gè)文件都可以通過(guò)FileName映射到SequenceFile中,所以針對(duì)圖片的FileName進(jìn)行編碼設(shè)計(jì)。將FileName分為3個(gè)部分:BlockID、FileID與offset。
圖5 圖片合并流程
BlockID代表合并后的SequenceFile所在的“Block”,也代表著DataNode上的一個(gè)數(shù)據(jù)塊,NameNode可以根據(jù)BlockID信息確定DataNode的地址,一個(gè)“Block”中可能包含有多個(gè)SequenceFile,每一個(gè)SequenceFile又包含這多張圖片。所以采用FileID來(lái)表示一個(gè)“Block”中的哪一個(gè)具體的SequenceFile,使用offset來(lái)表示圖片在一個(gè)SequenceFile中的偏移量。
當(dāng)客戶(hù)端通過(guò)圖片文件名向服務(wù)端發(fā)起讀取請(qǐng)求時(shí),首先通過(guò)前端處理解析圖片文件名,傳給服務(wù)端BlockID、FileID與offset的值;Master主機(jī)可以根據(jù)BlockID確定到DataNode主機(jī)中的某個(gè)“Block”文件并把DataNode地址發(fā)送給客戶(hù)端;根據(jù)FileID可以確定該“Block”文件中的某個(gè)SequenceFile;根據(jù)offset偏移量的值可以確定所要讀取圖片在該SequenceFile中的位置;最后客戶(hù)端通過(guò)前端解析內(nèi)容與DataNode地址完成圖片的讀取。
這樣設(shè)計(jì)可以有效減少HBase數(shù)據(jù)庫(kù)中圖片元數(shù)據(jù)的信息,將圖片存儲(chǔ)信息以編碼的方式保存到文件名中,并通過(guò)前端文件名解析代碼直接實(shí)現(xiàn)對(duì)DataNode節(jié)點(diǎn)的數(shù)據(jù)訪(fǎng)問(wèn),可以減少一次去HBase數(shù)據(jù)庫(kù)中讀取圖片存儲(chǔ)信息的過(guò)程,通過(guò)offset偏移量的值可以將磁頭直接定位到SequenceFile中圖片位置開(kāi)始讀取。
在系統(tǒng)設(shè)計(jì)的基礎(chǔ)上,利用Web Service和物聯(lián)網(wǎng)數(shù)據(jù)采集技術(shù),于2016年研發(fā)了河南省農(nóng)田物聯(lián)網(wǎng)監(jiān)控系統(tǒng),系統(tǒng)在許昌長(zhǎng)葛、滑縣、漯河、南陽(yáng)方城等縣市農(nóng)田布設(shè)60余個(gè)農(nóng)田物聯(lián)網(wǎng)監(jiān)測(cè)站點(diǎn),系統(tǒng)實(shí)現(xiàn)了小麥生產(chǎn)的全過(guò)程物聯(lián)網(wǎng)實(shí)時(shí)土壤溫濕度、空氣溫濕度、降雨、風(fēng)速風(fēng)向等田間小氣候和長(zhǎng)勢(shì)圖片的實(shí)時(shí)監(jiān)測(cè),其中田間小氣候數(shù)據(jù),系統(tǒng)運(yùn)行以來(lái)數(shù)據(jù)規(guī)模在30 TB以上,實(shí)現(xiàn)了各個(gè)站點(diǎn)及設(shè)備的管理、物聯(lián)網(wǎng)數(shù)據(jù)管理、數(shù)據(jù)統(tǒng)計(jì)分析、可視化展示等功能,數(shù)據(jù)監(jiān)控管理界面如圖6所示。
圖6 河南省農(nóng)田物聯(lián)網(wǎng)監(jiān)控系統(tǒng)界面
該系統(tǒng)利用文中設(shè)計(jì)存儲(chǔ)模型,實(shí)現(xiàn)了物聯(lián)網(wǎng)數(shù)據(jù)的高效存儲(chǔ)和事務(wù)控制,同時(shí)利用設(shè)計(jì)的圖片打包策略,為后續(xù)的數(shù)據(jù)檢索、分析提供了快速有效的數(shù)據(jù)查詢(xún)機(jī)制。
另外,為了驗(yàn)證該文技術(shù)方案的性能,基于不同數(shù)量級(jí)的數(shù)據(jù)對(duì)存儲(chǔ)模型,圖片合并策略進(jìn)行了性能測(cè)試。測(cè)試環(huán)境:千兆網(wǎng)絡(luò)、Inter Xeon(R) E5-4603V2處理器、32 GB內(nèi)存、5TB硬盤(pán)組成6節(jié)點(diǎn)Hadoop2.8集群環(huán)境下,搭建3節(jié)點(diǎn)HBase數(shù)據(jù)庫(kù)。
農(nóng)田物聯(lián)網(wǎng)中的土壤墑情和氣象傳感器數(shù)據(jù)多是結(jié)構(gòu)化的數(shù)據(jù),基于不同數(shù)量級(jí)數(shù)據(jù)與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)集群的性能進(jìn)行了對(duì)比測(cè)試,測(cè)試步驟如下:
1)從物聯(lián)網(wǎng)監(jiān)測(cè)系統(tǒng)中隨機(jī)抽取氣象數(shù)據(jù),將數(shù)據(jù)分為5組,數(shù)據(jù)量分別是5萬(wàn)條、50萬(wàn)條、150萬(wàn)條、300萬(wàn)條、500萬(wàn)條;
2)將數(shù)據(jù)通過(guò)Structured Data Access Interface存儲(chǔ)接口寫(xiě)入存儲(chǔ)系統(tǒng)中;
3)將數(shù)據(jù)寫(xiě)入相同硬件配置的3節(jié)點(diǎn)MySQL集群中;
4)分別對(duì)MySQL集群和本文Hadoop存儲(chǔ)系統(tǒng)進(jìn)行10次查詢(xún)操作的查詢(xún)時(shí)間取平均值。
MySQL與Hadoop集群查詢(xún)性能對(duì)比如圖7所示。
可以看出,當(dāng)數(shù)據(jù)規(guī)模較小時(shí),Hadoop集群效率無(wú)法體現(xiàn),甚至還落后于相同硬件配置下的MySQL集群。在300萬(wàn)條數(shù)據(jù)級(jí)別時(shí),MySQL集群與Hadoop集群效率基本持平。在500萬(wàn)條數(shù)據(jù)級(jí)別時(shí),Hadoop集群的效率就明顯高于MySQL集群,數(shù)據(jù)查詢(xún)效率提升達(dá)35.75%。
圖7 MySQL集群與Hadoop集群數(shù)據(jù)查詢(xún)性能對(duì)比
由于HBase是基于HDFS的NoSQL數(shù)據(jù)庫(kù),在請(qǐng)求提交和處理過(guò)程中涉及到Hadoop的初始化、調(diào)度等因素,導(dǎo)致其在處理小數(shù)據(jù)量?jī)?yōu)勢(shì)不明顯。但在高吞吐量、高并發(fā)的情況下,Hadoop集群處理海量數(shù)據(jù)的優(yōu)勢(shì)得以充分體現(xiàn),其平滑擴(kuò)容能力可以實(shí)時(shí)動(dòng)態(tài)地增加集群機(jī)器數(shù)量。因此,基于NoSQL的農(nóng)田物聯(lián)網(wǎng)結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方案在處理高并發(fā)量數(shù)據(jù)場(chǎng)景中是可行的。
在非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方案性能驗(yàn)證部分,針對(duì)圖片合并策略性能驗(yàn)證,即驗(yàn)證原生HDFS與本文使用圖片合并索引的HDFS在讀寫(xiě)效率上的對(duì)比測(cè)試。
1)取物聯(lián)網(wǎng)系統(tǒng)采集的苗情圖像共計(jì)10萬(wàn)張,大小在200~300 kB之間;
2)將這些圖片以不同數(shù)量規(guī)模存入原生HDFS和采用圖片合并索引的HDFS中;
3)分別進(jìn)行10次隨機(jī)讀寫(xiě)操作,取10次平均值為最終時(shí)間消耗。讀操作時(shí)間記錄為sort,寫(xiě)操作時(shí)間記錄為store,讀寫(xiě)次數(shù)記錄為,平均讀寫(xiě)時(shí)間計(jì)算規(guī)則為=(sort+store)/。
原生HDFS與本文方案平均讀寫(xiě)性能驗(yàn)證對(duì)比如圖8所示。
圖8 圖片讀寫(xiě)性能對(duì)比
可以看出,隨著圖片數(shù)量的不斷增加,原生HDFS與本文方案讀寫(xiě)平均時(shí)間差距逐漸增大?;赟equenceFile文件合并技術(shù)、圖片文件名的設(shè)計(jì)及索引優(yōu)化策略后的HDFS讀寫(xiě)平均速度相比未優(yōu)化的原生HDFS性能提升30%以上,更適用于農(nóng)田物聯(lián)網(wǎng)中海量圖片存儲(chǔ)的場(chǎng)景。
目前系統(tǒng)在河南省農(nóng)田物聯(lián)網(wǎng)監(jiān)測(cè)中進(jìn)行了應(yīng)用,在小麥生產(chǎn)過(guò)程中,提供實(shí)時(shí)的數(shù)據(jù)入庫(kù)存儲(chǔ)、管理、可視化,接入物聯(lián)網(wǎng)監(jiān)測(cè)站點(diǎn)60余個(gè),每天產(chǎn)生農(nóng)田空氣、土壤溫濕度等數(shù)據(jù)量達(dá)10 000余條,產(chǎn)生物聯(lián)網(wǎng)圖片文件每天8 000余個(gè),并在考慮接入更多的傳感器和監(jiān)測(cè)站點(diǎn),系統(tǒng)運(yùn)行狀況良好。
系統(tǒng)可以廣泛應(yīng)用于農(nóng)田環(huán)境監(jiān)測(cè),考慮的在以后的研究中,可以結(jié)合分布式計(jì)算與機(jī)器學(xué)習(xí)技術(shù)對(duì)物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行實(shí)時(shí)的計(jì)算,為農(nóng)業(yè)生產(chǎn)提供實(shí)時(shí)的災(zāi)害預(yù)警與決策服務(wù)。
本文基于Hadoop生態(tài)圈,利用NoSQL技術(shù),設(shè)計(jì)了海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)模型,對(duì)農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)中的分布式數(shù)據(jù)讀寫(xiě)、事務(wù)處理、圖片合并索引等關(guān)鍵技術(shù)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn),研發(fā)了海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)管理系統(tǒng)。
考慮農(nóng)田物聯(lián)網(wǎng)實(shí)際應(yīng)用場(chǎng)景,利用HDFS存儲(chǔ)農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中圖片、視頻等非結(jié)構(gòu)化數(shù)據(jù),HBase用來(lái)存儲(chǔ)農(nóng)田物聯(lián)網(wǎng)系統(tǒng)中氣象、墑情等結(jié)構(gòu)化數(shù)據(jù),實(shí)現(xiàn)了結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的一體化存儲(chǔ)與管理。
為了保證海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)事務(wù)數(shù)據(jù)的一致性,本文設(shè)計(jì)的基于樂(lè)觀鎖的HLock分布式事務(wù)機(jī)制,實(shí)現(xiàn)了HBase對(duì)強(qiáng)事務(wù)的支持,經(jīng)過(guò)與傳統(tǒng)MySQL集群對(duì)比測(cè)試發(fā)現(xiàn),當(dāng)數(shù)據(jù)量級(jí)達(dá)500萬(wàn)時(shí),數(shù)據(jù)讀取效率提升達(dá)35.75%。為了提升農(nóng)田物聯(lián)網(wǎng)中大量的小圖片和小文件分布式讀寫(xiě)效率,利用SequenceFile技術(shù)圖片小文件打包合并存儲(chǔ)策略,實(shí)現(xiàn)農(nóng)田物聯(lián)網(wǎng)圖片的快速存取,經(jīng)測(cè)試,采用該技術(shù)的HDFS讀寫(xiě)速率比原生HDFS提升30%以上。
綜上所述,基于NoSQL的海量農(nóng)田物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)方案可以滿(mǎn)足農(nóng)業(yè)物聯(lián)網(wǎng)海量、實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)管理需求。
[1] 李瑾,郭美榮,高亮亮. 農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)應(yīng)用及創(chuàng)新發(fā)展策略[J]. 農(nóng)業(yè)工程學(xué)報(bào),2015,31(增刊2):200-209. Li Jin, Guo Meirong, Gao Liangliang. Application and innovation strategy of agricultural Internet of Things[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2015, 31(Supp.2): 200-209. (in Chinese with English abstract)
[2] 張向飛. 基于農(nóng)業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)智能傳輸與大田監(jiān)測(cè)應(yīng)用[D]. 上海:東華大學(xué),2016. Zhang Xiangfei. Intelligent Data Transmission And Field Monitoring Application Based on Agricultural Internet of Things[D]. Shanghai: Donghua University, 2016. (in Chinese with English abstract)
[3] 杜克明,褚金翔,孫忠富,等. WebGIS在農(nóng)業(yè)環(huán)境物聯(lián)網(wǎng)監(jiān)測(cè)系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)[J]. 農(nóng)業(yè)工程學(xué)報(bào),2016,32(4):171-178. Du Keming, Chu Jinxiang, Sun Zhongfu, et al. Design and implementation of monitoring system for agricultural environment based on WebGIS with Internet of Things[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2016, 32(4): 171-178. (in Chinese with English abstract)
[4] 陳曉棟,原向陽(yáng),郭平毅,等. 農(nóng)業(yè)物聯(lián)網(wǎng)研究進(jìn)展與前景展望[J]. 中國(guó)農(nóng)業(yè)科技導(dǎo)報(bào),2015,17(2):8-16. Chen Xiaodong, Yuan Xiangyang, Guo Pingyi, et al. Progress and prospect in agricultural internet of things[J]. Journal of Agricultural Science and Technology, 2015, 17(2): 8-16. (in Chinese with English abstract)
[5] 王萍,趙宏亮,李佩林,等. 農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)在大豆生產(chǎn)中的應(yīng)用[J]. 大豆科學(xué),2018,37 (5):809-813. Wang Ping, Zhao Hongliang, Li Peilin, et al. Application of agricultural internet of things in soybean production[J]. Soybean Science, 2018, 37(5): 809-813. (in Chinese with English abstract)
[6] 瞿榮錦,韋琮,趙麗娟. 基于物聯(lián)網(wǎng)技術(shù)的農(nóng)田環(huán)境監(jiān)測(cè)系統(tǒng)的研究與構(gòu)建[J]. 農(nóng)業(yè)開(kāi)發(fā)與裝備,2018(9):104-105.
[7] 琚書(shū)存,程文杰,徐建鵬,等. 農(nóng)業(yè)氣象物聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng)[J]. 計(jì)算機(jī)與現(xiàn)代化,2018(9):105-109,117. Ju Shucun, Cheng Wenjie, Xu Jianpeng, et al. Data acquisition system for agricultural meteorological IOT[J]. Computer and Modernization, 2018(9): 105-109, 117. (in Chinese with English abstract)
[8] 宋健瑋. 農(nóng)田灌溉監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 濟(jì)南:山東大學(xué),2017. Song Jianwei. Design and Implementation of Farmland Irrigation Monitoring and Control System[D]. Jinan: Shandong University, 2017. (in Chinese with English abstract)
[9] 劉藝?yán)? 農(nóng)業(yè)物聯(lián)網(wǎng)監(jiān)控管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2016. Liu Yilei. The Design and Implementation of Agricultural IOT Monitor and Management system[D]. Beijing: Beijing University of Posts and Telecommunications, 2016. (in Chinese with English abstract)
[10] 薛文龍. 基于物聯(lián)網(wǎng)的農(nóng)田環(huán)境信息采集控制與預(yù)警系統(tǒng)[J]. 江蘇農(nóng)業(yè)科學(xué),2017,45(9):195-198.
[11] 蔡紹堂,麻碩琪,樂(lè)英高,等. 一種農(nóng)田環(huán)境遠(yuǎn)程監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方法[J]. 四川理工學(xué)院學(xué)報(bào):自然科學(xué)版,2018,31(2):69-74. Cai Shaotang, Ma Shuoqi, Le Yinggao, et al. Design and realization of remote monitoring system for farmland environment[J]. Journal of Sichuan University of Science & Engineering: Natural Science Edition, 2018, 31(2): 69-74. (in Chinese with English abstract)
[12] 姜巖,段杰,王茂勵(lì),等. 基于物聯(lián)網(wǎng)技術(shù)的水肥一體化智能管理系統(tǒng)[J]. 現(xiàn)代農(nóng)業(yè)科技,2018(16):279-281. Jiang Yan, Duan Jie, Wang Maoli, et al. Intelligent system of water and fertilizer based on internet of things technology[J]. Modern Agricultural Science and Technology, 2018(16): 279-281. (in Chinese with English abstract)
[13] 徐識(shí)溥,劉勇,李雙喜,等. 基于農(nóng)業(yè)物聯(lián)網(wǎng)的農(nóng)田土壤環(huán)境監(jiān)測(cè)系統(tǒng)的研究與設(shè)計(jì)[J]. 中國(guó)農(nóng)學(xué)通報(bào),2018,34(23):145-150. Xu Shipu, Liu Yong, Li Shuangxi, et al. Research and design of farmland soil environmental monitoring system based on agricultural IOT[J]. Chinese Agricultural Science Bulletin, 2018, 34(23): 145-150. (in Chinese with English abstract)
[14] 李雅麗,魏峰遠(yuǎn),陳榮國(guó),等. 基于物聯(lián)網(wǎng)和WebGIS果園監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 測(cè)繪與空間地理信息,2018,41(8):75-77,81. Li Yali, Wei Fengyuan, Chen Rongguo, et al. Design and application of orchard environment based on internet of things and WebGIS[J]. Geomatics & Spatial Information Technology, 2018, 41(8): 75-77, 81. (in Chinese with English abstract)
[15] 郝行軍. 物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理技術(shù)研究[D]. 合肥:中國(guó)科學(xué)技術(shù)大學(xué),2017. Hao Xingjun. Reseach on Technology of Storage and Management of IOT Data[D]. Hefei: University of Science and Technology of China, 2017. (in Chinese with English abstract)
[16] 陳威,郭書(shū)普. 中國(guó)農(nóng)業(yè)信息化技術(shù)發(fā)展現(xiàn)狀及存在的問(wèn)題[J]. 農(nóng)業(yè)工程學(xué)報(bào),2013,29(22):196-205. Chen Wei, Guo Shupu. Current situation and existing problems of agricultural informatization in China[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2013, 29(22): 196-205. (in Chinese with English abstract)
[17] 趙立波,李凌霞,王旭. 物聯(lián)網(wǎng)海量異構(gòu)傳感器采樣數(shù)據(jù)存儲(chǔ)與查詢(xún)處理[J]. 軟件導(dǎo)刊,2017,16(12):182-183,187. Zhao Libo, Li Lingxia, Wang Xu. Storage and query processing of massive heterogeneous sensorsample data in internet of things[J]. Soft Guide, 2017, 16(12): 182-183, 187. (in Chinese with English abstract)
[18] 鄭建忠,鄭建榮. 一種基于云計(jì)算技術(shù)的物聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)[J]. 電力信息與通信技術(shù),2018,16(6):57-61. Zheng Jianzhong, Zheng Jianrong. Design of internet of things platform based on cloud computing technology[J]. Electric Power ICT, 2018, 16(6): 57-61. (in Chinese with English abstract)
[19] 劉佩增. 面向物聯(lián)網(wǎng)多維度數(shù)據(jù)的多級(jí)存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2018. Liu Peizeng. The Design and Implementation of Multilevel Storage System Oriented to Multidimensional Data[D]. Beijing: Beijing University of Posts and Telecommunications, 2018. (in Chinese with English abstract)
[20] 楊鵬,林俊暉. 一種基于MongoDB和Hadoop的海量非結(jié)構(gòu)化物聯(lián)網(wǎng)數(shù)據(jù)處理方案[J]. 微電子學(xué)與計(jì)算機(jī),2018,35(4):68-72,78. Yang Peng, Lin Junhui. A scheme for massive unstructured iot data processingbased on mongodb and hadoop[J]. Microelectronics & Computer, 2018, 35(4): 68-72, 78. (in Chinese with English abstract)
[21] 李繼蕊,李小勇,高雅麗,等. 物聯(lián)網(wǎng)環(huán)境下數(shù)據(jù)轉(zhuǎn)發(fā)模型研究[J]. 軟件學(xué)報(bào),2018,29(1):196-224. Li Jirui, Li Xiaoyong, Gao Yali, et al. Review on data forwarding model in internet of things[J]. Journal of Software, 2018, 29(1): 196-224. (in Chinese with English abstract)
[22] 王順. 面向農(nóng)業(yè)物聯(lián)網(wǎng)的異構(gòu)數(shù)據(jù)存儲(chǔ)方法研究[D]. 鄭州:河南農(nóng)業(yè)大學(xué),2016. Wang Shun. Research on the Heterogeneous Data Storage Method for the Agricultural Internet of Things[D]. Zhengzhou: Henan Agricultural University, 2016. (in Chinese with English abstract)
[23] 龔暢. 大數(shù)據(jù)下的NoSQL數(shù)據(jù)庫(kù)技術(shù)分析[J]. 信息記錄材料,2018,19(6):118-119.
[24] 李林. 基于hadoop的海量圖片存儲(chǔ)模型的分析和設(shè)計(jì)[D]. 杭州:杭州電子科技大學(xué),2011. Li Lin. Design and Analysis of the Mass Image Storage Model Based on Hadoop[D]. Hangzhou: Hangzhou Dianzi University, 2011. (in Chinese with English abstract)
[25] 盧冬海,何先波. 淺析NoSQL數(shù)據(jù)庫(kù)[J]. 中國(guó)西部科技,2011,10(2):14,15-16. Lu Donghai, He Xianbo. The analysis of NoSQL database[J]. Science and Technology of West China, 2011, 10(2): 14, 15-16. (in Chinese with English abstract)
[26] 宋曉東. Hadoop分布式文件系統(tǒng)小文件數(shù)據(jù)存儲(chǔ)性能的優(yōu)化方法研究[D]. 北京:北京交通大學(xué),2017. Song Xiaodong. The Optimization Method Research for Small File Data Storage Performance on Hadoop Distributed File System[D]. Beijing: Beijing Jiaotong University, 2017. (in Chinese with English abstract)
[27] 宋俊輝,馮巖. 負(fù)載均衡的分布式系統(tǒng)任務(wù)調(diào)度優(yōu)化算法[J]. 吉林大學(xué)學(xué)報(bào):理學(xué)版,2017,55(2):383-387. Song Junhui, Feng Yan. Task Scheduling optimization algorithm in distributed system with load balancing[J]. Journal of Jilin University: Science Edition, 2017, 55(2): 383-387. (in Chinese with English abstract)
[28] 譚臺(tái)哲,向云鵬. Hadoop平臺(tái)下海量圖像處理實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2017,38(4):976-980.
Tan Taizhe, Xiang Yunpeng. Large-scale image processing implementation under hadoop platform[J]. Computer Engineering and Design, 2017,38(4):976-980. (in Chinese with English abstract)
[29] Daniel Peng, Frank Dabek. Large-scale Incremental Processing Using Distributed Transactions and Notifications[C]// USENIX Symposium on Operating Systems Design and Implementation, October 4-6, 2010, Vancouver, BC: USENIX Association, c2010:251?264.
[30] 苗星. HBase長(zhǎng)事務(wù)實(shí)現(xiàn)方法研究[D]. 北京:北京交通大學(xué),2015. Miao Xing. The Research on Long Transaction Support for HBase[D]. Beijing: Beijing Jiaotong University, 2015. (in Chinese with English abstract)
[31] 吳龍,唐軍. 一種ntp服務(wù)器時(shí)間同步的方法: CN102916799A[P]. 2013-02-06.
[32] 李三淼,李龍澍. Hadoop中處理小文件的四種方法的性能分析[J]. 計(jì)算機(jī)工程與應(yīng)用,2016,52(9):44-49. Li Sanmiao, Li Longshu. Performance analysis of four methods for handling small files in Hadoop[J]. Computer Engineering and Applications, 2016, 52(9): 44-49. (in Chinese with English abstract)
Design and implementation of cloud storage system for farmland internet of things based on NoSQL database
Xu Xin1,2 ,Shi Lei1, He Long1, Zhang Hao1,2※, Ma Xinming1,2,3
(1.450002,2.450002,; 3. HHH450002,)
In order to solve the problems of storing large amounts of structured and unstructured data, such as images, video and sensors and so on, and real-time processing and writing, a data cloud storage system for farmland Internet of Things (IOT) with mass storage, high performance and easy expansion is constructed. Based on Hadoop platform, in this paper, we constructed a massive farmland IOT data cloud storage system by combining the characteristics of farmland IOT data, using distributed storage and NoSQL(Not Only SQL) technology. From the security, reliability, efficient reading and writing, data conversion, transaction processing, small file processing, cache strategy, load balancing and other issues of the system, HDFS was used to store unstructured data such as pictures and videos in the farmland IOT system, HBase was used to store structured data such as meteorology and moisture in the farmland IOT system, Redis was used in cache servers. Three layers of data cloud storage architecture for IOT were designed. The system classifies and processes video, image, text and structured data. For large video block storage, small file image packaging and merging storage, text classification and conversion strategy, unstructured data were written to HDFS, structured data were written to HBase, and Redis was used as the system cache to realize the data of the IOT writing and reading business. In distributed cluster environment, the reliability of cross-line transaction and long transaction processing was restricted. It was difficult to process cross-line transaction and long transaction accurately and orderly, and it was difficult to ensure data consistency in complex services such as massive data analysis. In this paper, a distributed transaction mechanism based on optimistic lock was designed. The transaction processing module cooperates with the HLock(optimistic lock) structure to control the state of the transaction. The NTP server guarantees the uniqueness of the transaction timestamp. The transaction ACID features, including reading and writing data, were solved. HBase's strong transactional support has been tested to improve query efficiency by 35.75% compared with traditional MySQL clusters when the data level was 5 million. Thus, NoSQL-based structured data storage scheme was feasible in dealing with high concurrent massive data scenarios. In order to solve the problem of a large number of small pictures and small files in the farmland IOT, the sampled pictures were packaged and measured. The “SequenceFile” technology was used to merge multiple pictures into a "Block" to realize the strategy of merging and storing small files. Fast index reading, compared with the original HDFS storage reading and writing efficiency, image file storage reading and writing efficiency improved by more than 30%. Therefore, based on the “SequenceFile” file merging technology, image file name design and index optimization strategy, it was suitable for large-scale image storage scene in the farmland IOT. The system had been applied to the monitoring system of farmland IOT in China Henan Province. It was distributed in more than 60 monitoring stations in Changge, Huaxian, Luohe and Fangcheng counties and cities, providing real-time data for storage, management and visualization, and considering the incorporation of more sensors and monitoring stations, the system was in good working order. In summary, based on Hadoop platform and NoSQL technology, we designed a massive farmland IOT data storage model, designed and implements the key technologies such as data reading and writing, transaction, picture packaging, index, load balancing module, and develops a massive farmland IOT data storage, management system. Based on NoSQL massive farmland IOT data storage scheme suitable for the storage and management needs of the IOT massive, real-time data, for farmland IOT storage transaction consistency, small file processing and other issues, for massive agricultural IOT data storage solutions. It can combine distributed computing and machine learning technology to compute the data of IOT in real time and provide real-time operation and decision-making services for agricultural production.
farms; data storage equipment; management; IOT; NoSQL; Hadoop; HBase; cloud storage
2018-09-25
2018-11-23
河南省科技創(chuàng)新杰出人才(184200510008);河南省現(xiàn)代農(nóng)業(yè)產(chǎn)業(yè)技術(shù)體系(S2010-01-G04);十三五國(guó)家重點(diǎn)研發(fā)計(jì)劃(2016YFD0300609);河南省重大科技專(zhuān)項(xiàng)(171100110600-01)
許 鑫,河南鄧州人,講師,博士生,主要從事機(jī)器學(xué)習(xí)與精準(zhǔn)栽培技術(shù)研究。Email:xuxin468@163.com
張 浩,河南鄧州人,副教授,主要從事分布式計(jì)算、數(shù)據(jù)集成與可視化研究。Email:zhanghaohnnd@126.com
10.11975/j.issn.1002-6819.2019.01.021
S126
A
1002-6819(2019)-01-0172-08
許 鑫,時(shí) 雷,何 龍,張 浩,馬新明. 基于NoSQL數(shù)據(jù)庫(kù)的農(nóng)田物聯(lián)網(wǎng)云存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 農(nóng)業(yè)工程學(xué)報(bào),2019,35(1):172-179. doi:10.11975/j.issn.1002-6819.2019.01.021 http://www.tcsae.org
Xu Xin, Shi Lei, He Long, Zhang Hao, Ma Xinming. Design and implementation of cloud storage system for farmland internet of things based on NoSQL database [J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2019, 35(1): 172-179. (in Chinese with English abstract) doi:10.11975/j.issn.1002-6819.2019.01.021 http://www.tcsae.org