一、整體架構優化
現在hive的整體框架如下,計算引擎不僅僅支援map/reduce,並且還支援tez、spark等。根據不同的計算引擎又可以使用不同的資源排程和儲存系統。
整體架構優化點:
1、根據不同業務需求進行日期分割槽,並執行型別動態分割槽。
0.14中預設hive.exec.dynamic.partition=ture
2、為了減少磁碟儲存空間以及i/o次數,對資料進行壓縮
job輸出檔案按照block以gzip方式進行壓縮。
純文字檢視
複製**
12
3
mapreduce.output.fileoutputformat.compress
=
true
mapreduce.output.fileoutputformat.compress.type
=
block
mapreduce.output.fileoutputformat.compress.codec
=
org.apache.hadoop.io.compress.gzipcodec
map輸出結果也以gzip進行壓縮。
純文字檢視
複製**
12
mapreduce.map.output.compress
=
true
mapreduce.map.output.compress.codec
=
org.apache.hadoop.io.compress.gzipcodec
對hive輸出結果和中間結果進行壓縮。
純文字檢視
複製**
12
hive.exec.compress.output
=
true
hive.exec.compress.intermediate
=
true
3、hive中間表以sequencefile儲存,可以節約序列化和反序列化的時間
hive.query.result.fileformat=sequencefile
4、yarn優化,在此不再展開,後面專門介紹。
二、mr階段優化
hive操作符有:
執行流程為:
reduce切割演算法:
hive.exec.reducers.max=999
hive.exec.reducers.bytes.per.reducer=1g
reduce task num=min,可以根據實際需求來調整reduce的個數。
三、job優化
1、本地執行
預設關閉了本地執行模式,小資料可以使用本地執行模式,加快執行速度。
hive.exec.mode.local.auto=true
預設本地執行的條件是,hive.exec.mode.local.auto.inputbytes.max=128mb, hive.exec.mode.local.auto.tasks.max=4,reduce task最多1個。 效能測試:
資料量(萬) 操作 正常執行時間(秒) 本地執行時間(秒)
170 group by 36 16
80 count 34 6
2、mapjoin
預設mapjoin是開啟的, hive.auto.convert.join.noconditionaltask.size=10mb
裝載到記憶體的表必須是通過scan的表(不包括group by等操作),如果join的兩個表都滿足上面的條件,/mapjoin/指定**不起作用,只會裝載小表到記憶體,否則就會選那個滿足條件的scan表。
四、sql優化
整體的優化策略如下:
關於清除浮動的四種方法
浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用overflow屬性來清除浮動 ovh 先找到浮動盒子的父元素,再在父...
關於清除浮動的四種方法
浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用 overflow 屬性來清除浮動 ovh 先找到浮動盒子的父元素,再...
關於清除浮動的四種方法
浮動對頁面的影響 如果乙個父盒子中有乙個子盒子,並且父盒子沒有設定高,子盒子在父盒子中進行了浮動,那麼將來父盒子的高度為0.由於父盒子的高度為0,下面的元素會自動補位,所以這個時候要進行浮動的清除。關於清除浮動的方式 方式一 使用overflow屬性來清除浮動 ovh overflow hidden...