海量小文件處理方式——Improve HAR
改進的HDFS結構包含兩部分:
用于聚合小文件為大文件的客戶端組件,client;
用于緩存資源管理的數據結點組件,data node;
具體架構圖如下:
改進的HDFS模型是基于索引的。存在依賴關系的、同一目錄下的小文件可以聚合為一個大文件,依次來減少每一個小文件元數據都單獨存儲在NameNode中對于NameNode結點內存的消耗。
緩存策略可以增加小文件讀速率。緩存管理器部署在DataNode結點,這樣當每一次讀取小文件時,可以首先從緩存中獲取,而非磁盤。想想看,如果讀文件不在緩存中,那么不得不到DataNode結點的磁盤獲取。磁盤和內存的速率非一個數量級!。
文件整合的設計:每一個合并后的大文件包含被合并小文件的文件大小、在大文件中的偏移量,這些信息被整合在大文件索引文件中。
文件整合程序的功能如下:
就特定目錄下的小文件排序,之后將小文件一個個合并為大文件;
確定待合并小文件總體的數量;
確定合并后大文件大小,并且與HDFS默認塊大小比較。
索引文件是依據每一個小文件的大小、偏移量的創建的。為了在HDFS塊中存儲大文件,需要確保大文件大小不能大于塊大小(默認HDFS塊大小為64M)。
如果合并后的文件大小大于HDFS塊大小,則合并后的文件需要先分片,再存儲到不同的HDFS塊中。
基于上述描述,識別大文件中每個文件的偏移量和順序,并據此構建索引文件,從而結束文件整合過程。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
其實看上面的流程,我們發現Improve HAR也存在一些問題,比如合并后的大文件查找,如果是隨機查,也會性能很差。如果索引采用hash方式可以適度緩解該問題。
Hadoop
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。