調優impala:5個頂級的性能優化對於最牛b的mpp

不生產博客,只是漢化別人的成果

pdf鏈接

https://cdn.oreillystatic.com/en/assets/1/event/193/Tuning%20Impala_%20The%20top%20five%20performance%20optimizations%20for%20the%20best%20BI%20and%20SQL%20analytics%20on%20Hadoop%20Presentation.pdf

目錄

概述

分區

Sorting

運行時過濾和動態分區裁剪

字段類型選擇

統計信息


 

封面大概是這樣式的

tuning impala:the top five performance optimizations for best bi and sql analytics on hadoop

the leader for analytic sql on hadoop

 hadoop上sql分析的領導者,哈哈哈

下面是單用戶下TPC-DS基準測試的對比,吊打所有sql on hadoop

 

下面就是要優化的幾個點

概述

 物理數據模型和schema設計:

選擇最好的物理表示對於你的邏輯數據模型

1.分區

2.排序

3.運行時過濾和動態分區修剪

4.字段類型

5.嵌套類型(是個什麼鬼)

操作上的優化

1.統計信息

2.內存管理

分區

物理上隔離你的數據以便查詢的時候訪問一部分數據,是scan最小的單位

 

選擇合適的分區粒度

太少,影響並行度,太多,小文件太多,降低scan效率,並對hive metadate,hdfs namenode,impala的catalog造成較大的壓力

原則:定期的compact表文件,控制每個分區的文件數量,提高scan的效率

Sorting

對數據文件進行排序提高file統計信息的效率和壓縮(排序是個什麼騷操作呀)

排序可以用到一些字段上,比如有太多值導致不能分區

生成排序數據文件通過添加sort by在表創建的時候,只在impala2.9+可用

parquet社區正在努力的擴展來提升lookup(隨機讀,hbase就是幹這事的)性能

排序:augment 分區(加強分區?)

需求:找出給定窗口內在平安夜消費最多的顧客

sql挺簡單的

下面是sort與不sort的對比,這個還得自己測下 ,排序後scan hdfs也少了

 

排序:Complementlement分區(補充分區)

 lookup性能對比

以顧客id排序,在想如果是string排序的話效果會不會也這樣,string測了下沒提升,可能我數據量太小

運行時過濾和動態分區裁剪

 

兩個表關聯,關聯字段是大表的分區字段,執行計劃就是廣播小表

 即使有統計信息,計劃器也不知道那兩字段能關聯需要scan哪些數據,但是很顯然我們可以嘗試下優化,爲什麼會scan出28億去關聯呢?僅僅得到一個1.3億的結果

第一步,計劃器告知join生成一個布隆過濾器來得到符合條件去重的d_date_sk

第二部,讀取右表所有的字段填充布隆過濾器包含所有不同的值

第三步,查詢協調器發送過濾器到左表,在scan之前

 

scan預估所有的分區沒有在布隆過濾器匹配到的,僅僅1824個分區中讀了150個

第5步,僅僅scan出1.3億即可

臥槽,啥意思,impala本身有運行時過濾和動態分區修剪嗎,在sql級別我們不需要幹啥就行了

這個得後面測測 

字段類型選擇

字段類型選擇影響性能

計算:數值類型允許直接計算,string類型必須強轉

磁盤存儲大小:數值類型更compact,壓的更緊,哈哈哈

更緊湊的compact,只需要更少的網絡

運行時代碼生成,一些類型不支持(char、timestamp、tinyint)

通用的規則

選擇數值類型對於數字而不是字符類型

儘量使用佔磁盤更小的類型,只要能夠容納所有的值

官網的測試,TPCH,差別還是挺大

 後面還有個複雜的schema,一般用不到就不粘了

統計信息

應該是執行計劃吧,不懂爲啥叫統計信息

首先第一個圖,根據sql和成本 scan預估(就是謂詞下推,能少scan點數據)

可以看到右邊根據where條件只scan部分數據

第二張圖,根據條件scan和join,不知道啥意思,爲啥我試了下explain沒這玩意 

 第三章圖,統計信息能夠決定以何種方式關聯,下面就是廣播,把一張28gG的廣播了

第四張圖,統計信息可以選擇一種合適的join類型

第五張圖,join前的謂詞下推

 我去,原來說的是有統計信息的好處,好吧,說的幾種除了sort別的沒啥用呀

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章