張向豐
(黃河水利職業(yè)技術(shù)學(xué)院,河南 開封 475000)
在傳統(tǒng)的農(nóng)業(yè)生產(chǎn)模式中,從業(yè)者依靠經(jīng)驗(yàn)判斷作物長勢、制定管理策略,但由于缺乏精確的數(shù)據(jù)支撐,容易出現(xiàn)偏差?;谖锫?lián)網(wǎng)的農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)能夠解決該問題。此類系統(tǒng)的設(shè)計(jì)重點(diǎn)在于數(shù)據(jù)的獲取途徑、存儲(chǔ)方式以及分析處理方法,本文從這三個(gè)方面對(duì)系統(tǒng)的設(shè)計(jì)要點(diǎn)進(jìn)行深入探索,旨在提出科學(xué)的設(shè)計(jì)方案。
農(nóng)作物生長對(duì)環(huán)境條件有一定的要求,如土壤水勢、土壤酸堿性、環(huán)境溫度、空氣濕度、光照強(qiáng)度等方面?,F(xiàn)代農(nóng)業(yè)生產(chǎn)的精細(xì)化、智慧化程度在不斷提高,這就要求在農(nóng)業(yè)管理中加強(qiáng)對(duì)各類環(huán)境數(shù)據(jù)的監(jiān)控,并在其基礎(chǔ)上制定科學(xué)、高效的策略。在這一過程中涉及到各類農(nóng)業(yè)環(huán)境數(shù)據(jù)的檢測、存儲(chǔ)和展示。
農(nóng)業(yè)物聯(lián)網(wǎng)以互聯(lián)網(wǎng)技術(shù)為基礎(chǔ),融合了各種類型的農(nóng)業(yè)數(shù)據(jù)傳感器,加強(qiáng)了農(nóng)業(yè)生產(chǎn)者的信息感知能力。另外,將農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)與數(shù)據(jù)分析算法、人工智能等相結(jié)合,可實(shí)現(xiàn)較高水平的自動(dòng)化種養(yǎng)。
按照數(shù)據(jù)生成到應(yīng)用的先后順序,可將農(nóng)業(yè)物聯(lián)網(wǎng)的體系架構(gòu)劃分為五層,如圖1所示。
圖1 農(nóng)業(yè)物聯(lián)網(wǎng)體系架構(gòu)
(1)感知層
感知層是農(nóng)業(yè)物聯(lián)網(wǎng)采集環(huán)境大數(shù)據(jù)的主要渠道,其核心設(shè)備是各種傳感器,如小型智能氣象站、土壤墑情檢測儀、溫濕度測量儀器等。當(dāng)前,傳感器的智能化水平不斷提高,其采集的數(shù)據(jù)可自動(dòng)上傳至系統(tǒng)管理后臺(tái)。
(2)接入層
農(nóng)業(yè)物聯(lián)網(wǎng)中存在多種類型的傳感器,其生產(chǎn)廠家、通信方式可能存在差異。接入層用于實(shí)現(xiàn)不同傳感器的訪問,提升系統(tǒng)兼容性。接入層由中間件、網(wǎng)關(guān)以及接口組成。以硬件網(wǎng)關(guān)為例,可兼容以太網(wǎng)、RS 485、RS 232等多種輸入方式,可滿足不同傳感器的通信需求[1-2]。
(3)網(wǎng)絡(luò)層
通信網(wǎng)絡(luò)是農(nóng)業(yè)物聯(lián)網(wǎng)的重要組成部分,傳感器的數(shù)據(jù)上傳、管理后臺(tái)對(duì)設(shè)備的遠(yuǎn)程操控均依賴于通信網(wǎng)絡(luò)。常用的通信方式為GPRS、4G、5G等。在大數(shù)據(jù)系統(tǒng)中,數(shù)據(jù)傳輸規(guī)模較大,對(duì)網(wǎng)絡(luò)層的傳輸速率提出了較高的要求。
(4)數(shù)據(jù)層
數(shù)據(jù)層的功能包括兩個(gè)方面,分別為數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)預(yù)處理。傳感器長期運(yùn)行,會(huì)產(chǎn)生大量的農(nóng)業(yè)環(huán)境數(shù)據(jù),由數(shù)據(jù)層提供存儲(chǔ)功能,實(shí)現(xiàn)資源集中與共享。數(shù)據(jù)預(yù)處理的目的是清洗粗大誤差、補(bǔ)充部分缺失值,必要時(shí)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,如歸一化處理,為后期的數(shù)據(jù)分析、計(jì)算和應(yīng)用創(chuàng)造有利的條件。
(5)應(yīng)用層
數(shù)據(jù)層實(shí)現(xiàn)了原始數(shù)據(jù)的集中存儲(chǔ),應(yīng)用層的功能則是進(jìn)一步分析、開發(fā)、挖掘原始數(shù)據(jù),從而發(fā)現(xiàn)農(nóng)業(yè)生產(chǎn)的規(guī)律、建立相應(yīng)模型,指導(dǎo)農(nóng)業(yè)生產(chǎn)決策[3-4]。云計(jì)算、大數(shù)據(jù)技術(shù)在應(yīng)用層發(fā)揮著重要作用,是數(shù)據(jù)分析的主要技術(shù)手段。
2.1.1 農(nóng)業(yè)環(huán)境大數(shù)據(jù)采集
數(shù)據(jù)是大數(shù)據(jù)系統(tǒng)的基礎(chǔ),在設(shè)計(jì)過程中應(yīng)該根據(jù)農(nóng)業(yè)生產(chǎn)的特點(diǎn),完成傳感器選型、網(wǎng)絡(luò)通信方式選擇,并考慮數(shù)據(jù)存儲(chǔ)方式、存儲(chǔ)能力等因素。
2.1.2 農(nóng)業(yè)環(huán)境大數(shù)據(jù)存儲(chǔ)
搭建農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)需要解決大規(guī)模存儲(chǔ)以及訪問快速響應(yīng)的問題。在本文的系統(tǒng)設(shè)計(jì)中將HDFS作為農(nóng)業(yè)環(huán)境大數(shù)據(jù)的存儲(chǔ)方式。HDFS是Hadoop體系中的分布式存儲(chǔ)組件,其本質(zhì)是一個(gè)文件系統(tǒng),通過流式數(shù)據(jù)訪問模式存儲(chǔ)超大文件,能夠?qū)?shù)據(jù)分塊存儲(chǔ)到硬件集群內(nèi)的不同機(jī)器上。
2.1.3 數(shù)據(jù)計(jì)算和挖掘
初始采集的農(nóng)業(yè)大數(shù)據(jù)缺乏規(guī)律,難以指導(dǎo)農(nóng)業(yè)生產(chǎn)決策,因而需借助算法挖掘數(shù)據(jù)中的潛在規(guī)律。大數(shù)據(jù)技術(shù)中的聚類算法、神經(jīng)網(wǎng)絡(luò)算法、決策樹算法等均能處理農(nóng)業(yè)生產(chǎn)數(shù)據(jù),既能分析歷史數(shù)據(jù),又能預(yù)測作物生長情況。例如,在智慧灌溉中可采用隨機(jī)森林算法構(gòu)建水肥一體化模型。ID3算法、C4.5算法以及CART算法屬于較為成熟的隨機(jī)森林算法。在實(shí)際應(yīng)用中先收集農(nóng)業(yè)灌溉及作物生長的大數(shù)據(jù),在其基礎(chǔ)上提取數(shù)據(jù)特征,開展模型訓(xùn)練,最后形成具有水肥預(yù)測能力的灌溉模型,進(jìn)而指導(dǎo)灌溉活動(dòng)。
2.2.1 系統(tǒng)整體架構(gòu)
(1)數(shù)據(jù)層
數(shù)據(jù)層分為數(shù)據(jù)源存儲(chǔ)模塊和大數(shù)據(jù)存儲(chǔ)模塊兩部分,前者建立在關(guān)系型數(shù)據(jù)庫(如MySQL、SQL Server)的基礎(chǔ)上,從農(nóng)業(yè)傳感器以及國家農(nóng)業(yè)信息化資源網(wǎng)站獲取原始數(shù)據(jù)。后者采用HDFS分布式存儲(chǔ)模式,用于匯總經(jīng)過預(yù)處理的合格數(shù)據(jù),在匯總的過程中還須根據(jù)業(yè)務(wù)特點(diǎn)實(shí)施數(shù)據(jù)分類。
(2)業(yè)務(wù)層
業(yè)務(wù)層采用Apache Spark大數(shù)據(jù)處理引擎,以聚類算法構(gòu)建數(shù)據(jù)分析和計(jì)算的模型。Spark中的MLlib機(jī)器學(xué)習(xí)庫可用于迭代計(jì)算,利用該擴(kuò)展庫提高農(nóng)業(yè)大數(shù)據(jù)的處理效率。
(3)交互層
交互層設(shè)計(jì)有三大功能,分別為算法管理、數(shù)據(jù)管理、數(shù)據(jù)上傳及下載。顯然,交互層服務(wù)于人機(jī)交互。數(shù)據(jù)管理模塊以可視化的方式展示數(shù)據(jù)挖掘的結(jié)果,提高管理人員的數(shù)據(jù)理解效率。
2.2.2 系統(tǒng)主要子模塊
子模塊是對(duì)數(shù)據(jù)層、業(yè)務(wù)層、交互層的功能細(xì)分,在軟件設(shè)計(jì)中需逐層分解功能需求,以便開展詳細(xì)的業(yè)務(wù)流程設(shè)計(jì)與程序代碼開發(fā)。系統(tǒng)平臺(tái)子模塊包括HDFS分布式存儲(chǔ)模塊、源數(shù)據(jù)存儲(chǔ)模塊、機(jī)器學(xué)習(xí)模塊、算法實(shí)現(xiàn)模塊、源數(shù)據(jù)獲取模塊、數(shù)據(jù)預(yù)處理模塊、SQL查詢模塊、上傳下載模塊。
2.3.1 軟硬件配置
軟硬件資源是農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)的重要組成部分,涵蓋部署在農(nóng)田環(huán)境內(nèi)的終端傳感器、計(jì)算機(jī)、操作系統(tǒng)等。計(jì)算機(jī)為系統(tǒng)提供了計(jì)算資源,大數(shù)據(jù)系統(tǒng)中集成了算法,可批量處理規(guī)模較大的數(shù)據(jù),對(duì)計(jì)算機(jī)的CPU、緩存、硬盤資源等提出了較高的要求。表1為計(jì)算機(jī)軟硬件設(shè)計(jì)方案。
表1 農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)軟硬件資源配置
2.3.2 集群設(shè)計(jì)
HDFS采用分布式存儲(chǔ)方式,將較大的數(shù)據(jù)文件分塊存儲(chǔ)在不同的機(jī)器上。因此,在系統(tǒng)硬件設(shè)計(jì)階段應(yīng)配置集群。具體實(shí)現(xiàn)流程為創(chuàng)建CentOS虛擬機(jī)、網(wǎng)絡(luò)調(diào)試、虛擬機(jī)克隆、安裝系統(tǒng)基本環(huán)境、安裝Hadoop、安裝Apache Spark、配置ssh訪問秘鑰等[5-6]。以上安裝過程推薦采用Linux環(huán)境。集群中設(shè)置多個(gè)Hadoop節(jié)點(diǎn),可根據(jù)實(shí)際需求進(jìn)行拓展。
2.4.1 數(shù)據(jù)存儲(chǔ)
(1)數(shù)據(jù)源存儲(chǔ)
數(shù)據(jù)源存儲(chǔ)于MySQL數(shù)據(jù)庫,傳感器采集的數(shù)據(jù)通過通信網(wǎng)絡(luò)上傳至接口,再經(jīng)過后臺(tái)代碼的處理,最終寫入數(shù)據(jù)庫,網(wǎng)絡(luò)中采集的數(shù)據(jù)也可采用相同的方式進(jìn)行存儲(chǔ)。設(shè)計(jì)人員應(yīng)根據(jù)數(shù)據(jù)特點(diǎn)設(shè)計(jì)表結(jié)構(gòu)、字段名稱、字段類型以及字段長度等。農(nóng)業(yè)環(huán)境中的溫度、濕度、pH值、光照強(qiáng)度等均為數(shù)值型數(shù)據(jù),因而可采用關(guān)系型數(shù)據(jù)庫。表2為字段設(shè)計(jì)的實(shí)例。
表2 農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源字段存儲(chǔ)實(shí)例
(2)HDFS數(shù)據(jù)存儲(chǔ)
HDFS主要存儲(chǔ)經(jīng)過預(yù)處理的農(nóng)業(yè)環(huán)境大數(shù)據(jù),Hadoop技術(shù)框架中存在Stributed File System(分布式文件系統(tǒng)),由多個(gè)機(jī)器組成,每臺(tái)機(jī)器上運(yùn)行一個(gè)DataNode進(jìn)程,負(fù)責(zé)管理一部分?jǐn)?shù)據(jù)。在所有機(jī)器中,由一臺(tái)機(jī)器獨(dú)立運(yùn)行NameNode進(jìn)程,客戶端通過該進(jìn)程實(shí)現(xiàn)數(shù)據(jù)讀寫[7-8]。HDFS通過以上方式實(shí)現(xiàn)大數(shù)據(jù)的分布式存儲(chǔ)。
2.4.2 數(shù)據(jù)分析
Spark的MLlib機(jī)器學(xué)習(xí)庫集成了數(shù)據(jù)清洗、SQL查詢、建模等一系列功能,模型建立依賴于算法。在MLlib中內(nèi)置了通用性的學(xué)習(xí)算法,包括分類、協(xié)同過濾、回歸、聚類等。農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)利用MLlib中集成的GMM算法、K-means算法完成數(shù)據(jù)分析和建模。軟件工具中提供了統(tǒng)一的算法調(diào)用編碼方式。例如,K-means算法的調(diào)用代碼為import org.apache.spark.ml.clustering.BisectingKMeans。將預(yù)處理后的農(nóng)業(yè)環(huán)境大數(shù)據(jù)導(dǎo)入算法中,再進(jìn)入數(shù)據(jù)訓(xùn)練階段。
2.5.1 測試方法
(1)數(shù)據(jù)源
以某地的高等級(jí)西瓜種植區(qū)為數(shù)據(jù)采集的主要對(duì)象,棚內(nèi)設(shè)置有多種傳感器,數(shù)據(jù)采集指標(biāo)為CO2濃度、植株間距、根系溫度、環(huán)境溫度、土壤pH值等[11-12],共計(jì)10項(xiàng)內(nèi)容。實(shí)地采集的數(shù)據(jù)樣本不足以支撐算法模型訓(xùn)練,因而引入部分網(wǎng)絡(luò)開源數(shù)據(jù),以提高各項(xiàng)指標(biāo)的數(shù)據(jù)量。為檢驗(yàn)數(shù)據(jù)量對(duì)處理結(jié)構(gòu)的影響,將其設(shè)置為三種級(jí)別,其對(duì)應(yīng)的數(shù)據(jù)量分別為1萬組、10萬組、100萬組。數(shù)據(jù)存儲(chǔ)在HDFS中,文件格式為csv。
(2)實(shí)施過程
以JAVA語言編寫算法調(diào)用程序以及各類功能性程序,實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入功能;再啟動(dòng)Hadoop集群,開展數(shù)據(jù)分析和模型訓(xùn)練。
2.5.2 結(jié)果分析
本系統(tǒng)以K-means算法和GMM算法處理西瓜種植的各類環(huán)境大數(shù)據(jù),結(jié)果見表3所列。K-means算法的關(guān)鍵在于K的取值,其決定了數(shù)據(jù)分簇的數(shù)量,表3為K=3時(shí)的處理結(jié)果。在Spark的MLlib庫中設(shè)置有專門的算法性能評(píng)估工具,使用該工具評(píng)價(jià)K在不同取值時(shí)的聚類準(zhǔn)確率[9-10]。當(dāng)K=2時(shí),該算法的數(shù)據(jù)處理準(zhǔn)確率達(dá)到了86.8%。當(dāng)K=3時(shí),該算法的數(shù)據(jù)處理準(zhǔn)確率達(dá)到了89.5%。另外,系統(tǒng)平臺(tái)的數(shù)據(jù)分析處理能力與其運(yùn)行時(shí)長存在密切關(guān)聯(lián),如果數(shù)據(jù)完全一致,處理時(shí)長越短,表明其性能越強(qiáng)。針對(duì)三種級(jí)別的數(shù)據(jù)規(guī)模,該系統(tǒng)的數(shù)據(jù)處理時(shí)長分別為8 593 ms(數(shù)據(jù)量為 104)、25 989 ms(數(shù)據(jù)量為 105)、215 098 ms(數(shù)據(jù)量為106),可見系統(tǒng)的運(yùn)行時(shí)長與數(shù)據(jù)量呈正相關(guān)。數(shù)據(jù)分簇意味著產(chǎn)生了三種聚類結(jié)果,觀察表3中各項(xiàng)指標(biāo)的數(shù)值,發(fā)現(xiàn)其一致性較高,只有個(gè)別指標(biāo)存在小幅差異,如植株間距、根系溫度、土壤濕度,可能原因是各簇的數(shù)據(jù)樣本有所不同??傮w而言,基于物聯(lián)網(wǎng)的農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)能夠高效分析和處理農(nóng)業(yè)生產(chǎn)中的各類數(shù)據(jù)源。
表3 農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)的K-means算法聚類處理結(jié)果示例
將物聯(lián)網(wǎng)技術(shù)、大數(shù)據(jù)技術(shù)和現(xiàn)代化的智能傳感器整合在一起,可建立科學(xué)的農(nóng)業(yè)數(shù)據(jù)服務(wù)及管理平臺(tái),為制定農(nóng)業(yè)生產(chǎn)措施提供強(qiáng)大的技術(shù)支撐?;谖锫?lián)網(wǎng)的農(nóng)業(yè)環(huán)境大數(shù)據(jù)系統(tǒng)由傳感器、計(jì)算機(jī)、通信網(wǎng)絡(luò)、算法程序等軟硬件模塊組成,設(shè)計(jì)要點(diǎn)為軟硬件交互方式、算法模型、數(shù)據(jù)存儲(chǔ)方式,具體的解決方案是依托Spark的MLlib庫引入K-means、GMM算法,利用HDFS構(gòu)建分布式存儲(chǔ)。