Hive實戰效能調優

2021-09-24 01:10:12 字數 1862 閱讀 8422

hive是乙個資料倉儲基礎工具在hadoop中用來處理結構化資料。它架構在hadoop之上,總歸為大資料,並使得查詢和分析方便。並提供簡單的sql查詢功能,可以將sql語句轉換為mapreduce任務進行執行。

hive 構建在基於靜態批處理的hadoop 之上,hadoop 通常都有較高的延遲並且在作業提交和排程的時候需要大量的開銷。因此,hive 並不能夠在大規模資料集上實現低延遲快速的查詢,例如,hive 在幾百mb 的資料集上執行查詢一般有分鐘級的時間延遲。因此,

hive 並不適合那些需要低延遲的應用,例如,聯機事務處理(oltp)。hive 查詢操作過程嚴格遵守hadoop mapreduce 的作業執行模型,hive 將使用者的hiveql 語句通過直譯器轉換為mapreduce 作業提交到hadoop 集群上,hadoop 監控作業執行過程,然後返回作業執行結果給使用者。hive 並非為聯機事務處理而設計,hive 並不提供實時的查詢和基於行級的資料更新操作。hive 的最佳使用場合是大資料集的批處理作業,例如,網路日誌分析。

hive執行hql最終轉換的還是執行mapreduce的job任務執行,可以在mapreduce階段進行效能調優

開啟map階段壓縮

開啟輸出壓縮功能

set hive.exec.compress.intermediate=true;

開啟map輸出壓縮功能:

set mapreduce.map.output.compress=true;

設定壓縮方式:

開啟reduce輸出端壓縮

開啟最終輸出壓縮功能

set hive.exec.compress.output=true;

開啟最終資料壓縮功能

set mapreduce.output.fileoutputformat.compress=true;

設定壓縮方式

設定塊壓縮

set mapreduce.output.fileoutputformat.compress.type=block;

hive儲存

hive儲存格式:textfile/sequencefile/orc/parquet 

orc:index data/row data/stripe footer

hql之group by優化

分組:mr程式,map階段把相同key的資料分發給乙個reduce,乙個key的量很大。出現資料傾斜

在map端進行聚合(combiner)

set hive.map.aggr=true;

設定負載均衡

set hive.groupby.skewindata=true;

資料傾斜

合理避免資料傾斜

合理設定map數

合併小檔案

set hive.input.format=org.apache.hadoop.hive.ql.io.combinehiveinputformat;

合理設定reduce數

在map端進行聚合(combiner)

set hive.map.aggr=true;

設定負載均衡

set hive.groupby.skewindata=true;

jvm重用

修改 hadoop配置檔案mapred-site.xml 引數屬性設定

mapreduce.job.jvm.numtasks 

15

《Hive效能調優實戰》筆記

一直感覺hive入門易,調優才是學習提公升重點,這本書專門講hive調優的,主題非常好,之前的實習中hive的使用頻率挺高的,如果能通過調優提高10 的效率,帶來的時間節省就很可觀了。time taken記錄的是使用者從提交作業到返回結果期間,使用者等待的所有時間 total mapreduce c...

hive效能調優

原文 limit 限制調整 因為使用 limit 語句時候,是先執行整個查詢語句,然後再返回部分結果的 set hive.limit.optimize.enable true set hive.limit.row.max.size 10000 set hive.limit.optimize.limi...

Hive效能調優

軟體環境 hive1.2.1 hadoop2.6.4 直接使用hive cli模式執行 1.設定執行引擎 set hive.execution.engine mr set hive.execution.engine spark 如果設定執行引擎為mr,那麼就會呼叫hadoop的maprecude來執...