hive优化参数配置
生活随笔
收集整理的這篇文章主要介紹了
hive优化参数配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
配置參數說明
--mapjoin set hive.auto.convert.join=true; set hive.auto.convert.join.noconditionaltask=true; set hive.auto.convert.join.noconditionaltask.size=10000000; set hive.mapjoin.smalltable.filesize=200000000;--輸入小文件合并,若讀取小文件較多,則設置在map端進行小文件合并參數 set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;-- 執行Map前進行小文件合并 set hive.hadoop.supports.splittable.combineinputformat = true; --其中一種方版本 set mapreduce.input.fileinputformat.split.maxsize = 256000000; set mapreduce.input.fileinputformat.split.minsize =256000000; set mapreduce.input.fileinputformat.split.minsize.per.node=256000000; set mapreduce.input.fileinputformat.split.minsize.per.rack=256000000; --另一種版本(老版本,最好都設置) SET mapred.max.split.size = 256000000; //設置mapper拆分大小 SET mapred.min.split.size = 256000000; SET mapred.min.split.size.per.node = 256000000; SET mapred.min.split.size.per.rack = 256000000;--開啟輸出小文件合并(rcfile和orc需要特殊設置才能進行文級別的合并,parquet、textfile、sequencefile默認進行文件級別的合并) set hive.merge.mapfiles = true;--開啟只有map(map-only)操作結束時小文件輸出合并 set hive.merge.mapredfiles = true;--開啟有MR操作結束時小文件輸出合并 set hive.merge.size.per.task = 256000000;--合并后每個文件的大小 set hive.merge.smallfiles.avgsize=256000000;--當輸出文件的平均大小小于256000000時,啟動一個獨立的MR任務進行文件合并,觸發小文件合并的閥值 set hive.merge.orcfile.stripe.level=false; --當這個參數設置為true,orc文件進行stripe Level級別的合并,當設置為false,orc文件進行文件級別的合并。 set hive.merge.rcfile.block.level=false;--當這個參數設置為true,rcfile文件進行block Level級別的合并,當設置為false,rcfile文件進行文件級別的合并。--開啟并發 SET hive.exec.parallel = true; //開啟任務并行執行 SET hive.exec.parallel.thread.number = 16; //同一個sql允許并行任務的最大線程數--設置reduce限制,以下只設置其中一個即可 --設置每個reducer處理的數據(默認是1G,設置為5G) set hive.exec.reducers.bytes.per.reducer=5120000000; --設置reduce個數 set mapred.reduce.tasks=50;--map或reduce執行緩慢設置 --map set mapreduce.map.cpu.vcores=1; SET mapreduce.map.memory.mb=4096; SET mapreduce.map.java.opts=-Xmx3572M; --reduce --REDUCE YARN 申請內存 set mapreduce.reduce.cpu.vcores=1; set mapreduce.reduce.memory.mb=4096; --REDUCE JVM 內存 set mapreduce.reduce.java.opts=-Xmx3572M;--join數據傾斜 set hive.optimize.skewjoin=true; --groupby數據傾斜優化 set hive.groupby.skewindata=true;--groupby時開啟map端部分聚合,相當于Combiner set hive.map.aggr=true;--開啟MR中間結果壓縮 set hive.exec.compress.intermediate=true;--開啟hive中間傳輸數據壓縮功能 set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec --開啟MR最終輸出Reduce輸出壓縮 set hive.exec.compress.output=true; --開啟hive最終輸出數據壓縮功能 set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; set mapred.output.compression.type=BLOCK;--設置mapreduce最終數據輸出壓縮為塊壓縮,只有SEQUENCEFILE格式需要設置--設置創建文件的格式,例如: create table t1 as select * from t2; SET hive.default.fileformat = orc;--動態分區 SET hive.exec.dynamic.partition=true; --是否允許動態分區 SET hive.exec.dynamic.partition.mode=nostrict; --分區模式設置 SET hive.exec.max.dynamic.partitions=100000; --允許動態分區的最大數量 SET hive.exec.max.dynamic.partitions.pernode =10000; --單個節點上的mapper/reducer允許創建的最大分區--向量化執行 set hive.vectorized.execution.enabled=TRUE; --開啟mapreduce的遞歸查詢模式 set mapreduce.input.fileinputformat.input.dir.recursive=true--頻繁GC --GC(Garbage Collecting)是JVM特有垃圾回收機制;在Hadoop集群應用程序運行時,如果堆內存設置小或者小文件太多,都會引發頻繁的GC,浪費計算資源并導致任務執行時間長甚至失敗。 --MAP階段GC時間40%以上,OPTS參數調整: set mapreduce.map.cpu.vcores=$[目前值]*2 set mapreduce.map.memory.mb =$[目前值]*2 set mapreduce.map.java.opts=$[目前值] *2 --REDUCE階段GC時間40%以上,OPTS參數調整: set mapreduce.reduce.cpu.vcores=$[目前值]*2 set mapreduce.reduce.memory.mb=$[目前值]*2 set mapreduce.reduce.java.opts=$[目前值]*2配置示例
demo1:
--mapjoin set hive.auto.convert.join=true; set hive.auto.convert.join.noconditionaltask=true; set hive.auto.convert.join.noconditionaltask.size=10000000; set hive.mapjoin.smalltable.filesize=200000000; --若讀取小文件較多,則設置在map端進行小文件合并參數 set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; set hive.hadoop.supports.splittable.combineinputformat = true; set mapreduce.input.fileinputformat.split.maxsize = 256000000; set mapreduce.input.fileinputformat.split.minsize.per.node=256000000; set mapreduce.input.fileinputformat.split.minsize.per.rack=256000000; --配置MR任務結束后進行文件合并 set hive.merge.mapfiles = true; set hive.merge.mapredfiles = true; set hive.merge.size.per.task = 256000000; set hive.merge.smallfiles.avgsize=256000000; set hive.merge.orcfile.stripe.level=false; --當這個參數設置為true,orc文件進行stripe Level級別的合并,當設置為false,orc文件進行文件級別的合并。 set hive.merge.rcfile.block.level=false;--當這個參數設置為true,rcfile文件進行block Level級別的合并,當設置為false,rcfile文件進行文件級別的合并。SET hive.exec.parallel = true; SET hive.exec.parallel.thread.number = 16; SET mapred.max.split.size = 256000000; SET mapred.min.split.size.per.node = 256000000; SET mapred.min.split.size.per.rack = 256000000; --設置reduce限制 set hive.exec.reducers.bytes.per.reducer=5000000000; --map或reduce執行緩慢設置 SET mapreduce.map.memory.mb=4096; SET mapreduce.map.java.opts=-Xmx3572M; set mapreduce.reduce.memory.mb=4096; set mapreduce.reduce.java.opts=-Xmx3572M; --數據傾斜 --join數據傾斜 set hive.optimize.skewjoin=true; --groupby數據傾斜優化 set hive.groupby.skewindata=true;--啟用壓縮 SET mapred.output.compress = true; SET hive.exec.compress.output = true; SET hive.default.fileformat = orc;demo2:
--mapjoin set hive.auto.convert.join=true; set hive.auto.convert.join.noconditionaltask=true; set hive.auto.convert.join.noconditionaltask.size=10000000; set hive.mapjoin.smalltable.filesize=200000000; --若讀取小文件較多,則設置在map端進行小文件合并參數 set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; set hive.hadoop.supports.splittable.combineinputformat = true; set mapreduce.input.fileinputformat.split.maxsize = 2560000000; set mapreduce.input.fileinputformat.split.minsize.per.node=2560000000; set mapreduce.input.fileinputformat.split.minsize.per.rack=2560000000;SET mapred.max.split.size = 2560000000; SET mapred.min.split.size.per.node = 2560000000; SET mapred.min.split.size.per.rack = 2560000000;--配置MR任務結束后進行文件合并 set hive.merge.mapfiles = true; set hive.merge.mapredfiles = true; set hive.merge.size.per.task = 2560000000; set hive.merge.smallfiles.avgsize=2560000000; set hive.merge.orcfile.stripe.level=false; set hive.merge.rcfile.block.level=false;SET hive.exec.parallel = true; SET hive.exec.parallel.thread.number = 32; --設置reduce限制 set hive.exec.reducers.bytes.per.reducer=5000000000; --map或reduce執行緩慢設置 SET mapreduce.map.memory.mb=8192; SET mapreduce.map.java.opts=-Xmx7186M; set mapreduce.reduce.memory.mb=8192; set mapreduce.reduce.java.opts=-Xmx7186M; --數據傾斜 set hive.optimize.skewjoin=true; --啟用壓縮 SET mapred.output.compress = true; SET hive.exec.compress.output = true; SET hive.default.fileformat = orc;總結
以上是生活随笔為你收集整理的hive优化参数配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java json与xml互转工具类
- 下一篇: MySQL查询上周(从周一~周日)