,第一記錄區中存儲有數據文件的存儲路徑信息;
[0052]第二處理模塊,用于將小文件存儲到數據文件中,并將小文件對應的索引塊信息存儲到第二記錄區中,索引塊信息中包括:索引塊號、小文件在數據文件中的起始偏移位置和小文件的大小。
[0053]較佳地,
[0054]第一處理模塊可確定文件句柄隊列中包括的文件句柄數是否已經達到預定閾值;如果否,則創建一個新的文件句柄,其中的數據文件和索引文件的第二記錄區中均為空,并將新創建的文件句柄分配給小文件;如果是,則將位于文件句柄隊列最前面的文件句柄分配給小文件;
[0055]相應地,第二處理模塊可進一步用于,當小文件及其對應的索引塊信息均已存儲完成時,將為小文件分配的文件句柄放入到文件句柄隊列的末尾。
[0056]另外,
[0057]第二處理模塊還可進一步用于,如果為小文件分配的文件句柄的數據文件中的剩余存儲空間小于小文件的大小或者發生存儲異常,則將為小文件分配的文件句柄關閉,并從文件句柄隊列中移除,并創建一個新的文件句柄,將新創建的文件句柄分配給小文件。
[0058]較佳地,
[0059]第一記錄區可位于第二記錄區的前面,且大小固定;第二記錄區中按照索引塊號由小到大的順序依次存儲有各索引塊信息,且每個索引塊信息的大小固定;
[0060]第二處理模塊可從數據文件中已存儲的數據結束位置開始,存儲小文件;
[0061]小文件對應的索引塊號等同于小文件在數據文件中的存儲順序號。
[0062]另外,
[0063]第二處理模塊還可進一步用于,當小文件及其對應的索引塊信息均已存儲完成時,將小文件對應的索引文件的存儲路徑信息和索引塊號返回給存儲請求的發送方。
[0064]還有,
[0065]該裝置中還可進一步包括:第三處理模塊;
[0066]第三處理模塊,用于當接收到針對任一小文件的讀取請求時,獲取其中攜帶的索引文件的存儲路徑信息和索引塊號;根據獲取到的索引文件的存儲路徑信息,找到相應的索引文件,并讀取出存儲在找到的索引文件的第一記錄區中的數據文件的存儲路徑信息,根據讀取出的數據文件的存儲路徑信息找到對應的數據文件;計算(獲取到的索引塊號-1)*每個索引塊信息的大小,得到獲取到的索引塊號對應的索引塊信息在找到的索引文件的第二記錄區中的起始偏移位置,并根據得到的起始偏移位置和每個索引塊信息的大小,從第二記錄區中讀取出獲取到的索引塊號對應的索引塊信息;根據讀取出的索引塊信息中的小文件在數據文件中的起始偏移位置和小文件的大小,從找到的數據文件中讀取出小文件,并返回給讀取請求的發送方。
[0067]上述裝置實施例的具體工作流程請參照前述方法實施例中的相應說明,此處不再贅述。
[0068]總之,本發明所述方案中,可采用將多個小文件合并存儲到一個大的數據文件中的方式,來實現小文件的存儲,從而僅需要維護每個數據文件及對應的索引文件的元數據信息,進而較好的節省了內存空間;比如,一個數據文件合并存儲了 10000個200KB大小的小文件,那么只需要維護2個元數據信息即可,而如果按照現有方式,將這些小文件直接進行存儲的話,將需要維護10000個元數據信息。
[0069]而且,本發明所述方案中,可利用文件句柄來實現多個小文件的并行存儲,從而減少了小文件存儲的等待時間,進而提高了小文件的存儲效率。
[0070]另外,本發明所述方案中,通過一些簡單的運算等,即可實現小文件的快速讀取,從而提聞了小文件的讀取效率。
[0071]綜上所述,以上僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種基于分布式文件系統HDFS的小文件存儲方法,其特征在于,包括: 當接收到針對任一小文件的存儲請求時,為小文件分配一個文件句柄,該文件句柄由一個索引文件和一個數據文件組成,其中,索引文件中包括一個第一記錄區和一個第二記錄區,第一記錄區中存儲有數據文件的存儲路徑信息; 將小文件存儲到數據文件中,并將小文件對應的索引塊信息存儲到第二記錄區中,索引塊信息中包括:索引塊號、小文件在數據文件中的起始偏移位置和小文件的大小。2.根據權利要求1所述的方法,其特征在于, 所述為小文件分配一個文件句柄包括: 確定文件句柄隊列中包括的文件句柄數是否已經達到預定閾值; 如果否,則創建一個新的文件句柄,其中的數據文件和索引文件的第二記錄區中均為空,并將新創建的文件句柄分配給小文件; 如果是,則將位于文件句柄隊列最前面的文件句柄分配給小文件; 該方法進一步包括:當小文件及其對應的索引塊信息均已存儲完成時,將為小文件分配的文件句柄放入到文件句柄隊列的末尾。3.根據權利要求2所述的方法,其特征在于, 該方法進一步包括: 如果為小文件分配的文件句柄的數據文件中的剩余存儲空間小于小文件的大小或者發生存儲異常,則將為小文件分配的文件句柄關閉,并從文件句柄隊列中移除,并創建一個新的文件句柄,將新創建的文件句柄分配給小文件。4.根據權利要求1、2或3所述的方法,其特征在于, 第一記錄區位于第二記錄區的前面,且大小固定;第二記錄區中按照索引塊號由小到大的順序依次存儲有各索引塊信息,且每個索引塊信息的大小固定; 所述將小文件存儲到數據文件中包括:從數據文件中已存儲的數據結束位置開始,存儲小文件; 小文件對應的索引塊號等同于小文件在數據文件中的存儲順序號。5.根據權利要求4所述的方法,其特征在于, 該方法進一步包括: 當小文件及其對應的索引塊信息均已存儲完成時,將小文件對應的索引文件的存儲路徑信息和索引塊號返回給存儲請求的發送方。6.根據權利要求5所述的方法,其特征在于, 該方法進一步包括: 當接收到針對任一小文件的讀取請求時,獲取其中攜帶的索引文件的存儲路徑信息和索引塊號; 根據獲取到的索引文件的存儲路徑信息,找到相應的索引文件,并讀取出存儲在找到的索引文件的第一記錄區中的數據文件的存儲路徑信息,根據讀取出的數據文件的存儲路徑信息找到對應的數據文件; 計算(獲取到的索引塊號-1)*每個索引塊信息的大小,得到獲取到的索引塊號對應的索引塊信息在找到的索引文件的第二記錄區中的起始偏移位置,并根據得到的起始偏移位置和每個索引塊信息的大小,從第二記錄區中讀取出獲取到的索引塊號對應的索引塊信息; 根據讀取出的索引塊信息中的小文件在數據文件中的起始偏移位置和小文件的大小,從找到的數據文件中讀取出小文件,并返回給讀取請求的發送方。7.一種基于分布式文件系統HDFS的小文件存儲裝置,其特征在于,包括:第一處理模塊和第二處理模塊; 所述第一處理模塊,用于當接收到針對任一小文件的存儲請求時,為小文件分配一個文件句柄,該文件句柄由一個索弓I文件和一個數據文件組成,其中,索引文件中包括一個第一記錄區和一個第二記錄區,第一記錄區中存儲有數據文件的存儲路徑信息; 所述第二處理模塊,用于將小文件存儲到數據文件中,并將小文件對應的索引塊信息存儲到第二記錄區中,索引塊信息中包括:索引塊號、小文件在數據文件中的起始偏移位置和小文件的大小。8.根據權利要求7所述的裝置,其特征在于, 所述第一處理模塊確定文件句柄隊列中包括的文件句柄數是否已經達到預定閾值;如果否,則創建一個新的文件句柄,其中的數據文件和索引文件的第二記錄區中均為空,并將新創建的文件句柄分配給小文件;如果是,則將位于文件句柄隊列最前面的文件句柄分配給小文件; 所述第二處理模塊進一步用于,當小文件及其對應的索引塊信息均已存儲完成時,將為小文件分配的文件句柄放入到文件句柄隊列的末尾。9.根據權利要求8所述的裝置,其特征在于, 所述第二處理模塊進一步用于,如果為小文件分配的文件句柄的數據文件中的剩余存儲空間小于小文件的大小或者發生存儲異常,則將為小文件分配的文件句柄關閉,并從文件句柄隊列中移除,并創建一個新的文件句柄,將新創建的文件句柄分配給小文件。10.根據權利要求7、8或9所述的裝置,其特征在于, 第一記錄區位于第二記錄區的前面,且大小固定;第二記錄區中按照索引塊號由小到大的順序依次存儲有各索引塊信息,且每個索引塊信息的大小固定; 所述第二處理模塊從數據文件中已存儲的數據結束位置開始,存儲小文件; 小文件對應的索引塊號等同于小文件在數據文件中的存儲順序號。11.根據權利要求10所述的裝置,其特征在于, 所述第二處理模塊進一步用于,當小文件及其對應的索引塊信息均已存儲完成時,將小文件對應的索引文件的存儲路徑信息和索引塊號返回給存儲請求的發送方。12.根據權利要求11所述的裝置,其特征在于, 該裝置中進一步包括:第三處理模塊; 所述第三處理模塊,用于當接收到針對任一小文件的讀取請求時,獲取其中攜帶的索引文件的存儲路徑信息和索引塊號;根據獲取到的索引文件的存儲路徑信息,找到相應的索引文件,并讀取出存儲在找到的索引文件的第一記錄區中的數據文件的存儲路徑信息,根據讀取出的數據文件的存儲路徑信息找到對應的數據文件;計算(獲取到的索引塊號-1)*每個索引塊信息的大小,得到獲取到的索引塊號對應的索引塊信息在找到的索引文件的第二記錄區中的起始偏移位置,并根據得到的起始偏移位置和每個索引塊信息的大小,從第二記錄區中讀取出獲取到的索引塊號對應的索引塊信息;根據讀取出的索引塊信息中的小文件在數據文件中的起始偏移位置和小文件的大小,從找到的數據文件中讀取出小文件,并返回給讀取請求的發送方。
【專利摘要】本發明公開了一種基于HDFS的小文件存儲方法和裝置:當接收到針對任一小文件的存儲請求時,為小文件分配一個文件句柄,該文件句柄由一個索引文件和一個數據文件組成,其中,索引文件中包括一個第一記錄區和一個第二記錄區,第一記錄區中存儲有數據文件的存儲路徑信息;將小文件存儲到數據文件中,并將小文件對應的索引塊信息存儲到第二記錄區中,索引塊信息中包括:索引塊號、小文件在數據文件中的起始偏移位置和小文件的大小。應用本發明所述方案,能夠較好的節省內存空間。
【IPC分類】G06F17/30
【公開號】CN105630779
【申請號】CN201410581517
【發明人】黃學軍, 王宇, 胡景翔
【申請人】杭州海康威視系統技術有限公司
【公開日】2016年6月1日
【申請日】2014年10月27日