【摘要】數據已經滲透到當今每一個行業和業務職能領域,成為重要的生產因素。人們對于海量數據的挖掘和運用,預示著新一波生產率增長浪潮的到來。 我國已經全面進入大數據時代,我國已經進入了大數據時代, 大數據(Big data)通常指行業業務所創造的大量非結構化和半結構化數據,這些數據在下載到關系型數據庫用于分析時會花費過多時間和金錢。水文行業作為水利系統數據核心,經過近幾十年的自動化建設及數據監測,獲得了大量豐富的數據,形成了大量分析成果,但距離大數據的應用和認識還存在著巨大的差異。
【關鍵詞】分布式key-value;水文大數據;可信存儲
尤其是近幾年,國家大力投入水利基礎行業建設,不僅水文遙測站點、山洪預警站點、墑情站點大量投入使用,監測的項目大大增加,隨著自動化遙測遙感技術的廣泛應用,監測頻率也極大提高,可以說近幾年各水文測站監測到的水文數據量,甚至比建國以來至2010年所有的水文數據量還要巨大。
水文遙測遙感數據具備集中式高并發,報文小、條數多的特點,如何滿足低延時、高并發、高吞吐量的水文數據接收及可信存儲要求,成為擺在我們面前的問題。針對水文大數據的特點,我們設計了一個分布式key-value可信存儲系統。
1、設計思路
為了節約成本,充分利舊,利用現有的單機存儲系統,在其上增加自動化運維、數據自動分布的功能,考慮到目前的需求具有一定的特殊性,那就是單個庫的尺寸不大,可以假設能夠完全存放在一臺機器上,系統維護的最小單元是一個完整的庫,這使得問題簡化了很多,工作量也隨之減小。結合實際需求和開發熟練程度,我們選用了mysql作為存儲引擎。整個系統由四個部分組成:
存儲服務:負責數據的存儲,每個存儲服務負責存儲多個庫,對外提供更新、查詢服務,所有的庫增加、刪除信息來自元數據管理服務,更新信息來自更新控制服務。
元數據管理服務:負責庫的管理,這里記錄了所有的庫信息。
更新控制服務:負責庫的更新,接受來自外部的更新命令,向庫的所有副本發送更新命令,更新控制服務揉合了傳統cm和傳輸的功能,這是因為更新控制服務需要支持動態的增加庫和庫的副本的功能,這樣也更加容易支持級聯傳輸的功能。在本系統中,為了保證命令的時序性,一個庫的更新命令只由一組更新控制服務來負責。
仲裁控制器:用于支持自動化單點切換。
2、可信存儲總體架構
元數據管理有三臺機器,同一時刻只有其中一個是主庫并對外提供服務,主庫所做的所有修改均發送到兩個從庫,并且等待到某個從庫返回成功。如果主庫宕機,則由仲裁控制器發起一次投票,決定新的主庫。數據更新服務主從備份機制與元數據管理服務相似,不同之出在于,其備份采用非實時方式。
3、自動化運維設計
自動化線上運維,應該避免手工OP,包括庫橫向擴展、單點切換、數據修復、新增節點等。
單點切換:引入自動化的單點切換機制,提高其可維護性,在系統中元數據服務器和更新服務器都是單點,都需要支持單點切換機制,每個單點模塊都有至少三個備份。單點備份分為實時和非實時兩種類型,實時備份可以保證數據不丟失但效率較低,非實時備份僅僅能保證數據的一致性,有可能丟失數據,但效率高。在系統中元數據管理服務的備份采用實時方式,存儲服務的備份采用非實時方式。
橫向擴展:支持自動化的新增副本,其過程是:停止某個副本的更新,由該副本自我拷貝一份到一臺新的機器,隨后在chunk-server增加向該機器上的庫發送更新命令。這個過程由元數據管理服務控制,不需要外部介入。
損壞數據修復:采取刪除壞庫、新增副本的方式完成壞數據修復。數據損壞通常由宕機引發,一臺機器宕機,OP只需要將該機器從系統中刪除,這臺機器上的庫自動的會被刪除,需要新增的副本會自動的分布到其他機器上。
宕機處理:宕機處理分為單點模塊處理和非單點模塊處理,對于單點模塊,如果宕機數量少于系統能夠正常工作的界限,則修復后再加入系統即可,如果宕機數量過多導致系統無法正常工作,則由OP介入。對于非單點模塊,如果發生宕機,則由OP向系統發送刪除機器命令,由系統完成其余工作。
負載均衡:負載均衡包括庫的分布調整、根據訪問量增加、減少庫的副本數量。負載均衡由元數據管理服務完成,元數據管理服務記錄每個庫的所有副本的訪問量。
4、工作效率設計:
數據存儲采用MYSQL引擎,其效率由單機上存儲的數據量決定,我們將盡可能減少機器上的庫分布,以提高執行效率。數據存儲采用追加寫的策略,需要定期進行重寫以回收空間,空閑空間的回收有兩種方式:1、在本機完成定期空間重整;2、利用系統增加/刪除副本的功能,將一個需要重整的庫副本重新寫入一臺新機器,將舊庫刪除,完成重整工作。項目啟示階段單庫的數據量不大,采用本機定期空間重整,在重寫的時候控制速度,以避免重寫對整機造成的影響。
5、具體應用和實施
根據水文信息化系統的網絡現狀,目前、部信息中心、各省水文局、地市勘測局
已經建成了水利專網,我們可在部信息中心、各省水文局、地市勘測局分布部署至少三臺存儲服務節點,即可保證同一時刻只有主庫并對外提供高可信存儲服務。
隨著水文網絡規模建設的高速發展,水文觀測數據管理、再分析資料管理、數值預報管理、非結構化資料管理(衛星云圖管理、雷達數據管理、傳真圖管理、報文資料管理)、統計數據管理、分析預報保障產品管理、背景信息管理、遙感數據管理、地理信息數據管理、元數據管理會越來越龐大,采用基于分布式key-value數據庫技術,利用其高存儲、高可用、高擴展等特點對海量氣象水文和地理數據進行存儲,同時利用對大數據隨機讀寫訪問、可擴展、多版本等特點,對水文數據和地理信息數據進行分類存儲和管理。