影響:
1、文件的元數(shù)據(jù)存儲(chǔ)在namenode中,每個(gè)文件的元數(shù)據(jù)都差不多大,小文件過(guò)多會(huì)極大的占用namonode
的內(nèi)存,制約集群的擴(kuò)展。(主要影響)
2、在對(duì)小文件進(jìn)行處理的時(shí)候,一個(gè)小文件對(duì)應(yīng)一個(gè)maptask,一個(gè)maptask會(huì)起一個(gè)jvm進(jìn)程,進(jìn)程的
開(kāi)啟銷(xiāo)毀會(huì)嚴(yán)重性能。(jvm復(fù)用)
產(chǎn)生場(chǎng)景:
1、實(shí)時(shí)處理:比如我們使用 Spark Streaming 從外部數(shù)據(jù)源接收數(shù)據(jù),然后經(jīng)過(guò) ETL 處理之后存儲(chǔ)
到 HDFS 中。這種情況下在每個(gè) Job 中會(huì)產(chǎn)生大量的小文件。
2、hive中對(duì)表執(zhí)行insert操作,每次插入都在表目錄下形成一個(gè)小文件。
創(chuàng)建表結(jié)構(gòu)相同的表,create table t_new as select * from t_old;
老表根據(jù)實(shí)際情況可以刪除就刪除。
3、hive中執(zhí)行簡(jiǎn)單過(guò)濾操作,符合過(guò)濾條件的數(shù)據(jù)存在很多block塊中,只走map,map輸出有很多小文
件。
開(kāi)啟map端的聚合。
4、mapreduce正常執(zhí)行產(chǎn)生小文件。
將mapreduce輸出不直接寫(xiě)hdfs,而是寫(xiě)入到hbase中。
設(shè)置map端文件合并及reduce端文件合并。
5、輸入數(shù)據(jù)文件為小文件。
小文件合并后再計(jì)算。
CombineFileInputFormat: 它是一種新的inputformat,用于將多個(gè)文件合并成一個(gè)單獨(dú)的
split,另外,它會(huì)考慮數(shù)據(jù)的存儲(chǔ)位置。
通用處理方案:
1、Hadoop Archive
Hadoop Archive或者HAR,是一個(gè)高效地將小文件放入HDFS塊中的文件存檔工具,它能夠?qū)⒍鄠€(gè)小文件
打包成一個(gè)HAR文件,這樣在減少namenode內(nèi)存使用的同時(shí),仍然允許對(duì)文件進(jìn)行透明的訪問(wèn)。
2、Sequence file
sequence file由一系列的二進(jìn)制key/value組成,如果為key小文件名,value為文件內(nèi)容,則可以將
大批小文件合并成一個(gè)大文件。
底層處理方案:
HDFS-8998:
DataNode劃分小文件區(qū),專(zhuān)門(mén)存儲(chǔ)小文件。一個(gè)block塊滿了開(kāi)始使用下一個(gè)block。
HDFS-8286:
將元數(shù)據(jù)從namenode從內(nèi)存移到第三方k-v存儲(chǔ)系統(tǒng)中。
HDFS-7240:
Apache Hadoop Ozone,hadoop子項(xiàng)目,為擴(kuò)展hdfs而生。
網(wǎng)站題目:Hadoop中HDFS小文件產(chǎn)生場(chǎng)景及其處理方案
網(wǎng)址分享:http://chinadenli.net/article36/ppgisg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站排名、響應(yīng)式網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)