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)
