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;
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)