基于hadoop的海量瓦片小文件存儲管理方法
【技術領域】
[0001] 本發(fā)明涉及hadoop分布式平臺上進行柵格數(shù)據(jù)存儲管理方法,特別是海量、多 源、多版本柵格小文件的存儲管理方法。
【背景技術】
[0002] 隨著GIS技術的快速發(fā)展,地圖數(shù)據(jù)急劇增長,相應的瓦片數(shù)據(jù)量大、數(shù)據(jù)源多、 版本多,如何高效存儲管理海量地圖瓦片數(shù)據(jù)成為難題。
[0003] 云計算的出現(xiàn)提供了一個新的思路。近幾年來,為了解決大規(guī)模數(shù)據(jù)的存儲和管 理的問題,許多公司和機構(gòu)提出了一系列基于"云計算"技術的可擴展的大規(guī)模數(shù)據(jù)管理方 案。目前主流的開源項目Hadoop是一個包含了海量數(shù)據(jù)存儲和計算的分布式系統(tǒng)架構(gòu),可 以在廉價PC Server上部署大規(guī)模結(jié)構(gòu)化存儲的集群。
[0004] 目前已有較多針對小文件數(shù)據(jù)存儲和管理的研宄,并已提出了一系列解決方法, 這些方法中普遍采用的是對小文件進行合并成大文件,再使用分層索引的方法來管理這些 合并后的大文件。
[0005] 專利號為CN201310398165. 4公開了一種海量瓦片數(shù)據(jù)的存儲方法及讀取方法, 該方法根據(jù)獲取的瓦片數(shù)據(jù)的分層信息生成一級索引文件的數(shù)據(jù)塊;將一級索引文件的數(shù) 據(jù)塊進一步劃分為數(shù)據(jù)網(wǎng)格,得到每個單元格在數(shù)據(jù)塊中的位置坐標;根據(jù)位置坐標和分 塊信息生成對應瓦片數(shù)據(jù)的二級索引文件;按照先到先存的方式將瓦片數(shù)據(jù)存儲;在每次 進行目標瓦片數(shù)據(jù)存儲寫入時,將對應生成的一級索引文件和二級索引文件存儲。
[0006] 這種技術方案存在以下缺點: (1) 現(xiàn)有的小文件存儲和管理方法多基于分層索引來管理數(shù)據(jù),分層索引帶來的問題 是要額外耗費精力來開發(fā)一種Hadoop集群小文件存儲機制來保證小文件合并后的塊文件 索引與對應的這個塊一起傳輸?shù)酵粋€DataNode的同一位置,實現(xiàn)小文件合并后的塊文 件索引的分布式存儲,Hadoop集群中的NameNode也需要額外消耗資源來管理索引文件,增 加內(nèi)存開銷; (2) 在項目應用中可能存在數(shù)據(jù)源多樣,多版本的瓦片文件,分層索引的方法并不適用 于多數(shù)據(jù)源和多版本的小文件的快速和高效讀?。?(3)項目存在大量原始數(shù)據(jù)和頻繁的實時數(shù)據(jù)請求,現(xiàn)有方案沒有專門針對數(shù)據(jù)傳輸 和數(shù)據(jù)處理進行優(yōu)化,將影響項目運行時的數(shù)據(jù)傳輸和數(shù)據(jù)響應性能表現(xiàn)。
【發(fā)明內(nèi)容】
[0007] 有鑒于此,本發(fā)明提出了一種基于hadoop的海量瓦片小文件存儲管理方法,不用 額外開發(fā)Hadoop集群存儲機制,利用Hadoop本身自帶的功能來存儲和管理小文件。該方 法針對海量、多源、多版本柵格小瓦片提供高效存儲、快速讀取及高性能柵格數(shù)據(jù)服務。本 發(fā)明還對標準TMS (Tile Map Service)進行改進,解決傳輸原始數(shù)據(jù)和應對實時數(shù)據(jù)處理 請求造成的延遲與帶寬占用,以滿足項目數(shù)據(jù)檢索與傳輸要求。
[0008] 本發(fā)明采用以下技術方案實現(xiàn):一種基于hadoop的海量瓦片小文件存儲管理方 法,其特征在于:包括以下步驟:步驟S1:對欲存儲的文件的大小進行判斷,如果單個文件 小于20M的將其進行序列化壓縮再入庫存儲,如果單個文件大于等于20M就直接入庫存儲; 步驟S2 :引入了希爾伯特曲線對存儲的文件進行排序;步驟S3 :對存儲的文件進行壓縮及 生成瓦片索引信息;步驟S4 :對瓦片文件進行分類、命名;步驟S5 :建立瓦片信息索引表; 步驟S6 :提供一改進型地理數(shù)據(jù)塊服務ITMS,通過所述ITMS提供的對多類型預生成地理數(shù) 據(jù)單元塊進行異步訪問;步驟S7 :將Memcached作為一個緩存區(qū)域,若請求的瓦片數(shù)據(jù)在緩 存列表中,則直接返回該瓦片數(shù)據(jù),否則去HBase中查詢;將緩存查詢結(jié)果字符串索引保存 到緩存列表中,并將被請求過的數(shù)據(jù)瓦片保存在內(nèi)存中。
[0009] 在本發(fā)明以一實施例中,步驟S4中的命名規(guī)則為:數(shù)據(jù)來源+投影方式+文件格 式+Id+版本;其中數(shù)據(jù)來源為元數(shù)據(jù)XML中記錄了不同地圖數(shù)據(jù)來源的編號,投影方式為 元數(shù)據(jù)XML中記錄不同投影方式的對應編號,文件格式為元數(shù)據(jù)XML中記錄了不同文件格 式對應的編號,Id為區(qū)分同層同類型同格式的序列化塊ID而采用與系統(tǒng)時間有關的隨機 數(shù),版本為由客戶端和服務端約定好的并寫在配置文件中版本編號。
[0010] 在本發(fā)明一實施例中,步驟S5所述索引表通過行關鍵字rowkey的字典順序來組 織數(shù)據(jù);其中RowKey為SRS+Lod+X+Y+Dataset+FileType,共18字符,其中SRS字段是投影 方式對應的編碼,Lod、X、Y分別代表層、經(jīng)度和煒度,支持24層分層,DataSet是外層和內(nèi) 層數(shù)據(jù)集的說明,F(xiàn)ileType是文件類型對應編碼。
[0011] 在本發(fā)明一實施例中,通過ITMS接口接收客戶端請求使其接收服務元數(shù)據(jù)資源 及地理數(shù)據(jù)塊資源,其中服務元數(shù)據(jù)資源為服務端實現(xiàn)的能力和包含的信息,地理數(shù)據(jù)塊 資源表示一層地理數(shù)據(jù)中的一個瓦片;利用鍵值對列表形式表示參數(shù)和值,通過HTTPGET 或POST方式向系統(tǒng)發(fā)送服務請求。
[0012] 與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點: (1) 無需對現(xiàn)有Hadoop集群存儲機制進行修改,通過希爾伯特曲線排序再利用Hadoop 本身自帶的SequenceFile技術對柵格瓦片數(shù)據(jù)進行序列化壓縮存儲;利用Hadoop的 MapReduce分布式計算的功能,在生成瓦片壓縮塊的時候?qū)崿F(xiàn)多臺服務器多線程并行壓縮 及生成瓦片索引信息,提高海量文件入庫存儲速度;對塊文件名的規(guī)則命名管理,能對海 量、多源、多版本柵格小瓦片提供高效存儲、快速讀取及高性能柵格數(shù)據(jù)服務; (2) 對標準TMS(TileMapService)服務規(guī)范進行改進,設計了ITMS(ImprovedTile MapService),解決傳輸原始數(shù)據(jù)和應對實時數(shù)據(jù)處理請求造成的延遲與帶寬占用,以滿 足項目數(shù)據(jù)檢索與傳輸要求; (3 )本通過在分布式數(shù)據(jù)庫HBase上搭建瓦片數(shù)據(jù)索引數(shù)據(jù)庫,充分利用了HBase對大 數(shù)據(jù)索引的支持,為海量的地圖瓦片數(shù)據(jù)量提供很好的支持。
【附圖說明】
[0013] 圖1為本發(fā)明一實施例瓦片獲取的流程圖。
【具體實施方式】
[0014] 下面結(jié)合附圖和具體實施例對本發(fā)明做進一步說明。
[0015]本發(fā)明提供一種基于hadoop的海量瓦片小文件存儲管理方法,其特征在于:包括 以下步驟