第十章 Hive調優 【本地模式】


1. 本地模式
1. 什么是本地模式
hive 默認會將所有任務,提交到yarn上執行,由yarn負責整個job的調度與監控
當數據集非常小時(只有一個block,只存在一個datanode節點上),提交job的時間 將遠大於 job運行的時間,
此時可以開啟本地模式,將job在本地運行,不提交到yarn上
避免了和yarn的交互,大大提高了數據計算的效率

2. 使用場景
數據集非常小時(比如 只有一個block的數據),數據量越小,優化效果越明顯

3. 開啟本地模式(參數設置)
        --為true,表示 讓hive 自行判斷是否將任務在本地運行(默認為 false,不開啟)
        --判斷條件 : 1.輸入數據量 2.輸入文件個數
        set hive.exec.mode.local.auto=true;
        --輸入字節數 小於設置值時, 任務為本地運行
        --默認值 134217728Bytes = 128M (根據實際環境block大小設置)
        --可根據 set dfs.blocksize 查看
        set hive.exec.mode.local.auto.inputbytes.max=50000000;
        --輸入文件個數(MapTask) 小於設置值時, 任務為本地運行
        --默認值 4
        set hive.exec.mode.local.auto.input.files.max=10;

          set mapreduce.job.reduces=1; -- 注意將reduce個數設置為1 才會生效

 4.測試
-- yarn模式(可以在yarn上看到提交的job)
select name,count(friend) from maptab group by name;
Time taken: 13.372 seconds, Fetched: 3 row(s)
-- 本地模式(無法在yanr上看到提交的job)
set hive.exec.mode.local.auto=true;
set hive.exec.mode.local.auto.inputbytes.max=50000000;
set hive.exec.mode.local.auto.input.files.max=10;
select name,count(friend) from maptab group by name;
Time taken: 1.733 seconds, Fetched: 3 row(s)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM