玩转大数据大数据大数据 爬虫Python AI Sql

Hive 调优

2018-10-09  本文已影响5人  9c0ddf06559c

列出调优参数列表

-- 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; -- 调整最大资源使用量

具体可参考https://www.cnblogs.com/xd502djj/p/3799432.html

上一篇下一篇

猜你喜欢

热点阅读