李亮丹,曄沙,謝夏,胡月明,,3,4,謝健文,3,4,周悟,游小敏
(1.華南農(nóng)業(yè)大學(xué)資源環(huán)境學(xué)院,廣州 510642;2.海南大學(xué)熱帶作物學(xué)院,???570228;3.青海-廣東自然資源監(jiān)測與評價聯(lián)合重點(diǎn)實(shí)驗(yàn)室,西寧 810016;4.廣州市華南自然資源科學(xué)技術(shù)研究院,廣州 510642)
高寒草地生態(tài)系統(tǒng)是我國海拔最高、面積最大的生態(tài)系統(tǒng)類型,也是我國重要的畜牧業(yè)基地,其對于高原地區(qū)的水源涵養(yǎng)、生物多樣性保護(hù)、固碳等生態(tài)功能具有不可替代的作用[1-4]。然而,高寒草地生態(tài)系統(tǒng)具有脆弱性與敏感性的特點(diǎn),一旦被破壞,容易導(dǎo)致水土流失、江河湖泊斷流干涸、蟲鼠災(zāi)害、沙塵暴等一系列生態(tài)災(zāi)害問題。而高寒草地一旦退化,修復(fù)和治理往往需要很長時間,且要耗費(fèi)極大的人力和物力資源。
為了解決高寒草地退化問題,我國在高寒草地生態(tài)系統(tǒng)監(jiān)測、草地生態(tài)修復(fù)方面開展了大量的工作[5-8]。2000 年,我國啟動青海三江源自然保護(hù)區(qū)生態(tài)保護(hù)和建設(shè)工程[5]。不少學(xué)者就三江源生態(tài)保護(hù)和建設(shè)工程的成效進(jìn)行了定性或定量的分析[6],提出了啟示性的建議[7],并對三江源生態(tài)保護(hù)和建設(shè)成效進(jìn)行了評估[8]。除此之外,也有大量的學(xué)者從事高寒區(qū)域生態(tài)評價、高寒草地評價等工作。在生態(tài)評價方面,氣候變化[9]、土壤特征[10]等是學(xué)者們關(guān)注的重點(diǎn)。在高寒草地評價方面,植被覆蓋變化[11]、生態(tài)因素與植被的關(guān)系[12]、草地退化評價[13]等也受到了廣泛關(guān)注。隨著國家相關(guān)部門和眾多學(xué)者對高寒草地多方面、多手段的監(jiān)測和研究,其數(shù)據(jù)量也隨時間呈爆炸式增長,合理有效地利用高寒草地海量數(shù)據(jù)進(jìn)行高寒草地退化研究,通過對價值密度較低的海量數(shù)據(jù)進(jìn)行挖掘及綜合分析,不僅能夠系統(tǒng)、科學(xué)地對高寒草地的退化與沙漠化的情況進(jìn)行評價,而且能夠?yàn)楦吆莸乇O(jiān)測與管理政策的科學(xué)制定提供理論依據(jù)。
基于海量數(shù)據(jù)進(jìn)行高寒草地退化研究的基礎(chǔ)在于數(shù)據(jù)的存儲和分析。目前高寒草地涉及的數(shù)據(jù)按來源主要可歸納成4大類:①Landsat系列、Sentinel系列、國產(chǎn)高分以及中分辨率成像光譜儀(MODIS)等多傳感器的遙感數(shù)據(jù)[14];②來自監(jiān)測站點(diǎn)的監(jiān)測數(shù)據(jù),如氣候、生物量等基礎(chǔ)地理數(shù)據(jù);③相關(guān)部門信息資料,如各類社會經(jīng)濟(jì)統(tǒng)計表格、描述文獻(xiàn)、地形圖、CAD 測繪圖件、GIS 數(shù)據(jù)等;④實(shí)驗(yàn)數(shù)據(jù),如根據(jù)不同實(shí)驗(yàn)?zāi)康牟荚O(shè)樣點(diǎn)得到的各類土壤和草地健康系數(shù)、草地覆蓋度等監(jiān)管指標(biāo)數(shù)據(jù)??傮w來說,我國積累的高寒草地數(shù)據(jù)主要呈現(xiàn)以下特點(diǎn):①數(shù)據(jù)規(guī)模龐大,數(shù)據(jù)分布不均衡;②多源多結(jié)構(gòu)數(shù)據(jù)并存,異構(gòu)數(shù)據(jù)量大、種類多;③空間性強(qiáng);④數(shù)據(jù)格式多樣,數(shù)據(jù)質(zhì)量參差不齊。針對以上高寒草地數(shù)據(jù)的特點(diǎn),本研究提出通過分布式技術(shù)解決其高效存儲與分析的問題,旨在為高寒草地的監(jiān)測與管理提供更多的方法與思路,并為后續(xù)政策制定及決策提供科學(xué)的數(shù)據(jù)支持。
針對高寒草地數(shù)據(jù)的特點(diǎn),本系統(tǒng)設(shè)計與實(shí)現(xiàn)了基于Hive 的高寒草地海量數(shù)據(jù)分析系統(tǒng),以解決高寒草地退化評價中數(shù)據(jù)存儲與分析的問題,主要需求如下:
(1)數(shù)據(jù)搜集
數(shù)據(jù)搜集是關(guān)鍵的第一步,需要遵循全面、準(zhǔn)確、直觀、科學(xué)的原則,多渠道、多手段地對高寒草地實(shí)時監(jiān)測數(shù)據(jù)及海量歷史數(shù)據(jù)進(jìn)行搜集,主要包括監(jiān)測站信息數(shù)據(jù)、草地類型數(shù)據(jù)、生物量數(shù)據(jù)、氣象數(shù)據(jù)、水文數(shù)據(jù)等。
(2)數(shù)據(jù)管理
本研究需要完成對高寒草地海量數(shù)據(jù)可靠的分布式存儲。Hive支持各種數(shù)據(jù)類型,包括基礎(chǔ)數(shù)據(jù)類型tinyint、smallint、int、bigint、float、string 等,同時也支持array、map、struct、union 等復(fù)雜的數(shù)據(jù)類型。Hive支持的文件格式主要包括textfile(文本文件)、sequencefile(二進(jìn)制文件)、rcfile(Hive 推出的面向列的數(shù)據(jù)格式)。同時,Hive 繼承了分布式文件系統(tǒng)HDFS 的數(shù)據(jù)存儲性能,具有極優(yōu)秀的拓展性,適合對大量的高寒草地數(shù)據(jù)進(jìn)行存儲與處理。
(3)數(shù)據(jù)分析
一方面,基于海量數(shù)據(jù)的高寒草地退化評價需要對高寒草地實(shí)時監(jiān)測數(shù)據(jù)及海量歷史數(shù)據(jù)進(jìn)行批處理,而現(xiàn)有的技術(shù)往往難以保證數(shù)據(jù)批處理的效率,存在計算能力不強(qiáng)的問題,因此,需要提高對海量數(shù)據(jù)批處理分析的效率。另一方面,植被生長狀況、植被生產(chǎn)力和土壤侵蝕狀況等都需要經(jīng)過一系列復(fù)雜的分析和計算,然而通過簡單的分類、統(tǒng)計往往難以從海量高寒草地數(shù)據(jù)中獲取足夠的、有價值的信息,因此,需要提升系統(tǒng)的分析拓展能力,能夠通過編寫代碼或調(diào)用腳本的方式,完成代碼層面的拓展,滿足更新的分析需求。
本研究數(shù)據(jù)由多個渠道獲取,主要數(shù)據(jù)來源為青海省草原總站、青海湖流域生態(tài)環(huán)境綜合數(shù)據(jù)平臺等,結(jié)合國內(nèi)高寒草地研究領(lǐng)域的相關(guān)學(xué)術(shù)論文,以保證數(shù)據(jù)的真實(shí)性與數(shù)據(jù)處理的科學(xué)性。對于高寒草地退化,學(xué)者們主要從植被退化、土壤退化等方面進(jìn)行研究[1,15-19],參照相關(guān)研究內(nèi)容,本研究從生物量、植被類型、土壤、氣象、水文等因子考慮,進(jìn)行相關(guān)數(shù)據(jù)指標(biāo)的確定。通過走訪青海大學(xué)、青海省草原總站、青海省圖書館、青海省環(huán)境監(jiān)測中心站、青海省水土保持局、中國科學(xué)院西北高原生物研究所、青海省測繪地理信息局、青海省氣象局等單位,最終完成數(shù)據(jù)的搜集。完成數(shù)據(jù)搜集后,通過三個標(biāo)準(zhǔn)(表1)進(jìn)行數(shù)據(jù)的篩選。
表1 高寒草地數(shù)據(jù)搜集篩選標(biāo)準(zhǔn)Table 1 Data collection and selection criteria for alpine grassland
本系統(tǒng)的整體架構(gòu)分為數(shù)據(jù)源、數(shù)據(jù)存儲模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)應(yīng)用。各模塊功能如圖1所示。
圖1 系統(tǒng)整體架構(gòu)設(shè)計圖Figure 1 The overall system design diagram
數(shù)據(jù)源:系統(tǒng)搜集高寒草地海量科學(xué)數(shù)據(jù),對高寒草地生態(tài)、基礎(chǔ)環(huán)境、社會經(jīng)濟(jì)等各方面的信息進(jìn)行記錄。數(shù)據(jù)源為整個系統(tǒng)中最為基礎(chǔ)的模塊。本研究的數(shù)據(jù)分為高寒草地的歷史數(shù)據(jù)與草地實(shí)時監(jiān)測數(shù)據(jù)。歷史數(shù)據(jù)采用關(guān)系型數(shù)據(jù)庫進(jìn)行管理,為本系統(tǒng)提供原始數(shù)據(jù),這些原始數(shù)據(jù)通過草地普查資料、草地資源統(tǒng)計資料、草地工程項目資料等方式獲取,存儲于MySQL數(shù)據(jù)庫中;草地實(shí)時監(jiān)測數(shù)據(jù)主要通過各草地監(jiān)測站點(diǎn)、氣象監(jiān)測站點(diǎn)、水文監(jiān)測站點(diǎn)等監(jiān)測站點(diǎn)網(wǎng)絡(luò)動態(tài)監(jiān)測的數(shù)據(jù)匯總得到,主要包括監(jiān)測站信息、草地類型、生物量、氣象、水文。
數(shù)據(jù)存儲模塊:數(shù)據(jù)存儲模塊的功能主要由Hadoop 平臺完成,主要為HDFS、MapReduce、Hive 和Sqoop,各組件承擔(dān)起系統(tǒng)數(shù)據(jù)存儲的相應(yīng)功能。通過拓展并合理應(yīng)用以上組件,將海量數(shù)據(jù)導(dǎo)入Hive中,完成數(shù)據(jù)存儲。
數(shù)據(jù)分析模塊:數(shù)據(jù)存儲是系統(tǒng)的基礎(chǔ),對存儲于系統(tǒng)中的海量數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢和分析是本研究的重點(diǎn)之一。目前,已構(gòu)建排序函數(shù)、聚集函數(shù)、數(shù)據(jù)過濾模型等,用于高寒草地海量數(shù)據(jù)精細(xì)與復(fù)雜分析,以進(jìn)行決策輔助與狀態(tài)監(jiān)測。并且提供相應(yīng)易于控制與操作的用戶接口,使得非專業(yè)技術(shù)人員可以進(jìn)行管理與訪問。
數(shù)據(jù)應(yīng)用:本系統(tǒng)的開發(fā)是為基于海量數(shù)據(jù)的高寒草地退化評價服務(wù)的,旨在為高寒草地植被生長狀況、植被生長力、土壤侵蝕等高寒草地退化綜合評價提供相應(yīng)的技術(shù)支持,最終實(shí)現(xiàn)數(shù)據(jù)應(yīng)用。
基于Hadoop 的高寒草地海量數(shù)據(jù)處理平臺搭建過程主要包括以下三個方面:單節(jié)點(diǎn)配置、集群配置、Hadoop組件配置。主要的技術(shù)流程如圖2所示。
圖2 基于Hadoop的高寒草地海量數(shù)據(jù)處理平臺搭建流程Figure 2 The process of building a massive data processing platform for alpine grassland based on Hadoop
(1)單節(jié)點(diǎn)配置
選擇一臺計算機(jī)節(jié)點(diǎn)作為名稱節(jié)點(diǎn),其余的計算機(jī)節(jié)點(diǎn)作為數(shù)據(jù)節(jié)點(diǎn)。在每個節(jié)點(diǎn)上進(jìn)行系統(tǒng)環(huán)境的配置,安裝SSH(Secure Shell)登陸、安裝JAVA 并配置環(huán)境變量(本研究使用OpenJDK 1.7 作為JAVA環(huán)境)、選擇穩(wěn)定的Hadoop 2.7.3 版本進(jìn)行安裝,并通過命令行驗(yàn)證單節(jié)點(diǎn)配置是否完成。
(2)集群配置
集群配置的第一步是進(jìn)行網(wǎng)絡(luò)配置,確保集群內(nèi)所有節(jié)點(diǎn)處于同一局域網(wǎng)內(nèi)。第二步是通過SSH 配置無密碼登陸節(jié)點(diǎn),使得名稱節(jié)點(diǎn)可以無密碼SSH登陸到各數(shù)據(jù)節(jié)點(diǎn)上。第三步是通過修改配置文件完成集群環(huán)境配置。第四步是集群Hadoop 驗(yàn)證,并通過命令行或訪問Hadoop的Web 界面的方式驗(yàn)證集群搭建是否成功。
(3)Hadoop 組件配置
在完成Hadoop 集群配置后,需進(jìn)行Hive 環(huán)境及Sqoop 環(huán)境的部署。Hive 環(huán)境部署步驟如下:第一步是下載并解壓最新穩(wěn)定版本的Hive 源程序,本研究使用Hive 1.2.2;第二步是修改配置Hive 的PATH環(huán)境變量;第三步是修改Hive 的配置文件;第四步是選擇MySQL 作為Hive 的元數(shù)據(jù)庫而不是使用自帶的derby 元數(shù)據(jù)庫;第五步是啟用Hive,并測試驗(yàn)證是否安裝成功。Sqoop 環(huán)境部署步驟如下:第一步是下載并解壓最新穩(wěn)定版本的Sqoop 程序;第二步是修改Sqoop 的配置文件;第三步是配置Sqoop 的環(huán)境變量;第四步是將 MySQL 驅(qū)動包拷貝到SQOOP_HOME/lib;第五步是測試?yán)肧qoop 將遠(yuǎn)程數(shù)據(jù)導(dǎo)入Hive 是否成功。
ETL是英文Extract-Transform-Load 的縮寫,它定義為將數(shù)據(jù)從來源經(jīng)過抽取(Extract)、轉(zhuǎn)換(Transform)、加載(Load)到數(shù)據(jù)庫的過程。其主要的步驟包括:從數(shù)據(jù)源中獲取數(shù)據(jù),數(shù)據(jù)清洗以提高數(shù)據(jù)質(zhì)量,最終按照預(yù)先定義好的數(shù)據(jù)模型將數(shù)據(jù)加載到數(shù)據(jù)倉庫中。本研究從數(shù)據(jù)源獲取的草地實(shí)時監(jiān)測數(shù)據(jù)經(jīng)過數(shù)據(jù)預(yù)處理后,導(dǎo)入已設(shè)計完成的高寒草地生態(tài)數(shù)據(jù)表中,完成數(shù)據(jù)ETL處理。
(1)數(shù)據(jù)預(yù)處理
通過對源數(shù)據(jù)的分析,對源數(shù)據(jù)進(jìn)行基本的預(yù)處理,進(jìn)行數(shù)據(jù)填充[20]的操作,將得到的數(shù)據(jù)從Excel格式轉(zhuǎn)換為文本文件格式進(jìn)行存儲,每條高寒草地數(shù)據(jù)中的字段用制表符分隔,每條記錄用換行符分隔,以適應(yīng)HDFS的存儲方式,方便導(dǎo)入Hive中。
本研究以2012—2014 年部分草地監(jiān)測統(tǒng)計數(shù)據(jù)中完整的生物量數(shù)據(jù)為例,進(jìn)行數(shù)據(jù)填充預(yù)處理,具體數(shù)據(jù)如表2 所示,共8 個字段,69 條記錄。對該完整數(shù)據(jù)集中的紫花針茅和矮火絨草兩個字段各隨機(jī)去除6 個數(shù)據(jù),構(gòu)建完全隨機(jī)缺失數(shù)據(jù)集(Missing completely at random,MCAR),數(shù)據(jù)缺失率略低于10%。由于樣方之間聯(lián)系緊密,且數(shù)據(jù)缺失率不高,因此,選用EM 算法[21](Expectation-Maximum,也稱期望最大化算法)對構(gòu)建缺失數(shù)據(jù)集進(jìn)行填充。
表2 草地鮮草質(zhì)量樣例預(yù)處理數(shù)據(jù)Table 2 Sample data of fresh grass weight for data preprocessing
通過EM 算法對缺失的草地生物量樣例數(shù)據(jù)進(jìn)行填充,并對填充后數(shù)據(jù)集與完整數(shù)據(jù)集進(jìn)行平均絕對誤差[22]、平均相對誤差[23]、最大絕對誤差[24]、均方根誤差[25-26]等四個指標(biāo)的對比,填充結(jié)果見表3和表4。
從紫花針茅字段的三組缺失數(shù)據(jù)填充結(jié)果(表3)來看,三組填充結(jié)果的平均絕對誤差第一組最高,第三組次之,第二組最低,與之相對應(yīng)的第一組平均相對誤差最高,達(dá)到了39.12%,第二組、第三組分別為16.53%、26.81%。在最大絕對誤差方面,第一組為25.91%,也遠(yuǎn)高于第二組、第三組。從表3可知,第一組的平均相對誤差較大,說明第一組填充值與真實(shí)值之間的偏差與真實(shí)值的比值較大,原因是所構(gòu)建的缺失數(shù)據(jù)集的缺失率不高,當(dāng)?shù)谝唤M出現(xiàn)最大絕對誤差達(dá)到25.91%的數(shù)據(jù)時,對整個數(shù)據(jù)集的填充造成比較大的影響。在反映數(shù)據(jù)填充精密度的均方根誤差上,第一組最大,為12.34%,第二組最小,為2.30%,說明第一組的填充值與真實(shí)值之間的離散程度更高。
表3 紫花針茅三組缺失數(shù)據(jù)填充結(jié)果(%)Table 3 Filling results of three groups of missing data of Stipa purpurea(%)
從矮火絨草字段的三組缺失數(shù)據(jù)填充結(jié)果(表4)來看,三組填充結(jié)果的平均絕對誤差第二組、第三組較為接近,分別為11.72%、11.01%,第一組相對其他兩組更低,說明單個填充值與真實(shí)值之間的偏差不大。三組填充結(jié)果的平均相對誤差值都不高,說明三組數(shù)據(jù)填充整體效果較好,數(shù)據(jù)可信度較高。在最大絕對誤差方面,第二組、第三組均比第一組的值更高,這一特點(diǎn)同樣在均方根誤差上有所反映,第二組、第三組的均方根誤差比第一組的值高,這是由于均方根誤差對第一組值中較大或較小的誤差較為敏感。由于不同樣方、不同樣地的生長條件不同,紫花針茅和矮火絨草生物量的真實(shí)值間也存在差異,因此這三組數(shù)據(jù)填充的最大絕對誤差較大。
表4 矮火絨草三組缺失數(shù)據(jù)填充結(jié)果(%)Table 4 Filling results of three groups of missing data of Edelweiss dwarf(%)
一般來說,平均相對誤差更能反映數(shù)據(jù)填充的可信程度,平均相對誤差的值越小,數(shù)據(jù)填充效果越好[23]??傮w而言,相較于孫華艷等[27]和熊秋芬等[28]研究中的數(shù)據(jù)精度,紫花針茅和矮火絨草字段數(shù)據(jù)填充結(jié)果的平均相對誤差都較低,說明數(shù)據(jù)填充效果較好,數(shù)據(jù)預(yù)處理可信度較高。
(2)導(dǎo)入數(shù)據(jù)
把數(shù)據(jù)預(yù)處理之后得到的結(jié)構(gòu)化數(shù)據(jù)映射為數(shù)據(jù)庫表,導(dǎo)入Hive 數(shù)據(jù)倉庫內(nèi)。21 世紀(jì)以來,針對高寒草地生態(tài)變遷與退化的特性,我國在高寒區(qū)域廣泛、連續(xù)地開展草地生態(tài)系統(tǒng)的監(jiān)測活動,形成了一系列完整的生態(tài)監(jiān)測站網(wǎng)體系,在這個過程中也累積了海量的歷史數(shù)據(jù),并產(chǎn)生了不斷更新的實(shí)時監(jiān)測數(shù)據(jù)[5,29]。
對于海量的歷史數(shù)據(jù)與實(shí)時監(jiān)測數(shù)據(jù),本研究采用不同的處理方式導(dǎo)入Hive 中,完成數(shù)據(jù)的存儲。對于海量的歷史數(shù)據(jù),使用Sqoop 從MySQL 關(guān)系型數(shù)據(jù)庫中導(dǎo)入到Hive。將海量歷史數(shù)據(jù)導(dǎo)入到Hive 中的方法建立在已經(jīng)搭建完成Sqoop 的使用環(huán)境。首先通過Sqoop list database 命令定位到在Hive 中需要導(dǎo)入數(shù)據(jù)的數(shù)據(jù)庫;然后篩選所需要的表及其相關(guān)的字段、屬性;最后通過Sqoop import命令將數(shù)據(jù)導(dǎo)入到Hive 中。而對于實(shí)時監(jiān)測數(shù)據(jù),導(dǎo)入Hive 通常有兩種方法:①直接從本地加載數(shù)據(jù)到Hive 數(shù)據(jù)倉庫中,適用于數(shù)據(jù)量不大的情況;②數(shù)據(jù)文件導(dǎo)入Hadoop的分布式文件系統(tǒng)HDFS 中,再利用Hive 命令將數(shù)據(jù)從HDFS 中加載至Hive,適用于數(shù)據(jù)量較大的情況。本研究使用方法②將結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入草地類型主題表中指定的分區(qū)內(nèi)。
(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計
根據(jù)表1 的標(biāo)準(zhǔn),最終確定高寒草地關(guān)注度較高的數(shù)據(jù):監(jiān)測站信息、草地類型數(shù)據(jù)、生物量數(shù)據(jù)、氣象數(shù)據(jù)、水文數(shù)據(jù)。根據(jù)以上數(shù)據(jù)內(nèi)容對數(shù)據(jù)存儲進(jìn)行設(shè)計,歸納為以下5 個表:site_information、grasstype_data、biomass_data、meteorological_data、hydrological_data,主要的數(shù)據(jù)類型為string、int、float、date。本文以水文數(shù)據(jù)表(表5)為例進(jìn)行數(shù)據(jù)結(jié)構(gòu)設(shè)計。
表5 水文數(shù)據(jù)表字段Table 5 Hydrological data table fields
(2)數(shù)據(jù)存儲分區(qū)設(shè)計
創(chuàng)建高寒草地數(shù)據(jù)庫,設(shè)計高寒草地生態(tài)數(shù)據(jù)表,本文以草地類型數(shù)據(jù)表為例進(jìn)行描述。本研究使用分區(qū)的方法對高寒草地數(shù)據(jù)表進(jìn)行設(shè)計,主要原因如下:①由于Hive 適合對數(shù)據(jù)進(jìn)行批量處理,在處理單條數(shù)據(jù)時較慢,每一次數(shù)據(jù)查詢都要對數(shù)據(jù)倉庫中所有的數(shù)據(jù)進(jìn)行檢索,因此,通過對數(shù)據(jù)表進(jìn)行分區(qū)優(yōu)化可以達(dá)到隔離數(shù)據(jù)和優(yōu)化查詢的目的;②采用分區(qū)的方法可以建立多維度的數(shù)據(jù)模型,在分析數(shù)據(jù)時可以選擇不同的維度對數(shù)據(jù)進(jìn)行處理。具體的分區(qū)如下。
時間:對于任何數(shù)據(jù)源的任何數(shù)據(jù),時間都是一個很重要的屬性,對于高寒草地的數(shù)據(jù)來說,時間是最必要、最基本的維度。本研究從歷史數(shù)據(jù)庫中導(dǎo)入日積月累的數(shù)據(jù),同時也導(dǎo)入草地實(shí)時監(jiān)測的更新數(shù)據(jù),以保持系統(tǒng)的可靠性,因此,以時間為標(biāo)準(zhǔn)進(jìn)行分區(qū)很有必要。
地域:考慮高寒草地數(shù)據(jù)主要從監(jiān)測站點(diǎn)或者草地樣方監(jiān)測得到,本研究將高寒草地的數(shù)據(jù)以監(jiān)測站點(diǎn)所在行政單位的行政區(qū)劃代碼為分區(qū)依據(jù),同一行政區(qū)的所有草地監(jiān)測數(shù)據(jù)被放在同一個分區(qū)之內(nèi),使得對于某個特定行政區(qū)內(nèi)的數(shù)據(jù)進(jìn)行查詢和分析時,只需掃描分區(qū)內(nèi)的數(shù)據(jù)。
來源:本系統(tǒng)的數(shù)據(jù)來源為青海省草原總站、青海省環(huán)境監(jiān)測中心站、青海省氣象局等部門,為了區(qū)分?jǐn)?shù)據(jù)來源,將數(shù)據(jù)來源作為分區(qū)的標(biāo)準(zhǔn)。
高寒草地的數(shù)據(jù)主要由科學(xué)實(shí)地考察或者監(jiān)測站點(diǎn)定時監(jiān)測獲得,因此,本研究通過以數(shù)據(jù)測定的監(jiān)測站所在行政單位的行政區(qū)劃代碼為分區(qū)依據(jù),使得對于某個特定行政區(qū)內(nèi)的數(shù)據(jù)進(jìn)行查詢和分析時,只需掃描分區(qū)內(nèi)的數(shù)據(jù),避免對所有數(shù)據(jù)進(jìn)行檢索,從而大幅提升數(shù)據(jù)查詢與分析的效率。另外,可以根據(jù)實(shí)際工作的需求,調(diào)整“分區(qū)”的劃分,如以時間、來源、海拔等條件進(jìn)行分區(qū)也是常用的選擇。
數(shù)據(jù)分析的目的是根據(jù)高寒草地數(shù)據(jù)的具體內(nèi)容,通過本系統(tǒng)的數(shù)據(jù)處理過程,將處理結(jié)果進(jìn)行保存并展示。根據(jù)高寒草地工作中的具體需求,本研究設(shè)計并實(shí)現(xiàn)以下幾類數(shù)據(jù)查詢與數(shù)據(jù)分析的函數(shù)。
(1)數(shù)據(jù)查詢
數(shù)據(jù)查詢是通過設(shè)置某些查詢條件,從表或其他查詢中選取全部或者部分?jǐn)?shù)據(jù),以表的形式顯示數(shù)據(jù)供用戶瀏覽。系統(tǒng)主要提供精確查詢、模糊查詢、表關(guān)聯(lián)查詢等基本數(shù)據(jù)查詢方式,以從海量高寒草地數(shù)據(jù)中找到所需記錄。
(2)數(shù)據(jù)分析
根據(jù)Hive 的特性及高寒草地海量數(shù)據(jù)的特點(diǎn),本研究設(shè)計以下數(shù)據(jù)分析的函數(shù)用于處理高寒草地海量數(shù)據(jù),主要包括:排序聚集函數(shù)、極限函數(shù)、嵌套函數(shù)、分片函數(shù)等。
嵌套函數(shù):本研究構(gòu)建嵌套函數(shù),通過設(shè)計相關(guān)的嵌套查詢語句查找每個水文監(jiān)測站每年的最高徑流量的均值。
分片函數(shù):本研究通過構(gòu)建分片函數(shù)進(jìn)行數(shù)據(jù)分析,下文為水文數(shù)據(jù)分析示例。
(1)查看系統(tǒng)執(zhí)行計劃
在執(zhí)行完成查詢分析處理后,可以通過explain關(guān)鍵字查看執(zhí)行查詢計劃的詳細(xì)信息,包括抽象語法樹、Hive 執(zhí)行各階段之間的依賴圖、執(zhí)行語句所對應(yīng)的MapReduce代碼及每個階段的信息,以上信息有助于對查詢分析處理進(jìn)行調(diào)優(yōu),更加高效地使用Hive。
(2)數(shù)據(jù)分析結(jié)果保存
在完成數(shù)據(jù)查詢分析處理后,需要對分析結(jié)果進(jìn)行保存以便日后調(diào)用。由于經(jīng)過分析查詢得到的結(jié)果往往是經(jīng)過篩選的數(shù)據(jù)或經(jīng)計算得到的成果,因此數(shù)據(jù)量不會太大。為了方便使用,本系統(tǒng)使用insert overwrite local directory 語句將得到的結(jié)果保存在本地系統(tǒng),方便查看。在完成保存結(jié)果后,可以通過shell 語句調(diào)用vim 或者gedit 文本編輯器對數(shù)據(jù)處理結(jié)果進(jìn)行查看。
利用已經(jīng)實(shí)現(xiàn)的基于Hive 高寒草地海量數(shù)據(jù)分析系統(tǒng),分析其整體運(yùn)行的情況,并通過設(shè)計三組實(shí)驗(yàn)的方式,對系統(tǒng)各項主要性能進(jìn)行測試,了解本系統(tǒng)是否能滿足高寒草地海量生態(tài)數(shù)據(jù)存儲與分析的需求,得出本系統(tǒng)在處理海量數(shù)據(jù)方面的性能特點(diǎn)。本文對開展的三個實(shí)驗(yàn)進(jìn)行說明。
(1)第一組實(shí)驗(yàn)
為了驗(yàn)證Hadoop 平臺是否對海量數(shù)據(jù)的存儲有很好的適應(yīng)性,本研究使用Hadoop 的基準(zhǔn)測試工具TestDFSIO 測試Hadoop 平臺的文件讀寫性能。通過TestDFSIO 工具,改變系統(tǒng)存儲與讀取文件的文件大小、文件數(shù)量,獲取總運(yùn)行時間和平均運(yùn)行時間,以對集群的性能進(jìn)行評價。控制文件數(shù)量為10,文件大小從5 MB 增加到500 MB,對系統(tǒng)的讀寫性能進(jìn)行測試,獲取總運(yùn)行時間和平均運(yùn)行時間,對系統(tǒng)的大小、文件讀寫性能進(jìn)行評價??紤]到單次實(shí)驗(yàn)的偶然性,本研究進(jìn)行了3 次實(shí)驗(yàn)取其平均值,實(shí)驗(yàn)結(jié)果如圖3和圖4所示。
圖3 Hadoop平臺的存儲數(shù)據(jù)文件與運(yùn)行時間之間的關(guān)系折線圖Figure 3 The line graph of the relationship between the stored data files and the running time of the Hadoop platform
圖4 Hadoop平臺的讀取數(shù)據(jù)文件大小與運(yùn)行時間之間的關(guān)系折線圖Figure 4 The line graph of the relationship between the size of the read data file and the running time of the Hadoop platform
圖3 是數(shù)據(jù)規(guī)模的變化對系統(tǒng)存儲數(shù)據(jù)文件與運(yùn)行時間的影響。由圖3 可知,隨著文件大小的增加和總體數(shù)據(jù)規(guī)模的增大,系統(tǒng)的總運(yùn)行時間一直呈增長的狀態(tài),但是平均運(yùn)行時間(平均寫1 MB數(shù)據(jù)所使用的時間)呈降低的趨勢??傔\(yùn)行時間在文件大小高于100 MB 后,有非常明顯的拐點(diǎn)且以更高的斜率上升,這與數(shù)據(jù)量的增加有關(guān),說明系統(tǒng)對于大數(shù)據(jù)量的存儲具有良好的性能。
圖4是數(shù)據(jù)規(guī)模的變化對系統(tǒng)讀取數(shù)據(jù)文件與運(yùn)行時間的影響。由圖4 可知,隨著文件大小的增加和總體數(shù)據(jù)規(guī)模的增大,系統(tǒng)的總運(yùn)行時間一直呈增長的狀態(tài),但是平均運(yùn)行時間呈降低的趨勢,說明隨著數(shù)據(jù)量的增加,系統(tǒng)讀取海量數(shù)據(jù)的能力也增強(qiáng)。
以上說明隨著數(shù)據(jù)量的增加,系統(tǒng)并行處理海量數(shù)據(jù)的能力得到體現(xiàn)。因此,Hadoop 集群對高寒草地海量數(shù)據(jù)的存儲有很好的適應(yīng)性。
(2)第二組實(shí)驗(yàn)
為了解Hive 在分析海量高寒草地數(shù)據(jù)方面的效率,本研究對Hive 以及關(guān)系型數(shù)據(jù)庫RDBMS 對數(shù)據(jù)處理的性能進(jìn)行對比。測試數(shù)據(jù)采用2014 年青海省稱多縣草地樣方監(jiān)測數(shù)據(jù)和部分虛擬數(shù)據(jù),總數(shù)據(jù)量約為3 958 萬條,7.56 GB。對此數(shù)據(jù)采用SQL Server 2008 與Hive 集群進(jìn)行字段“植物種類”中的查詢處理,得到數(shù)據(jù)處理性能的對比??紤]到單次實(shí)驗(yàn)的偶然性,每組實(shí)驗(yàn)進(jìn)行三次處理并取平均值得到最后結(jié)果。實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 高寒草地分析數(shù)據(jù)的數(shù)據(jù)量與運(yùn)行時間關(guān)系折線圖Figure 5 The line graph of the relationship between the data volume and the running time of the analysis of alpine grassland data
實(shí)驗(yàn)結(jié)果表明,當(dāng)數(shù)據(jù)量較小的時候,RDBMS 的處理效率更高,本系統(tǒng)并行處理效率沒有體現(xiàn),但隨著數(shù)據(jù)量的增大,當(dāng)數(shù)據(jù)量超過350 萬條后,本系統(tǒng)處理效率逐漸超過RDBMS,Hive 處理海量數(shù)據(jù)的優(yōu)勢十分明顯。這是由于本系統(tǒng)是建立在Hadoop 平臺上的數(shù)據(jù)批處理技術(shù),集群對環(huán)境的初始化、任務(wù)調(diào)度及數(shù)據(jù)傳輸耗時較長,但當(dāng)數(shù)據(jù)規(guī)模逐漸增大時,這些額外耗時基本穩(wěn)定,額外耗時所占比例減少,本系統(tǒng)對海量數(shù)據(jù)的分析優(yōu)勢得以體現(xiàn)。實(shí)驗(yàn)證明,本系統(tǒng)對高寒草地海量數(shù)據(jù)的分析效率較高。
(3)第三組實(shí)驗(yàn)
在創(chuàng)建基于Hive 的高寒草地生態(tài)數(shù)據(jù)倉庫后,可以通過HiveQL 對高寒草地生態(tài)數(shù)據(jù)進(jìn)行分析處理,從海量數(shù)據(jù)中獲取有用信息。為了驗(yàn)證本系統(tǒng)對海量數(shù)據(jù)的分析處理能力,開展第三組實(shí)驗(yàn),實(shí)驗(yàn)采用2000—2015 年青海省草地類型數(shù)據(jù),從中統(tǒng)計青海省東南部三縣2007—2014 年的主要草地類型及其營養(yǎng)枝與生殖枝高度,通過本系統(tǒng)分析處理之后得到的結(jié)果如圖6 所示。主要植物種類為:早熟禾、火絨草、高山嵩草、蒲公英、龍膽、苔草、馬先蒿,其中早熟禾與蒲公英的營養(yǎng)枝、生殖枝高度較高,火絨草與高山嵩草高度較低。
圖6 Hive系統(tǒng)數(shù)據(jù)分析處理結(jié)果Figure 6 Data analysis and processing results of the Hive system
為了驗(yàn)證以上數(shù)據(jù)分析結(jié)果的正確性,本研究開展相應(yīng)的對照實(shí)驗(yàn)。首先從2000—2015 年青海省草地類型數(shù)據(jù)中篩選出2007—2014 年數(shù)據(jù),再從中篩選出研究區(qū)的數(shù)據(jù)。然后,通過多次使用計數(shù)函數(shù)的方法統(tǒng)計各草地類型出現(xiàn)的頻次,并對其進(jìn)行排序,提取研究區(qū)最主要的草地類型。之后,分別計算每種草地類型的營養(yǎng)枝與生殖枝的高度,結(jié)果見圖7。最后,將Hive 數(shù)據(jù)分析技術(shù)得到的結(jié)果與對照實(shí)驗(yàn)結(jié)果進(jìn)行比對,發(fā)現(xiàn)兩組處理結(jié)果相同。因此,實(shí)驗(yàn)證明,基于Hive 的數(shù)據(jù)分析技術(shù)可以從海量高寒草地生態(tài)數(shù)據(jù)中提取有效信息,分析效率較高,分析結(jié)果對于草地退化評價和草地生態(tài)保護(hù)等工作都具有較好的指導(dǎo)意義。
圖7 對照實(shí)驗(yàn)數(shù)據(jù)分析處理結(jié)果Figure 7 Data analysis and processing results of control experiments
為了測試本系統(tǒng)能否滿足高寒草地海量數(shù)據(jù)存儲與分析的需求,一共進(jìn)行3 組實(shí)驗(yàn),結(jié)果表明:①基于Hadoop的集群面對數(shù)據(jù)量增加時,整體并行處理能力得到體現(xiàn),集群對海量數(shù)據(jù)的存儲、讀取都有很好的適應(yīng)性。②Hive 系統(tǒng)對高寒草地海量數(shù)據(jù)進(jìn)行處理時,相較RDBMS 方法具有更高的分析效率。③對照試驗(yàn)表明,Hive系統(tǒng)可以從海量高寒草地數(shù)據(jù)中提取有效信息。綜上,Hive系統(tǒng)在對海量高寒草地數(shù)據(jù)進(jìn)行存儲和數(shù)據(jù)分析方面具有良好的性能,能夠有效滿足高寒草地海量數(shù)據(jù)的存儲與分析要求。
根據(jù)高寒草地數(shù)據(jù)存儲的需要,本研究搭建基于Hadoop 的高寒草地海量數(shù)據(jù)處理平臺。使用基于Hive的分布式數(shù)據(jù)倉庫技術(shù)進(jìn)行結(jié)構(gòu)化數(shù)據(jù)的存儲,使用HiveQL 語句對數(shù)據(jù)進(jìn)行分析。通過使用EM 算法進(jìn)行數(shù)據(jù)填充、數(shù)據(jù)導(dǎo)入、數(shù)據(jù)分區(qū)存儲等步驟完成數(shù)據(jù)ETL及存儲。之后,通過函數(shù)編碼實(shí)現(xiàn)系統(tǒng)內(nèi)各查詢功能、分析功能,將數(shù)據(jù)分析結(jié)果進(jìn)行后置處理,完成高寒草地海量數(shù)據(jù)分析。最后,進(jìn)行系統(tǒng)性能測試。主要結(jié)論如下:
(1)Hadoop 平臺具有較強(qiáng)的數(shù)據(jù)存儲和讀取性能。在文件數(shù)量為10 個,每個文件大小增加時,總體數(shù)據(jù)規(guī)模增大,系統(tǒng)整體存儲、讀取時間一直處于增長的狀態(tài),但是平均運(yùn)行時間(平均處理1 MB數(shù)據(jù)所使用的時間)呈降低的趨勢。說明隨著數(shù)據(jù)量的增加,系統(tǒng)并行處理海量數(shù)據(jù)的能力得到體現(xiàn)。
(2)基于Hive的高寒草地數(shù)據(jù)分析系統(tǒng)對不斷增長的海量數(shù)據(jù)具有較好的并行處理能力,并在查詢的數(shù)據(jù)量超過350萬條時,查詢效率比SQL Server更高。
研究結(jié)果對高寒草地海量數(shù)據(jù)的存儲和分析提供了新的思路及可行的方法,且能夠滿足實(shí)際應(yīng)用的需求,對高寒草地海量數(shù)據(jù)的可靠存儲和高效分析具有重要意義。
本研究初步設(shè)計完成基于Hive 的高寒草地海量數(shù)據(jù)分析系統(tǒng),主要的功能均已實(shí)現(xiàn),相較于傳統(tǒng)的Oracal、Mysql 技術(shù)具有拓展性能更強(qiáng)、計算效率更高的優(yōu)勢。但還有許多工作需要進(jìn)一步研究和探討,具體如下:
(1)系統(tǒng)功能的拓展
本系統(tǒng)的數(shù)據(jù)查詢、數(shù)據(jù)分析功能是基于Hive進(jìn)行設(shè)計實(shí)現(xiàn)的,通過對Hive 的特性研究了解到,仍有許多拓展性的技術(shù)有待開發(fā)應(yīng)用于高寒草地海量數(shù)據(jù)分析系統(tǒng)。可以通過編寫更多的用戶定義函數(shù)(UDF),并在數(shù)據(jù)查詢分析的時候調(diào)用,完成系統(tǒng)拓展,使得系統(tǒng)功能更豐富與強(qiáng)大。
(2)可視化交互界面
本系統(tǒng)目前由專業(yè)程序員使用,考慮到成本及開發(fā)時間因素,暫時沒有提供可視化用戶交互界面。因?yàn)楹芏嗟南到y(tǒng)功能仍可進(jìn)行拓展,目前的主要工作目標(biāo)仍放在完善系統(tǒng)功能上,在系統(tǒng)運(yùn)行過程中并未提供用戶交互界面,因此,設(shè)計美觀大方的系統(tǒng)可視化界面將是未來研究的一個重點(diǎn)。
(3)未來的研究方向
本系統(tǒng)是搭建在Hadoop 分布式計算框架上,通過對Hive 數(shù)據(jù)倉庫工具進(jìn)行開發(fā)實(shí)現(xiàn)的,Hive 只是本研究應(yīng)用的所屬于Hadoop 的其中一個工具,而在Hadoop 生態(tài)系統(tǒng)中仍有許多工具有待研究以應(yīng)用于高寒草地數(shù)據(jù)的存儲分析。HBase 可以用于高寒草地多源異構(gòu)海量數(shù)據(jù)的存儲,研究重點(diǎn)可放在基于HBase 對矢量空間數(shù)據(jù)并行存儲和查詢或者基于HBase 對遙感影像進(jìn)行多維度并行存儲。