1.開啟Fetch抓取
Hive優(yōu)化(十四)- Fetch抓弱锓ぁ(Hive可以避免進(jìn)行MapReduce)
2.使用本地模式
Hive優(yōu)化(十五)-本地模式(小數(shù)據(jù)集縮短執(zhí)行時間)
3.表的優(yōu)化
4.數(shù)據(jù)傾斜
Hive優(yōu)化(五)-避免數(shù)據(jù)傾斜
? 某一個reduce處理數(shù)據(jù)量太大煞肾,產(chǎn)生處理效率降低勾栗。
1)map個數(shù)的設(shè)置
blocksize minsplit maxsplit
?max(minsplit ,min(blocksize ,maxsplit))
set dfs.blocksize;
- 2)map是不是越多越好
對于小文件,要進(jìn)行合并操作
- 3)是不是保證每個map處理接近128m的文件塊郊霎,就高枕無憂了?
reduce的設(shè)置
1)recude是不是越多越好
不是爷绘,浪費(fèi)資源
如何有效的設(shè)置reduce個數(shù)
如果指定分區(qū)书劝,最好按照指定分區(qū)的個數(shù)進(jìn)行設(shè)置
如果動態(tài)分區(qū),需要自己按照數(shù)據(jù)量的大小進(jìn)行嘗試分區(qū)
5.并行執(zhí)行
6.嚴(yán)格模式
7.JVM重用
- JVM重用是Hadoop調(diào)優(yōu)參數(shù)的內(nèi)容土至,其對Hive的性能具有非常大的影響购对,特別是對于很難避免
小文件的場景或task特別多的場景,這類場景大多數(shù)執(zhí)行時間都很短陶因。
- Hadoop的默認(rèn)配置通常是使用派生JVM來執(zhí)行map和Reduce任務(wù)的骡苞。這時JVM的啟動過程可能會造成相當(dāng)大的開銷,尤其是執(zhí)行的job包含有成百上千task任務(wù)的情況楷扬。
JVM重用可以使得JVM實例在同一個job中重新使用N次解幽。
N的值可以在Hadoop的mapred-site.xml文件中進(jìn)行配置。通常在10-20之間烘苹,具體多少需要根據(jù)具體業(yè)務(wù)場景測試得出躲株。
<property>
<name>mapreduce.job.jvm.numtasks</name>
<value>10</value>
<description>How many tasks to run per jvm. If set to -1, there is
no limit.
</description>
</property>
這個功能的缺點是,開啟JVM重用將一直占用使用到的task插槽镣衡,以便進(jìn)行重用霜定,直到任務(wù)完成后才能釋放。如果某個“不平衡的”job中有某幾個reduce task執(zhí)行的時間要比其他Reduce task消耗的時間多的多的話廊鸥,那么保留的插槽就會一直空閑著卻無法被其他的job使用望浩,直到所有的task都結(jié)束了才會釋放。
8.推測執(zhí)行
9.壓縮
待續(xù)黍图,有需要可以關(guān)注我,哈哈哈!