一種基于文件粒度的海量數據存儲方法
【技術領域】
[0001]本發明涉及一種基于文件粒度的海量數據存儲方法,特別涉及一種在hadoop生態圈中,兼容Hive元數據模型的、采用文件作為底層管理基礎單元的、支持狀態管理的海量數據元數據管理模型實現方案。屬于海量數據存儲管理研宄領域。
【背景技術】
[0002]根據IDC過去五年的研宄發現,全球數據量大約每兩年翻一番;2010年,全球數據量跨入ZB時代,預計到2020年全球數據量將達到令人恐怖的35ZB。隨著網民參與互聯網產品和應用的程度越來越深,互聯網將更加智能,互聯網的數據量呈爆炸式增長,大數據時代已經來臨。如此龐大的數據量給數據存儲系統帶來了極大的挑戰。傳統的單機數據存儲系統已經不可行,分布式存儲系統成為未來數據存儲發展的必然趨勢。
[0003]存儲系統中元數據的管理方式可以分為兩種類型:集中式管理和分布式管理。集中式管理是在存儲系統中設置一個專門的元數據服務器,由它來單獨進行所有與元數據相關的事務處理。文件系統所有的元數據都存儲在該服務器的存儲設備上面。客戶端發出的所有對文件的請求,都要先對元數據服務器發送請求,獲取相關的元數據,才能執行后續操作。分布式元數據管理是將元數據存儲在系統的多個節點上,并且節點間可以實現數據的動態迀移,元數據管理的職責也就相應的分配到了各個不同的節點上去了,分布式元數據管理模式通過對多個節點上的元數據的并行存取來實現較高的元數據訪問帶寬,提高元數據訪問性能,但同時也會引起維護元數據一致性的額外開銷。
[0004]針對目前來說,并行虛擬文件系統PVFS(Parallel Virtual File System)就采用了集中式的元數據管理模式。PVFS采用一個元數據服務器、多個I/O服務器的設計,元數據服務器把計算節點發送過來的所有I/O請求均衡分布到各個I/O節點,實現了系統I/O訪問負載的均衡,并且提高了 I/O并發性,從而大大提高了網絡存儲的性能。但是當存儲系統中節點增多、規模變大時,采用單個集中式元數據服務器就無法滿足元數據傳輸帶寬的要求,造成系統瓶頸。
[0005]而xFS采用的就是分布式元數據管理,通過分布數據存儲與元數據管理的功能減少了集中的瓶頸,并且也實現了數據存儲與元數據管理的彼此分離。xFS的特點是沒有專門的元數據服務器,減少性能瓶頸并且消除了單一失效點,另外它具有一定的容錯能力及一定的靜態拓展能力。但是如果采用分布式元數據管理方式的話就需要一種良好的元數據分布算法,合理的數據分布算法可以為存儲系統帶來更高的性能和更好的可拓展性。
[0006]Hive是Facebook開發的構建于Hadoop集群之上的數據倉庫應用,它提供了類似于SQL語法的HQL語句作為數據訪問接口,可以將結構化的數據文件映射為一張數據庫表,并提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。其核心就是通過實現了一套集中式元數據管理方法,抽象出數據庫、表、視圖、索引等元素,借助HDFS分布式文件系統實現數據組織和管理。Hive中的元數據沒有對具體的文件進行描述,僅僅支持到了數據目錄級別。
【發明內容】
[0007]本發明的目的在于提供一種基于文件粒度的海量數據存儲方法,該方案將底層數據管理粒度由文件夾提升至文件,一方面提高了海量數據管理的精細程度,增加了分布式場景下,節點、磁盤信息與文件的關聯關系,實現了統一的數據組織和管理調度,另一方面借助狀態管理方法,實現系統容錯,保證數據的一致性以及訪問的負載均衡,同時,該模型保留了與hive元數據模型的兼容性,使得本元數據模型可以在hadoop生態系統中進行無縫切換使用。
[0008]本發明所采用的技術方案如下:
[0009]一種基于文件粒度的海量數據存儲方法,其步驟為:
[0010]I)將數據存儲集群劃分為多個分區,每一分區具有一分區值;
[0011]2)對每一部門的記錄創建一業務數據表,并設置每一業務數據表中記錄的分區規則;
[0012]3)對于待存儲業務數據的每一記錄,根據其編號和分區規則將其存儲到對應分區的文件中并創建索引文件;然后將該記錄的編號、所在文件的路徑、所屬存儲節點編號、存儲設備編號存儲到元數據文件中。
[0013]進一步的,創建設定業務數據表之間的視圖,根據所述元數據文件,將屬于同一業務場景的業務數據表、視圖、記錄所在分區、索引信息劃入到同一數據庫中,得到一海量元數據管理模型。
[0014]進一步的,所述海量元數據管理模型包括物理元素、邏輯元素和業務元素;其中,物理元素包括存儲設備、存儲節點、文件,邏輯元素包括數據庫、業務數據表、視圖、索引、分區,業務元素包括用戶、地域。
[0015]進一步的,所述存儲設備的狀態包括上線、下線,所述存儲節點的狀態包括上線、下線,所述文件的狀態包括寫入、關閉、穩態、待刪除。
[0016]進一步的,對每一文件設定一文件大小或存儲記錄總數,當文件達到設定條件時,將該文件狀態設置為穩態;對每一文件設置一生命周期,當文件的保存時間超過該生命周期時,將該文件的狀態設置為待刪除狀態。
[0017]進一步的,對所述文件生成若干個副本;所述副本的生成方法為:
[0018]61)檢測當前文件的狀態是否為穩態,如果是,進入到62),否則進入到63);
[0019]62)判斷文件當前的副本數量是否滿足配置要求,如果滿足,則繼續掃描下一個文件,如果不滿足,則對該文件進行副本的生成,一次完成所有所需副本數量的生成,然后標記文件副本數為已生成副本數;
[0020]63)判斷當前文件是否為關閉狀態,且關閉時間超出配置值;如果不是,則繼續掃描下一個文件,否則將當前文件標記為穩態,并按照配置的副本數進行副本的生成,繼續掃描下一個文件。
[0021]進一步的,每一所述存儲節點上設有一守護線程,用于對存儲節點上的所有存儲設備中的文件進行檢驗,檢驗方法為:
[0022]71)初始化待檢驗文件列表,獲取文件路徑信息;
[0023]72)如果當前文件狀態為寫入,且創建時間未超過配置的超時時間,則繼續檢驗下一個文件,否則進入到73);
[0024]73)如果文件狀態為寫入,則標記為關閉,如果不是,則進入74);
[0025]74)判斷當前文件是否可讀,如果是,則繼續檢驗下一個文件,否則,進入75);
[0026]75)將當前不可讀文件刪除,對應的副本數減1,如果副本數為0,則刪除該文件的元數據信息。
[0027]進一步的,根據所述海量元數據管理模型進行數據查詢,其方法為:首先根據輸入的查詢部門確定所要查詢的業務數據表A,然后根據查詢請求在所述海量元數據管理模型中獲取業務數據表A中所有分區下的符合查詢條件的文件列表;然后根據該文件列表中的文件副本分布和存儲節點狀態、存儲設備狀態,生成