要解決數(shù)據(jù) 傾斜,WebUI首先要定位數(shù)據(jù) 傾斜。Hive 數(shù)據(jù) 傾斜和數(shù)據(jù)通貨膨脹筆記難得的周末,整理了一個(gè)星期的工作,發(fā)現(xiàn)最近一直被數(shù)據(jù) 傾斜的問題困擾,但還是很安靜。
1。請選擇有效的單元格區(qū)域。2.單擊格式菜單選擇單元格。3.在彈出的對話框中選擇對齊選項(xiàng)卡,并將方向設(shè)置為30度。4.單擊確定。選中單元格區(qū)域,在彈出的對話框中的對齊選項(xiàng)卡上點(diǎn)擊格式-單元格-設(shè)置方向?yàn)?0度,點(diǎn)擊確定。
Mapjoin是一種避免數(shù)據(jù) 傾斜的手段,它允許map階段的join操作。Mapjoin將所有小表讀入內(nèi)存,直接取另一個(gè)表的數(shù)據(jù)和map階段的。因?yàn)檫B接操作是在map中進(jìn)行的,所以歸約操作的效率會高很多。在hive中有一個(gè)特定的操作:join Encounters。連接多個(gè)表時(shí),小表放在join的左側(cè),大表放在Jion的右側(cè)。當(dāng)執(zhí)行這樣的join連接時(shí),小表中的數(shù)據(jù)將被緩存在內(nèi)存中。
觸發(fā)shuffle的常用運(yùn)算符:distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repair等。要解決數(shù)據(jù) 傾斜,首先要定位數(shù)據(jù) 傾斜發(fā)生在哪里,首先是哪個(gè)階段,直接在WebUI上看就行了,再看耗時(shí)的任務(wù)和/12344。
查看導(dǎo)致傾斜的密鑰的數(shù)據(jù)分發(fā)。根據(jù)操作的不同,查看密鑰分布有多種方式:1 .如果是由SparkSQL中的groupby和join語句引起的,數(shù)據(jù)。2.如果數(shù)據(jù) 傾斜是SparkRDD執(zhí)行shuffle運(yùn)算符導(dǎo)致的,可以添加代碼來檢查Spark job中的密鑰分布,比如RDD.countByKey()。
4、hive 數(shù)據(jù) 傾斜及解決方案1,-1由空值引起/傾斜解決方案1: Where條件過濾掉空值解決方案2: concat(hive ,rand())用于在關(guān)聯(lián)時(shí)給出一個(gè)隨機(jī)值,因?yàn)榭罩祬⑴cshuffle時(shí)的哈希結(jié)果是一樣的,那么我們可以2 .不同的數(shù)據(jù)types-1傾斜solutions:cast用于轉(zhuǎn)換成相同的數(shù)據(jù)type 3,由不可分割的大文件數(shù)據(jù)觸發(fā)。
5、 數(shù)據(jù) 傾斜導(dǎo)致子任務(wù)積壓業(yè)務(wù)背景:在一個(gè)流程中,有兩個(gè)重要的子任務(wù):一個(gè)是數(shù)據(jù)遷移,kafka 數(shù)據(jù)被實(shí)時(shí)滴入Es;另一種是kafka 數(shù)據(jù)聚合成hbase,兩個(gè)子任務(wù)以同樣的方式連接。上游話題的tps峰值達(dá)到了56w。問題描述:24個(gè)任務(wù)管理器(CPU)將沒有時(shí)間花費(fèi)。問題原因:窗口聚合的任務(wù)的分組字段的分組粒度太小,哈希無法打散。數(shù)據(jù) 傾斜嚴(yán)重,導(dǎo)致少數(shù)TaskManager壓力過大,從而影響下降Es的效率,導(dǎo)致反壓。
結(jié)果:修改前,24個(gè)任務(wù)管理器(CPU)沒有時(shí)間消耗,修改后,20個(gè)CPU可以完成任務(wù)。Kafka Real-time數(shù)據(jù)drop Es的16個(gè)任務(wù)管理器,聚合kafka 數(shù)據(jù)作為hbase的4個(gè)任務(wù)管理器的窗口。另外,在數(shù)據(jù)和數(shù)據(jù)輸入的Tps相同的情況下,Hbase的輸出能力遠(yuǎn)遠(yuǎn)超過Es,所以在考慮實(shí)時(shí)任務(wù)落入數(shù)據(jù)進(jìn)入Es時(shí)要慎重。
6、Hive 數(shù)據(jù) 傾斜與 數(shù)據(jù)膨脹小記難得的周末。整理了一個(gè)星期的工作,發(fā)現(xiàn)最近一直被數(shù)據(jù) 傾斜這個(gè)問題困擾,我還是靜下心來總結(jié)一下所謂的大雁留痕是什么吧。其實(shí)這個(gè)問題以前也遇到過,只是當(dāng)時(shí)數(shù)據(jù)的金額不大,這個(gè)問題可以用另一種方式規(guī)避,現(xiàn)在,TB-class 數(shù)據(jù)已經(jīng)無法規(guī)避,也很難從中吸取教訓(xùn)。把遇到的場景總結(jié)成以下三類,看具體場景,可以細(xì)分為以下幾個(gè)問題。具體原理這里就不描述了,mapreduce的幾個(gè)進(jìn)程相當(dāng)于合并器階段,在維度表、小表(記錄數(shù)在10000以下)的連接中經(jīng)常出現(xiàn)map端的部分聚合。