列出调优参数列表
-- group by,join 数据倾斜
set hive.groupby.skewindata=true; --如果是group by过程出现倾斜 应该设置为true
set hive.skewjoin.key=100000; --这个是join的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
set hive.optimize.skewjoin=true;--如果是join 过程出现倾斜 应该设置为true
-- 控制map数量
set mapred.min.split.size.per.node; -- 一个节点上split的至少的大小
set mapred.min.split.size.per.rack; -- 一个交换机下split至少的大小
set mapred.max.split.size; -- 一个split最大的大小
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat -- map端做combine
set spark.hadoop.mapreduce.input.fileinputformat.split.maxsize=67108864; --spark控制map数量
set spark.hadoop.mapreduce.input.fileinputformat.split.minsize=67108864; --spark控制map数量
-- 控制reduce数量 (计算reducer数的公式很简单N=min( hive.exec.reducers.max ,总输入数据量/ hive.exec.reducers.bytes.per.reducer ))
set mapred.reduce.tasks; -- 强制指定reduce的任务数量
set hive.exec.reducers.bytes.per.reducer; -- 每个reduce任务处理的数据量,默认为1000^3=1G
set hive.exec.reducers.max; -- 每个任务最大的reduce数,默认为999
-- map 端聚合
set hive.map.aggr = true; -- 是否在 Map 端进行聚合,默认为 True
set hive.groupby.mapaggr.checkinterval = 100000; -- 预先取n条聚合检查
set hive.map.aggr.hash.min.reduction=0.5; -- 如果聚合后的条数/checkinterval>0.5,则不再聚合
-- 小文件合并
set hive.merge.mapfiles = true -- 是否和并 Map 输出文件,默认为 True
set hive.merge.mapredfiles = false -- 是否合并 Reduce 输出文件,默认为 False
set hive.merge.size.per.task = 256*1000*1000 -- 合并文件的大小
-- mapreduce运行时JVM内存
set mapreduce.map.memory.mb = 4096
set mapreduce.reduce.memory.mb = 4096
-- spark参数调优
set spark.executor.memroy=3G; -- 设置executor运行内存
set spark.yarn.executor.memoryOverhead=??? -- 设置堆外内存大小
set spark.driver.memory=14G; -- XT调整driver内存
set spark.executor.memory=4G; -- 调整executor内存
set spark.executor.cores=2; -- 调整executor核数
set spark.sql.shuffle.partitions=4000; -- 调整并发度
set spark.dynamicAllocation.maxExecutors=2000; -- 调整最大资源使用量
网友评论