天天看點

Hive Tunning(二)優化存儲

接着上一章我們講的hive的連接配接政策,現在我們講一下hive的資料存儲。

下面是hive支援的資料存儲格式,有我們常見的文本,json,xml,這裡我們主要講一下orcfile。

built-in formats: 

– orcfile 

– rcfile 

– avro 

– delimited text 

– regular expression 

– s3 logfile 

– typed bytes 

• 3 

rd 

-party addons: 

– json 

– xml

Hive Tunning(二)優化存儲

這種格式非常适合hdfs,它有以下的<b>優點</b>:

•高壓縮 

– 高壓縮比. 

– 字典編碼. 

•高性能 

– 自帶索引. 

– 高效的精确查詢. 

• 靈活的資料模型 

– 支援所有的hive類型,包括maps.

Hive Tunning(二)優化存儲

從圖中可以看出,orc格式的檔案存儲大小僅為文本的30%左右,比gz格式的都小,采用zlib壓縮的話,更小,僅有22%左右。

使用orc格式存儲的方式很簡單,在建表的時候stored as orc即可

相關參數,自己看,不解釋了。

Hive Tunning(二)優化存儲

不适用zlib壓縮的話,查詢速度更快,但是也大一些。

Hive Tunning(二)優化存儲

(1)跳躍讀取:采用分區partition或者使用skew,才用orcfile二次排序。

(2)在連接配接字段上排序并且bucket,在連接配接小表的時候采用broadcast joins。

(3)對經常使用的資料,增加備份因子,激活short-circuit read,采用tez。

Hive Tunning(二)優化存儲

當某個表很大的時候,我們往往要對其進行分區,比如按照時間來分區。

其中的xdate和state是不存在的列,你可以認為它們是虛拟列,虛拟列會在hdfs當中建立子目錄,屬于分區的記錄會存在那個子檔案夾中。 

使用分區之後,在查詢和插入的時候,就必須帶有至少一個分區字段,否則查詢将會失敗。

如果你想一次查出所有資料,不想受這個限制的話,你可以 hive.exec.dynamic.partition.mode參數置為nonstrict。 

有時候插入資料的時候,我們需要重新排序,在select 語句裡面把虛拟列也加上,這樣會有排序的效果。

Hive Tunning(二)優化存儲

mapred.max.split.size和mapred.min.split.size

min    太大-&gt;   太少mapper.    

max    太小-&gt;   mapper太多.   

example:    

– set    mapred.max.split.size=100000000;    

– set    mapred.min.split.size=1000000; 

當然也有個原則,當mappers出現搶占資源的時候,才調整這些參數。

Hive Tunning(二)優化存儲

– set    io.sort.mb=100;    

• all    the    time:    

– set    hive.optmize.mapjoin.mapreduce=true;    

– set    hive.optmize.bucketmapjoin=true;    

– set    hive.optmize.bucketmapjoin.sortedmerge=true;    

– set    hive.auto.convert.join=true;    

– set    hive.auto.convert.sortmerge.join=true;    

– set    hive.auto.convert.sortmerge.join.nocondi1onaltask=true;    

• when    bucketing    data:    

– set    hive.enforce.bucketing=true;    

– set    hive.enforce.sortng=true;    

• these and more are set by default in hdp 1.3(明顯的廣告詞,說明hdp比較強大,已經給我們設定好了).    

這些參數我們可以在hive-site.xml中查詢到,我們也可以在shell中查詢。

(1)查詢所有的參數

Hive Tunning(二)優化存儲

(2)查詢某一個參數

Hive Tunning(二)優化存儲

(3)修改參數

Hive Tunning(二)優化存儲