A所有的hive任務都會有reducer的執行嗎?
答:不是,由於當前hive的優化,使得一般簡單的任務不會去用reducer任務;只有稍微複雜的任務纔會有reducer任務
舉例:使用select * from person ; 就不會有reducer
使用from person p
insert into person2 select p.age,p.name
B\hive解決了什麼問題
答:多用戶的使用,解決了元數據的衝突,hive2代理管理元數據
區別hive2,hiveserver2是服務,而hive是一個交互窗口
C\設置時鐘同步的定時任務
crontab -e
*/10 * * * * /usr/sbin/ntpdate time.nist.gov
D\hive的函數:UDF UDAF UDTF的區別
UDF: 單行進入,單行輸出
UDAF: 多行進入,單行輸出
UDTF: 單行輸入,多行輸出
E\hive的優化
答:優化可以從幾個方面着手:
1. 好的模型設計事半功倍。
2. 解決數據傾斜問題。
3. 減少 job 數。
4. 設置合理的 map reduce 的 task 數,能有效提升性能。(比如,10w+級別的計算,用
160 個 reduce,那是相當的浪費,1 個足夠)。
5. 自己動手寫 sql 解決數據傾斜問題是個不錯的選擇。set hive.groupby.skewindata=true;
這是通用的算法優化,但算法優化總是漠視業務,習慣性提供通用的解決方法。 Etl 開發
人員更瞭解業務,更瞭解數據,所以通過業務邏輯解決傾斜的方法往往更精確,更有效。
6. 對 count(distinct)採取漠視的方法,尤其數據大的時候很容易產生傾斜問題,不抱僥倖
心理。自己動手,豐衣足食。
7. 對小文件進行合併,是行至有效的提高調度效率的方法,假如我們的作業設置合理的文
件數,對雲梯的整體調度效率也會產生積極的影響。
8. 優化時把握整體,單個作業最優不如整體最優。
F優化:
1\排序優化
Order by 實現全局排序,一個 reduce 實現,效率低
Sort by 實現部分有序,單個 reduce 輸出的結果是有序的,效率高,通常和
DISTRIBUTE BY 關鍵字一起使用(DISTRIBUTE BY 關鍵字 可以指定 map 到 reduce
端的分發 key)
CLUSTER BY col1 等價於 DISTRIBUTE BY col1 SORT BY col1
2\分區優化
3\合併小文件
4\避免空值關聯,多用聚合函數,多用臨時表
---------------------
作者:highfei2011
來源:CSDN
原文:https://blog.csdn.net/high2011/article/details/51594990
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!