系列文章:
大數(shù)據(jù)- Hadoop入門-CSDN博客
大數(shù)據(jù) - Hadoop系列《二》- Hadoop組成-CSDN博客
大數(shù)據(jù) - Hadoop系列《三》- HDFS(分布式文件系統(tǒng))概述_大量小文件的存儲使用什么分布式文件系統(tǒng)-CSDN博客
大數(shù)據(jù) - Hadoop系列《三》- MapReduce(分布式計算引擎)概述-CSDN博客
大數(shù)據(jù) - Hadoop系列《四》- MapReduce(分布式計算引擎)的核心思想-CSDN博客
目錄
5.1 HDFS文件塊大小(面試題)
問題:能不能將塊設(shè)置的小一些?
問題:不能過小,那能不能過大?
5.2 小文件問題
2. 小文件過多會造成的問題
3. 小文件的解決辦法
??3.1?使用Hadoop Archive(HAR)將小文件進行歸檔
??3.2 使用SequenceFile合并小文件
??3.3 使用CombineFileInputFormat合并小文件:
5.1 HDFS文件塊大小(面試題)
HDFS中的文件在物理上是分塊存儲(Block), 塊的大小可以通過配置參數(shù)(dfs blocksize)來規(guī)定,默認大小在Hadoop2x/3x版本中是128M,1x版本中是64M.
問題:能不能將塊設(shè)置的小一些?
理論上是可以的,但是如果設(shè)置的塊大小過小,會占用大量的namenode的元數(shù)據(jù)空間,而且在讀寫操作時,加大了尋址時間,所以不建議設(shè)置的過小
問題:不能過小,那能不能過大?
不建議,因為設(shè)置的過大,傳輸時間會遠遠大于尋址時間,增加了網(wǎng)絡(luò)資源的消耗,而且如果在讀寫的過程中出現(xiàn)故障,恢復(fù)起來也很麻煩,所以不建議
總結(jié):HDFS塊的大小設(shè)置主要取決于磁盤傳輸速率。
5.2 小文件問題
1. 小文件是指文件大小明顯小于hdfs上塊大小的文件
2. 小文件過多會造成的問題
-
HDFS上每個文件都要在NameNode上面創(chuàng)建對應(yīng)的元數(shù)據(jù),這個元數(shù)據(jù)的大小約為150byte,這樣當(dāng)小文件比較多的時候,就會產(chǎn)生很多的元數(shù)據(jù)文件,一方面會大量占用NameNode的內(nèi)存空間,另一方面就是元數(shù)據(jù)文件過多,使得尋址索引速度變慢。
-
小文件過多,在進行MR計算時,需要啟動過多的MapTask,每個MapTask處理的數(shù)據(jù)量很小,導(dǎo)致MapTask的處理時間比啟動時間還小,白白消耗資源。
3. 小文件的解決辦法
??解決小文件問題的本質(zhì)就是將小文件進行合并,可以通過以下幾種方式解決小文件問題:
注意:和HAR不同的是,這種方式還支持壓縮,可以減少減少存儲空間的占用。但SequenceFile文件不能追加寫入,也不能修改, 適用于一次性寫入大量小文件的操作。
??3.1?使用Hadoop Archive(HAR)將小文件進行歸檔
????????使用Hadoop自帶的HAR將小文件進行歸檔,將多個小文件打包成一個HAR文件,這樣NameNode中的元數(shù)據(jù)也就存儲一份。在減少namenode內(nèi)存使用的同時,仍然可以對文件進行透明的訪問。
??3.2 使用SequenceFile合并小文件
可以使用SequenceFile格式將大批的小文件合并成一個大文件,再使用MapReduce程序進行操作,從而提高系統(tǒng)性能。
??3.3 使用CombineFileInputFormat合并小文件:
在MR讀取數(shù)據(jù)時將多個小文件合并成一個文件進行處理,只開啟一個MapTask,提高了任務(wù)的執(zhí)行效率。文章來源:http://www.zghlxwxcb.cn/news/detail-856882.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-856882.html
到了這里,關(guān)于大數(shù)據(jù) - Hadoop系列《五》- HDFS文件塊大小及小文件問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!