日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

因為設(shè)置上面四個參數(shù),看上去規(guī)定了map結(jié)束,MR結(jié)束合并文件,如果文件平均小于smallfiles.avgsize啟動一個新的MRj進(jìn)行文件的二次合并。如果啟動mr合并文件,沒有問題。

0.背景

近來我們公司搞小文件治理(小于10Mb),小文件太多的危害就不此贅述了。公司的開發(fā)人員提供的合并小文件治理配置如下:

 

-- 設(shè)置小文件合并
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task = 256000000 ;
set hive.merge.smallfiles.avgsize= 256000000 ;

 

看上去配置的沒啥問題,不管是Map-only,還是MapReduce都考慮到了,只要輸出的文件小于這個值,就重新啟動一個MR去執(zhí)行文件合并。看也符合Hive官網(wǎng)的配置解釋

 

然而現(xiàn)實并非如此,廢話不多說,you can you code,no can no bb.

原分析表數(shù)據(jù)在HDFS存儲為551個小文件,下面所有的測試都是基于這個文件。

1.測試代碼方案1

設(shè)置啟動map前文件合并,先使用官方默認(rèn)配置,實現(xiàn)文件合并測試

 

set  hive.input.format = org.Apache.hadoop.hive.ql.io.CombineHiveInputFormat; --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.smallfiles.avgsize=16000000;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.size.per.task=256000000;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.mapfiles  =true ;       --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.mapredfiles = true ;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值

drop table if exists FDM_SOR.T_FSA_BHVR_NEW_EXPO_D_tmp_tmp;
create table FDM_SOR.t_fsa_bhvr_new_expo_d_tmp_tmp
stored as orc 
as 
select 
*  
from FDM_SOR.t_fsa_bhvr_new_expo_d 
where stat_date = '20200630'
 

結(jié)果:只產(chǎn)生了438個文件,看樣子效果不錯,文件變少了,但是發(fā)現(xiàn)還是有很多小于16Mb的文件,為啥設(shè)置了不管用呢,是不是set
hive.merge.smallfiles.avgsize官方的默認(rèn)值給的太小了。需要加大。看實驗2.

 

 

2.測試代碼方案2

設(shè)置啟動map前文件合并,將set
hive.merge.smallfiles.avgsize值加大,增加文件合并的Size。按照官方的說法當(dāng)輸出的文件平均小于16Mb時系統(tǒng)會再啟動一個MR進(jìn)行文件合并。這下該管用了吧,請看:

set  hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.smallfiles.avgsize=256000000;  --改了這個值,由默認(rèn)的16Mb,改成256Mb
set  hive.merge.size.per.task=256000000;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.mapfiles  =true ;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值
set  hive.merge.mapredfiles = true ;  --官方默認(rèn)值,也是當(dāng)前平臺默認(rèn)值

drop table if exists FDM_SOR.T_FSA_BHVR_NEW_EXPO_D_tmp_tmp;
create table FDM_SOR.t_fsa_bhvr_new_expo_d_tmp_tmp
stored as orc 
as 
select 
*  
from FDM_SOR.t_fsa_bhvr_new_expo_d 
where stat_date = '20200630'

廢話不多說,上結(jié)果請看

 

結(jié)果分析:沒錯,第一次MR因為Comb.NEText啟動了438個map和上面一樣,果然接著又啟動了一個MR,進(jìn)行輸出后的文件合并。看樣子很DIAO。合并要求文件大小不小256Mb,然后實際呢?pAppa。文件雖然減少了很多到351個,但依然有很多小文件,很多小于10Mb的文件,這個時候心里肯定一句

3.測試代碼方案3

放大招,功夫有沒有,代碼走一走,加上split參數(shù)

set mapred.max.split.size=256000000;  
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set hive.merge.mapfiles = true ;
set hive.merge.mapredfiles = true ;
set hive.merge.size.per.task = 256000000 ;
set hive.merge.smallfiles.avgsize=160000000 ;

drop table if exists FDM_SOR.T_FSA_BHVR_NEW_EXPO_D_tmp_tmp;
create table FDM_SOR.T_FSA_BHVR_NEW_EXPO_D_tmp_tmp
stored as orc 
as 
select 
*  
from FDM_SOR.T_FSA_BHVR_NEW_EXPO_D 
where stat_date = '20200630'

廢話不多說,上結(jié)果請看:

 

結(jié)果分析:這下好了,全是大文件,44大文件,每個大文件都是辣么大,最小的都是48Mb。為啥加了split參數(shù)以后就生效了呢。前面單獨(dú)合并小文件參數(shù)沒啥效果呢?網(wǎng)上隨便搜一下,都是這種配置這種參數(shù)的?

-- 設(shè)置小文件合并
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task = 256000000 ;
set hive.merge.smallfiles.avgsize= 256000000 ;

4.答案揭曉

因為設(shè)置上面四個參數(shù),看上去規(guī)定了map結(jié)束,MR結(jié)束合并文件,如果文件平均小于smallfiles.avgsize啟動一個新的MRj進(jìn)行文件的二次合并。如果啟動mr合并文件,沒有問題。但是忽略了一個問題,你重新啟動一個mr合并文件,這個mr是不是需要進(jìn)行文件split,你這個參數(shù)搞小了,那就會產(chǎn)生很多task,很多map,比如很多小文件就是一個map,最終還是產(chǎn)生很多小文件(因為合并小文件的mr只有map)。所以必須要配合split參數(shù)才有用。具體split參數(shù)使用,參考我其他博客。

本文轉(zhuǎn)載自微信公眾號「滌生大數(shù)據(jù)」,作者「滌生大數(shù)據(jù)」,可以通過以下二維碼關(guān)注。

分享到:
標(biāo)簽:Hive
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定