HIVE:小文件合并

HDFS非常容易存儲(chǔ)大數(shù)據(jù)文件,如果Hive中存在過多的小文件會(huì)給namecode帶來巨大的性能壓力。同時(shí)小文件過多會(huì)影響JOB的執(zhí)行烟勋,hadoop會(huì)將一個(gè)job轉(zhuǎn)換成多個(gè)task障癌,即使對(duì)于每個(gè)小文件也需要一個(gè)task去單獨(dú)處理,task作為一個(gè)獨(dú)立的jvm實(shí)例蹦玫,其開啟和停止的開銷可能會(huì)大大超過實(shí)際的任務(wù)處理時(shí)間。

同時(shí)我們知道hive輸出最終是mr的輸出,即reducer(或mapper)的輸出钳垮,有多少個(gè)reducer(mapper)輸出就會(huì)生成多少個(gè)輸出文件惑淳,根據(jù)shuffle/sort的原理,每個(gè)文件按照某個(gè)值進(jìn)行shuffle后的結(jié)果饺窿。

為了防止生成過多小文件歧焦,hive可以通過配置參數(shù)在mr過程中合并小文件。而且在執(zhí)行sql之前將小文件都進(jìn)行Merge肚医,也會(huì)提高程序的性能绢馍。我們可以從兩個(gè)方面進(jìn)行優(yōu)化,其一是map執(zhí)行之前將小文件進(jìn)行合并會(huì)提高性能肠套,其二是輸出的時(shí)候進(jìn)行合并壓縮舰涌,減少IO壓力。

1你稚、小文件帶來的問題

HDFS的文件元信息瓷耙,包括位置、大小刁赖、分塊信息等搁痛,都是保存在NameNode的內(nèi)存中的。每個(gè)對(duì)象大約占用150個(gè)字節(jié)宇弛,因此一千萬個(gè)文件及分塊就會(huì)占用約3G的內(nèi)存空間鸡典,一旦接近這個(gè)量級(jí),NameNode的性能就會(huì)開始下降了枪芒。此外彻况,HDFS讀寫小文件時(shí)也會(huì)更加耗時(shí),因?yàn)槊看味夹枰獜腘ameNode獲取元信息舅踪,并與對(duì)應(yīng)的DataNode建立連接纽甘。對(duì)于MapReduce程序來說,小文件還會(huì)增加Mapper的個(gè)數(shù)硫朦,每個(gè)腳本只處理很少的數(shù)據(jù)贷腕,浪費(fèi)了大量的調(diào)度時(shí)間。當(dāng)然咬展,這個(gè)問題可以通過使用CombinedInputFile和JVM重用來解決泽裳。

1.元數(shù)據(jù)信息增加給namenode節(jié)點(diǎn)造成壓力
2.讀寫小文件時(shí),獲取元數(shù)據(jù)信息更加耗時(shí)
3.mapper個(gè)數(shù)增加破婆,浪費(fèi)調(diào)度時(shí)間

2涮总、Hive小文件產(chǎn)生的原因

匯總后的數(shù)據(jù)量通常比源數(shù)據(jù)要少得多。而為了提升運(yùn)算速度祷舀,我們會(huì)增加Reducer的數(shù)量瀑梗,Hive本身也會(huì)做類似優(yōu)化——Reducer數(shù)量等于源數(shù)據(jù)的量除以hive.exec.reducers.bytes.per.reducer所配置的量(默認(rèn)1G)烹笔。Reducer數(shù)量的增加也即意味著結(jié)果文件的增加,從而產(chǎn)生小文件的問題抛丽。

3谤职、合并小文件

輸入合并。即在Map前合并小文件
輸出合并亿鲜。即在輸出結(jié)果的時(shí)候合并小文件

  • 輸入合并
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;  
//執(zhí)行Map前進(jìn)行小文件合并
set mapred.max.split.size=256000000;  
//每個(gè)Map最大輸入大小
set mapred.min.split.size.per.node=100000000; 
//一個(gè)節(jié)點(diǎn)上split的至少的大小 
set mapred.min.split.size.per.rack=100000000; 
//一個(gè)交換機(jī)下split的至少的大小
  • 輸出合并
set hive.merge.mapfiles = true 
//在Map-only的任務(wù)結(jié)束時(shí)合并小文件
set hive.merge.tezfiles=true;
set hive.merge.mapredfiles = true 
//在Map-Reduce的任務(wù)結(jié)束時(shí)合并小文件
set hive.merge.size.per.task = 256*1000*1000 
//合并文件的大小
set hive.merge.smallfiles.avgsize=16000000 
//當(dāng)輸出文件的平均大小小于該值時(shí)允蜈,啟動(dòng)一個(gè)獨(dú)立的map-reduce任務(wù)進(jìn)行文件merge

【參考】
https://blog.csdn.net/djd1234567/article/details/51581201

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者蒿柳。
  • 序言:七十年代末饶套,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子垒探,更是在濱河造成了極大的恐慌妓蛮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圾叼,死亡現(xiàn)場(chǎng)離奇詭異蛤克,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)褐奥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門咖耘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撬码,你說我怎么就攤上這事“姹#” “怎么了呜笑?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)彻犁。 經(jīng)常有香客問我叫胁,道長(zhǎng),這世上最難降的妖魔是什么汞幢? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任驼鹅,我火速辦了婚禮,結(jié)果婚禮上森篷,老公的妹妹穿的比我還像新娘输钩。我一直安慰自己,他們只是感情好仲智,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布买乃。 她就那樣靜靜地躺著,像睡著了一般钓辆。 火紅的嫁衣襯著肌膚如雪剪验。 梳的紋絲不亂的頭發(fā)上肴焊,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音功戚,去河邊找鬼娶眷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啸臀,可吹牛的內(nèi)容都是我干的茂浮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼壳咕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼席揽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谓厘,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤幌羞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后竟稳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體属桦,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年他爸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聂宾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诊笤,死狀恐怖系谐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讨跟,我是刑警寧澤纪他,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晾匠,受9級(jí)特大地震影響茶袒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凉馆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一薪寓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澜共,春花似錦向叉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至展懈,卻和暖如春销睁,著一層夾襖步出監(jiān)牢的瞬間供璧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工冻记, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睡毒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓冗栗,卻偏偏與公主長(zhǎng)得像演顾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隅居,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容