一種海量小文件存儲及管理方法和系統的制作方法
【技術領域】
[0001]本發明涉及一種存儲和管理的方法和系統,具體涉及一種海量小文件存儲及管理方法和系統。
【背景技術】
[0002]Hadoop平臺采用管理者/工作者模式,由一個名稱節點(NameNode)服務器和多個數據節點(DataNode)服務器組成。不論是NameNode服務器還是DataNode服務器都部署在普通的PC機上,大大節約了實施分布式系統投入的成本。在Hadoop中需要用NameNode來管理文件系統的元數據,以響應客戶端請求返回文件位置等,因此文件數量大小的限制要由NameNode來決定。假設一個小型數據文件,其元數據所需IKB (1024B)內存空間。如果存在1000萬個這樣的文件,并且為每一個文件分配一個Block,那么就要消耗NameNode節點約為1GB的內存來保存這些Block的信息;如果每個Block的默認大小為64MB,并且默認備份數量為3,則這1000萬個文件所需要的存儲空間約為1.92PB(1920TB)。顯然,僅僅存儲1000萬個小文件是不足以滿足用戶的需求,因為現如今的信息量在急劇的增加,這樣很容易超出現階段計算機硬件所能承受的極限,造成機器宕機。如果有更多文件,那么名稱節點的工作壓力更大,檢索處理元數據所需要的時間就不可接受。特別是這些文件比Hadoop默認文件分塊大小還小,Hadoop將認為這些文件是不可分塊。海量小文件將耗費名稱節點服務器的內存,并且其檢索和更新效率低。另外,Hadoop存在的這個唯一的名稱節點,它負責管理文件系統名稱空間和控制外部客戶端的訪問,一旦NameNode出現故障就會導致數據訪問失效。
【發明內容】
[0003]為了克服上述現有技術的不足,本發明提供一種海量小文件存儲及管理方法和系統。
[0004]為了實現上述發明目的,本發明采取如下技術方案:
[0005]一種海量小文件存儲及管理方法,所述方法包括:
[0006]存儲海量小文件,并將元數據寫入名稱節點服務網絡;
[0007]名稱節點服務網絡管理元數據,實現對客戶端訪問請求響應。
[0008]優選的,所述存儲海量小文件包括如下步驟:
[0009]步驟1、將海量小文件進行分類,生成所述元數據文件;
[0010]步驟2、利用MapReduce編程框架對數據塊進行分解、處理得到數據值;
[0011]步驟3、將所述數據值分布存儲在Hadoop平臺中。
[0012]優選的,所述步驟I包括如下步驟:
[0013]步驟1-1、根據查詢文件的文件類型,分類出目標類型文件,并將所述目標類型文件索引進行分類,形成目標文件索引序列;
[0014]步驟1-2、對目標文件進行解析,提取出需要存儲的小文件元數據信息并存入緩存;
[0015]步驟1-3、從緩存中獲取所述小文件元數據信息,將其按照Hadoop平臺中默認的塊大小或指定大小進行文件合并,形成中間數據文件,即元數據文件,放入目標文件夾中。
[0016]優選的,所述步驟2采用MapReduce編程框架的Map、Reduce函數,所述Map函數對傳入的中間數據文件進行分解處理,產生中間key/value數據序列,所述Reduce函數對所述中間key/value數據序列進行分析合并。
[0017]優選的,所述名稱節點服務網絡管理元數據包括如下步驟:
[0018]步驟1、獲取客戶端提交的服務請求;
[0019]步驟I1、根據所述服務請求的key值,查找緩存中是否有所述服務請求的數據信息,若有直接返回給客戶端,否則定位所述服務請求到網絡中的具體存儲節點,并轉發所述服務請求到具體NameNode節點;
[0020]步驟II1、KBR服務根據所述key值定位查詢所述具體存儲節點中文件節點信息并返回客戶端。
[0021]優選的,所述key值是根據服務請求信息提取的數據進行Hash計算得到的。
[0022]優選的,所述KBR服務采用了希爾伯特曲線的數據連續性,提供基于關鍵字的路由方法供其他NameNode節點查找。
[0023]優選的,一種海量小文件存儲及管理系統,所述系統包括
[0024]名稱節點服務網絡系統,用于名稱節點服務網絡管理元數據,實現對客戶端訪問請求響應;
[0025]海量小文件存儲系統,用于存儲海量小文件,并將元數據寫入名稱節點服務網絡。
[0026]優選的,所述海量小文件存儲系統包括:
[0027]文件類型處理器,根據查詢文件的文件類型,分類出目標類型文件,并將目標文件索引進行分類,形成目標文件索引序列,供海量小文件解析器模塊調用;
[0028]海量小文件解析器模塊,從文件類型處理器獲得目標文件索引序列,使用多線程解析技術,對目標文件進行解析,提取出需要存儲的小文件元數據信息,將提取的元數據存入緩存;
[0029]中間數據合并器,將所述元數據按照Hadoop平臺中的默認塊大小或指定大小進行文件合并,放入指定的目標文件夾中;
[0030]中間數據存儲器,定時的掃描目標文件夾,獲得中間數據文件,將其放入Hadoop平臺中,并對所述中間數據文件進行備份;
[0031]分布式數據處理器,采用MapReduce編程模型的Map、Reduce函數;Map函數是按照規定的規則,對傳入的中間數據文件進行分解處理,產生中間key/value數據序列,然后Reduce函數對這些中間key/value數據序列進行在分析、合并,最后將處理過的數據存入Hadoop平臺中。
[0032]優選的,所述名稱節點服務網絡系統包括:
[0033]解析器模塊,提取客戶端提交服務請求的key值;
[0034]緩存層模塊,對經常用的數據進行緩存;
[0035]覆蓋網絡層,定位所述服務請求到網絡中的具體存儲節點,并轉發所述服務請求到具體NameNode節點,根據所述key值定位查詢所述具體存儲節點中文件節點信息并返回客戶端。
[0036]與現有技術相比,本發明的有益效果在于:
[0037]本發明名稱節點服務網絡系統采用對等計算技術,避免了單點失效問題,提供基于關鍵字的路由查找方法,有效均衡網絡負載,提高查詢效率,采用同類型小文件合并技術,并使用多線程并行處理編程方法,提高大數據系統的小文件處理效率。
【附圖說明】
[0038]圖1是一種存儲海量小文件方法流程圖
[0039]圖2是一種名稱節點服務網絡管理元數據的方法流程圖
[0040]圖3是一種存儲海量小文件系統模塊圖
[0041]圖4是一種名稱節點服務網絡管理元數據系統模塊圖
【具體實施方式】
[0042]下面結合附圖對本發明作進一步詳細說明。
[0043]一種海量小文件存儲及管理方法,所述方法包括:
[0044]存儲海量小文件,并將元數據寫入名稱節點服務網絡;
[0045]名稱節點服務網絡管理元數據,實現對客戶端訪問請求響應。
[0046]如圖1所示,一種存儲海量小文件方法,包括如下步驟:
[0047]步驟101、將海量的小文件進行分類,生成所述元數據文件;
[0048]步驟102、再利用MapReduce編程框架對數據塊進行分解、處理得到數據值;
[0049]采用MapReduce編程框架的Map、Reduce函數,所述Map函數對傳入的中間數據文件進行分解處理,產生中間key/value數據序列,所述Reduce函數對所述中間key/value數據序列進行分析合并。
[0050]步驟103、最后將所述數據值分布存儲在Hadoop平臺中。
[0051]其中步驟101包括如下步驟:
[0052]步驟1101、根據查詢文件的文件類型,分類出目標類型文件,并將所述目標類型文件索引進行分類,形成目標文件索引序列;
[0053]步驟1102、對目標文件進行解析,提取出需要存儲的小文件元數據信息并存入緩存;
[0054]步驟1103、從緩存中獲取所述小文件元數據信息,將其按照Hadoop平臺中默認的塊大小或指定大小進行文件合并,形成中間數據文件,即元數據文件,放入目標文件夾中。
[0055]為了解決名稱節點的單點失效問題,本發明提出一種基于對等計算(P2P)技術的名稱節點服務網絡系統,簡稱P2PNS。P2P是英文Peer-to-Peer的縮寫,Peer的英文含義是“(地位、能力等)同等者、同事、伙伴”,P2P也就可以理解為“伙伴對伙伴”的意思。每個節點地位對等,可以同時成為服務的使用者和提供者,這為大規模的信息共享、直接通信和協同工作提供了靈活的、可擴展的計算平臺。P2P計算更關注于Internet上海量的邊緣節點;P2P技術的價值也在于為對等節點間的資源