精华内容
下载资源
问答
  • Hive常用参数设置

    2020-04-03 17:38:18
    1、Hive 是否应该自动地根据输入文件大小(默认为false) set hive.exec.mode.local.auto; 2、是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 ...3、Mapper/Reducer 在本地模式的最大内存量,以字...
    1、Hive 是否应该自动地根据输入文件大小(默认为false)
    set hive.exec.mode.local.auto;
    
    2、是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。 
    set hive.auto.convert.join;
    
    3、Mapper/Reducer 在本地模式的最大内存量,以字节为单位,0为不限制。
    set hive.mapred.local.mem;
    
    4、所提交 Job 的 reduer 的个数,使用 Hadoop Client 的配置。默认是-1,表示Job执行的个数交由Hive来分配
    set mapred.reduce.tasks;
    
    5、决定 group by 操作是否支持倾斜的数据。原理是,在Group by中,对一些比较小的分区进行合并
    set hive.groupby.skewindata;
    
    6、Hive 默认的输出文件格式,与创建表时所指定的相同,可选项为 'TextFile''SequenceFile' 或者 'RCFile'set hive.default.fileformat;
    
    7、Map/Redure 模式,如果设置为 strict,将不允许笛卡尔积。 
    set hive.mapred.mode;
    
    8、是否开启 map/reduce job的并发提交。默认Map/Reduce job是顺序执行的,默认(false)并发数量是8,可以配置
    set hive.exec.parallel;
    
    9、决定 map/reduce Job 是否应该使用各自独立的 JVM 进行提交(Child进程),默认情况下,使用与 HQL compiler 相同的 JVM 进行提交。 
    set hive.exec.submitviachild;
    
    10、通过 TRANSFROM/MAP/REDUCE 所执行的用户脚本所允许的最大的序列化错误数。
    set hive.exec.script.maxerrsize;
    
    11、决定查询中最后一个 map/reduce job 的输出是否为压缩格式。
    set hive.exec.compress.output;
    
    12、每一个 reducer 的平均负载字节数。改变此参数可以用来影响hive的启动的Reducer的个数,默认每个Reducer处理1G数据
    set hive.exec.reducers.bytes.per.reducer;
    
    13、reducer 个数的上限。
    set hive.exec.reducers.max;
    
    14、并发提交时的并发线程的个数。 默认8个
    set hive.exec.parallel.thread.number;
    
    15、是否打开动态分区。 需要打开
    set hive.exec.dynamic.partition;
    
    16、打开动态分区后,动态分区的模式,有 strict 和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict 则无此要求。 建议设置成nonstrict,strict情况下,查询表数据要求强制指定分区。
    set hive.exec.dynamic.partition.mode;
    
    17、所允许的最大的动态分区的个数。可以手动增加分区。
    set hive.exec.max.dynamic.partitions;
    
    18、单个 reduce 结点所允许的最大的动态分区的个数。
    set hive.exec.max.dynamic.partitions.pernode;
    
    19、默认的动态分区的名称,当动态分区列为''或者null时,使用此名称。'' 
    '__HIVE_DEFAULT_PARTITION__'
    set hive.exec.default.partition.name;
    
    20、当前正在被执行的查询字符串。
    set hive.query.string;
    
    21、每个任务合并后文件的大小,根据此大小确定 reducer 的个数,默认 256 M。
    set hive.merge.size.per.task;
    
    22、需要合并的小文件群的平均大小,默认 16 M。
    set hive.merge.smallfiles.avgsize;
    
    23、是否优化数据倾斜的 Join,对于倾斜的 Join 会开启新的 Map/Reduce Job 处理。
    set hive.optimize.skewjoin;
    
    24、倾斜键数目阈值,超过此值则判定为一个倾斜的 Join 查询。
    set hive.skewjoin.key;
    
    25、处理数据倾斜的 Map Join 的 Map 数上限。
    set hive.skewjoin.mapjoin.map.tasks;
    
    26、处理数据倾斜的 Map Join 的最小数据切分大小,以字节为单位,默认为32M。
    set hive.skewjoin.mapjoin.min.split;
    
    27、Map Reduce Job 的最小输入切分大小,与 Hadoop Client 使用相同的配置。
    set mapred.min.split.size;
    
    展开全文
  • Hive参数设置及优化

    2020-03-10 22:27:14
    Hive参数设置及优化: 1.动静态分区属性设置 2.Set hive.map.aggr=true 通过设置属性hive.map.aggr值为true来提高聚合的性能,这个设置会触发在map阶段进行的‘顶级’聚合过程。(非顶级的聚合过程会在执行一个...

    Hive参数设置及优化

    1.动静态分区属性设置
    在这里插入图片描述

    2.Set hive.map.aggr=true 通过设置属性hive.map.aggr值为true来提高聚合的性能,这个设置会触发在map阶段进行的‘顶级’聚合过程。(非顶级的聚合过程会在执行一个GROUP BY后进行。)不过,这个设置需要更多的内存

    3.本地模式设置
    大多数情况下查询都会触发一个MapReduce任务(job),hive中某些情况的查询可以不必使用MapReduce,也就是所谓的本地模式。
    例如:SELECT * FROM employees;
    在这种情况下,hive可以简单的读取employees对应的存储目录下的文件,然后输出格式化后的内容到控制台。
    Set hive.exec.mode.local.auto=true 通过设置属性hive.exec.mode.local.auto值为true,hive会尝试使用本地模式执行其他的操作,可以避免触发一些MapReduce任务(job)
    注:最好将set hive.exec.mode.local.auto=true;这个设置增加到你的$HOME/.hiverc配置文件中

    4.Set hive.auto.convert.join=true;设置为true时hive会在必要的时候启动这个优化,即在map阶段进行join操作,从而省略掉常规连接操作所需要的reduce过程,提高执行效率,当然执行这个优化有个前提条件是两个表做join时其中有一张表是小表可以加载到内存中进行操作。此外该优化常和hive.mapjoin.smalltable.filesize=25000000配置连用
    此配置是设置支持自动map join时小表的大小范围默认是25M

    5.分桶表的配置优化
    set hive.optimize.bucketmapJOIN=true;开启为true时才支持一张表的一个分桶数据与另一张表每个分桶进行匹配连接,当然前提条件是表中的数据必须按照ON语句的键进行分桶才行,而且其中一张表的分桶个数必须是另一张表的若干倍。

    6.严格模式配置(防止用户执行那些可能产生意想不到的不好影响的查询)
    Set hive.mapred.mode=strict; 开启严格模式,在严格模式下hive要求(1.order by语句查询时必须加有limit;2.分区表查询必须加where分区查询;3.限制笛卡尔积的查询)设置为nonstrict为非严格模式

    7.并行执行
    当一个job任务由多个阶段组成(MR阶段,抽样阶段,合并阶段,limit阶段等),且多个阶段间并非完全相互依赖,可以并行执行,那么这时候就可以开启并行执行,可以提高job的运行效率
    配置参数:hive.exec.parallel=true;开启并行执行
    8.调整mapper和reducer个数
    确定mapper个数和reducer个数取决于多个变量,如输入的数据量大小及对这些数据执行的操作类型等如果开启的mapper和reducer任务太多会导致启动阶段、调度和运行job过程中产生过多的开销,而如果设置的数量太少则可能没有充分利用好集群内的并行性。
    Hive里我们可以通过dfs-count命令来查看计算输入量大小,而Linux中可以通过du-s命令。
    [root@hadoop02 hadoop]# hdfs dfs -count /park/1.txt
    20/03/10 06:48:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
    0 1 25 /park/1.txt
    文件夹数 文件数 文件大小 文件地址
    关于mapper和reducer数量配置:
    hive.exec.reducers.bytes.reducer的默认值是1G,也就是说默认每个reducer默认处理最大1G数据量,我们可以通过改变这个配置数据量来改变reducer的个数
    hive.exec.reducers.tasks=3设置job任务的初始reducer个数hive的默认reducer个数是3
    hive.exec.reducers.max= ; 设定job任务最大启用reducer的个数,在集群中为了控制资源利用情况,这个设置显得非常重要。
    配置的位置集群中配置的位置 $ HIVE_HOME/conf/hive-site.xml文件中
    建议设置值=(集群总reduce槽位个数*1.5)/(执行中查询的平均个数)
    1.5是经验系数,用于防止未充分利用集群的情况

    9.JVM重用
    运用场景:当有大量小文件时可以开启JVM重用
    在Hadoop的mapred-site.xml文件(位于$Hadoop_HOME/conf目录下)中进行设置:
    在这里插入图片描述

    10.创建索引

    11.推测执行
    在这里插入图片描述

    12.开启中间压缩(注意选择一个合适的编/解码器)
    对中间数据进行压缩可以减少job中map和reduce task间的数据传输量
    但是数据压缩会增加cup的开销,选择一个低CPU开销的编/解码器要比选择一个压缩率高的编/解码器要重要得多。
    hive.exec.compress.intermediate=false;默认是false不开启

    13.最终输出结果压缩
    hive.exec.compress.output=false;默认为false

    14.set mapred.job.name = tdm_small_routine_stat_d(${hivevar:statis_date}); 设置任务名

    15.-- 每个map最大输入大小
    set mapred.max.split.size = 60000000;

    16.-- 每个map最小输入大小
    set mapred.min.split.size = 30000000;

    17.-- 执行map前进行小文件合并
    set hive.input.format = org.apache.hadoop.hive.ql.io.combinehiveinputformat;

    18.-- hive自动根据sql,选择使用common join或者map join
    set hive.auto.convert.join = false;

    19.-- 在map-only的任务结束时合并小文件
    set hive.merge.mapfiles = true;

    20.-- 在map-reduce的任务结束时不合并小文件
    set hive.merge.mapredfiles = true;

    21.-- 合并文件的大小
    set hive.merge.size.per.task = 128000000;

    22.–每个reduce处理的最大数据量
    set hive.exec.reducers.bytes.per.reducer=120000000;

    23.JOIN过程倾斜
    set hive.skewjoin.key=1000000; --这个是join的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
    set hive.optimize.skewjoin=true;–如果是join 过程出现倾斜 应该设置为true

    24.GROUP过程倾斜
    set hive.groupby.mapaggr.checkinterval=1000000 ;–这个是group的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置
    set hive.groupby.skewindata=true; --如果是group by过程出现倾斜 应该设置为true

    25.Hive 使用过多变量转换 调优参数(可以防止FAILED: IllegalStateException Variable substitution depth too large: 40 报错)
    hive.variable.substitute 控制是否打开Substitution功能,默认是true

    hive.variable.substitute.depth=40;(默认是40)

    展开全文
  • Hive2优化参数

    2019-09-30 18:15:43
    最近为了调试hive试了很多hive参数,对于hive任务优化,减少使用内存有一些自己的见解,在此做一个记录。 一:Hive是什么 Hive是面向大数据的数据仓库,是一种将SQL转换为mapreduce的工具。 二:mapreduce的...
    最近为了调试hive试了很多hive参数,对于hive任务优化,减少使用内存有一些自己的见解,在此做一个记录。

    一:Hive是什么

     Hive是面向大数据的数据仓库,是一种将SQL转换为mapreduce的工具。

    二:mapreduce的基本流程及阶段可进行的优化操作

       (其实有很多不用设置有默认的设置或设置后反而执行时间长,此处做了解,参考设置在下一节)

           附上网上的一张老图(虽然老但是很具有代表性,哈哈哈)     

            

           上面的图知道,对于mapreduce任务可分为以上几个步骤,input、splitting、Mapping、Shuffing、reducing、finalresult,我们可以对这些阶段进行分别的优化!!

    Splitting阶段优化:将输入数据进行按照大小节分,分成不同的块。

               优化点:1.适当增加切割块的大小(单个节点先按照maxsize进行切分,剩下的进行minsize大小的合并。然后是节点之间的合并,最后是机架之间的合并。)

                         set mapreduce.input.fileinputformat.split.minsize = 1024000000;
                         set mapreduce.input.fileinputformat.split.maxsize = 1024000000;(默认256M)
                         set mapreduce.input.fileinputformat.split.minsize.per.node= 1024000000;
                         set mapreduce.input.fileinputformat.split.maxsize.per.node= 1024000000;(默认1b)
                         set mapreduce.input.fileinputformat.split.minsize.per.rack= 1024000000; 
                         set mapreduce.input.fileinputformat.split.maxsize.per.rack= 1024000000;(默认1b)
                         set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;(默认存在)

    Mapping阶段优化:将相同的key进行对应的转换,其实map的个数取决于上一阶段切割的最终的数据块个数。

              优化点:1.手动规定map的个数(例子:任务中有100个map,但是可以使map分批执行一批10个)

                         set mapreduce.job.running.map.limit=20;

              2.规定map同时并行的个数(例子:任务中有100个map,但是可以使map分批执行一批10个)

                         set mapreduce.map.memory.mb=3584;(3.5G内存)  默认2.1倍会杀掉

              3.限制map可使用的最大内存

                         set hive.map.aggr = true
                         set hive.groupby.mapaggr.checkinterval = 100000(将数据每100000进行聚合)

    Shuffing阶段优化:将相同的的key放到一个reduce中,其实是一个网络传输的过程。

             优化点:1.map后进行压缩(压缩后自动解压)

                         set mapreduce.map.output.compress=true(map输出压缩,mapreduce参数)
                         set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec(map输出压缩格式,mapreduce参数) 

              2.map后进行合并文件操作

                         set hive.merge.mapfiles = true(新启一个job完成合并,合并多大set hive.merge.size.per.task决定)

    reducing阶段优化:进行数据累加操作,并将结果传输到对应的文件中。

              优化点:1.手动规定reduce的个数

                         set mapred.reduce.tasks = 20;

              2.规定reduce同时并行的个数(例子:任务中有100个reduce,但是可以使reduce分批执行一批10个)

                         set mapreduce.job.running.reduce.limit=80;

              3.限制reduce可使用的最大内存

                         set mapreduce.reduce.memory.mb=7168;(7G内存)    默认2.1倍会杀掉

              4.设置每个reduce可处理的数据大小(直接决定reduce个数)

                         set hive.exec.reducers.bytes.per.reducer=1024*1000*1000;

              5.reduce最大个数

                         set hive.exec.reducers.max =2000;(mapreduce.job.running.reduce.limit变相使用)

              6.reduce后可进行文件合并

                         set hive.merge.sparkfiles = false(spark引擎,结束后合并文件,新启动一个任务)
                         set hive.merge.tezfiles = false(tez引擎,结束后合并文件,新启动一个任务)
                         set hive.merge.mapredfiles = true(mapreduce引擎,结束后合并文件,新启动一个任务)
                         set hive.merge.smallfiles.avgsize =100*1000*1000 (输出文件小于当前值的时候,任务结束后合并文件的大小)
                         set hive.merge.size.per.task = 1024*1000*1000 (将文件合并成为多大)

    finalresult阶段优化:其实就是写文件的过程。

              优化点:1.reduce后要进行压缩写到HDFS(每个节点单独跑任务,但是最后的结果需要汇聚到一处)

                         set mapreduce.output.fileoutputformat.compress=false // 默认值是 false reduce属性
                         set mapreduce.output.fileoutputformat.compress.type=BLOCK // 默认值是 Record reduce属性
                         set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec // 默认值是 org.apache.hadoop.io.compress.DefaultCodec

    其他优化:

              JVM优化:一个JVM运行的job数是有上限的,我们可以设置最大执行的个数

                         set mapreduce.job.jvm.numtasks=100

              并发及并发线程数优化:job的子查询可能没关系,所以可以开启并发查询

                         set hive.exec.parallel = true; 
                         set hive.exec.parallel.thread.number=8;

              数据倾斜优化:可进行key值个数的判断,判断时候发生数据倾斜

                         set hive.optimize.skewjoin=true;
                         set hive.skewjoin.key=100000;(超过10000个相同的key就认为是数据倾斜,需要进行打散处理)

              分区优化:hive有桶表和分区表,可开启动态分区(其实就是不同文件夹) 

                         set hive.exec.dynamic.partition=true
                         set hive.exec.dynamic.partition.mode=nonstrict(分区表分为严格模式和非严格模式)

              job之间优化:

                         set hive.exec.compress.output=true;(最终结果压缩。若map压缩和reduce压缩都没有用,改参数使用的话。两个job第一个job后数据不压缩,第二个job输出压缩)
                         set hive.exec.compress.intermediate=true(若map压缩reduce压缩最终输出压缩都没有用,改参数使用的话。两个job第一个job后数据压缩,第二个job输出不压缩)                          SQL优化:

            小表往前放

    三:常用hive参数优化

        其实上面是对每一个阶段都进行数据优化,有很多参数都是默认开启或者有默认值的。

        只需要用到常用的几个就行,其他的作为了解。下面列举出比较常用的:

    Splitting阶段:将输入小文件合并成为大文件

                         set mapreduce.input.fileinputformat.split.minsize = 1024000000;(参数mapreduce.map.memory.mb=3584 默认2.1倍会杀掉,一个map申请3.5G内存不用浪费了)
                         set mapreduce.input.fileinputformat.split.maxsize = 1024000000;
                         set mapreduce.input.fileinputformat.split.minsize.per.node= 1024000000;
                         set mapreduce.input.fileinputformat.split.maxsize.per.node= 1024000000;
                         set mapreduce.input.fileinputformat.split.minsize.per.rack= 1024000000; 
                         set mapreduce.input.fileinputformat.split.maxsize.per.rack= 1024000000;

    map阶段一般很快,参数可以不设置

    reduce阶段

                         set mapreduce.job.running.reduce.limit=80;(例子:任务中有100个reduce,但是可以使reduce分批执行一批10个)

    合并文件

                         hive合并文件是新启动一个任务合并文件,感觉这个参数不太合适,有这个时间不如直接输出(map和reduce阶段都是一样的)。

    压缩文件

                         (这个参数十分好,压缩不仅仅节约空间而且在网络传输的时候比较省宽带,mapreduce和spark都是默认可以解压缩的,比较方便。)

                         set mapreduce.map.output.compress=true(map输出压缩,map阶段参数)
                         set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec(map输出压缩格式,map阶段参数)
                         set mapreduce.output.fileoutputformat.compress=false // 默认值是 false reduce阶段参数
                         set mapreduce.output.fileoutputformat.compress.type=BLOCK // 默认值是 Record reduce阶段参数
                         set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec // 默认值是 org.apache.hadoop.io.compress.DefaultCodec
                         set hive.exec.compress.output=true;(最终结果压缩。若map压缩和reduce压缩都没有用,改参数使用的话。两个job第一个job后数据不压缩,第二个job输出压缩)
                         set hive.exec.compress.intermediate=true(若map压缩reduce压缩最终输出压缩都没有用,改参数使用的话。两个job第一个job后数据压缩,第二个job输出不压缩)

    Jvm优化(建议不设置)

    并发优化

                         set hive.exec.parallel = true;
                         set hive.exec.parallel.thread.number=8;

    数据倾斜优化:

                         set hive.optimize.skewjoin=true;
                         set hive.skewjoin.key=100000;(超过10000个相同的key就认为是数据倾斜,需要进行打散处理)

    分区优化(建表的时候要partation by ):

                         set hive.exec.dynamic.partition=true
                         set hive.exec.dynamic.partition.mode=nonstrict(分区表分为严格模式和非严格模式)

    SQL优化

                         小表往前放

    四:hivesql内存计算过程,mapreduce确定及常用UI端口

    1.hive参数配置:

                         Hive UI------>>>>Hive Configuration页签找到(版本与版本之间参数的名字不太一样一定要看清楚配置的名字,最好使用最新的配置名称)

                         

    2.hivesql使用内存资源

                         hivesql使用资源可在YARN的管理界面中RUNNING中看到,需要时不时刷新因为是动态的。(一般为3.5g*map个数字+7g*reduce个数)

    3.hivesql生成的job的map个数reduce个数

                         可在YARN的管理界面中FINISHED中找到job后点击History,进去之后就会看到map数和reduce数

                         Splitting块个数决定map个数,reduce个数取决于输出的大小(1G一个reduce)

                         

    4.常用UI:

                         1、HDFS页面:50070

                         2、YARN的管理界面:8088

                         3、HistoryServer的管理界面:19888

                         4、Zookeeper的服务端口号:2181

                         5、Hive.server2=10002

                         6、Kafka的服务端口号:9092

                         7、Hbase界面:16010,60010

                         8、Spark的界面:8080

    转载于:https://www.cnblogs.com/wuxiaolong4/p/11565220.html

    展开全文
  • hive on mr参数配置

    2019-12-23 20:01:58
    MR参数: set mapreduce.job.queuename=queue_name; #设置作业提交队列 set hive.execution.engine=mr; #设置计算引擎 set mapreduce.map.memory.mb=4096; #设置map内存 set mapreduce...

    MR参数:

    set mapreduce.job.queuename=queue_name;    #设置作业提交队列

    set hive.execution.engine=mr;                              #设置计算引擎

    set mapreduce.map.memory.mb=4096;               #设置map内存

    set mapreduce.map.java.opts=-Xmx3276;           #设置map jvm内存(小于map内存)

    set mapreduce.reduce.memory.mb=4096;           #设置reduce内存

    set mapreduce.reduce.java.opts=-Xmx3072;       #设置reduce jvm内存(小于reduce内存)


    #文件切分
    set dfs.block.size = 256000000;                            #设置每个block的大小,控制map数


    #合并小文件

    #Map输入合并小文件
    set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;   #执行Map前进行小文件合并
    set mapred.max.split.size=256000000;                                              #每个Map最大输入大小
    set mapred.min.split.size.per.node=100000000;                                #一个节点上split的至少的大小 
    set mapred.min.split.size.per.rack=100000000;                                 #一个交换机下split的至少的大小

    #输出合并
    set hive.merge.mapfiles=true;                                                  #在Map-only的任务结束时合并小文件
    set hive.merge.mapredfiles=true;                                             #在Map-Reduce的任务结束时合并小文件
    set hive.merge.size.per.task= 256000000;                               #合并文件的大小
    set hive.merge.smallfiles.avgsize=12800000;                          #当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge

    #数据倾斜
    set hive.groupby.skewindata=true ;                                           #group by操作是否允许数据倾斜,默认是false,执行计划会生成两个map/reduce作业 。第一个MR中会将map的结果随机分布到reduce中,达到负载均衡的目的来解决数据倾斜
    set hive.map.aggr=true;                                                         #map端聚合是否开启,默认开启;


    #设置动态分区

    set hive.exec.dynamic.partition=true;                                               #开启动态分区
                                                                                 
    set hive.exec.dynamic.partition.mode=nonstrict;                              #开启非严格模式
                                                                                 
    set hive.exec.dynamic.partitions.pernode=10000;                           #每个 mapper or reducer可以创建的最大动态分区数
                                                                                 
    set hive.exec.dynamic.partitions=10000;                                          #一个DML操作(数据的插入和导出)可以创建的最大动态分区数

    #reduce配置
    set mapred.reduce.tasks=10;                                                  #手动设定reduce个数,一般为hive自动推测
    #并行执行 适用于多个union all 提升效率
    set hive.exec.parallel=true;
    set hive.exec.parallel.thread.number=16;                              # 设置任务的并行度

    #mapjoin参数设置
    set hive.auto.convert.join=true;                                             #是否自动转换为mapjoin
    hive.mapjoin.smalltable.filesize=25000000;                          #小表的最大文件大小,默认为25000000,即25M
    hive.auto.convert.join.noconditionaltask=true;                      #是否将多个mapjoin合并为一个
    hive.auto.convert.join.noconditionaltask.size=1000000;       #多个mapjoin转换为1个时,所有小表的文件大小总和的最大值

    展开全文
  • Hive调优: 1、内存大小调整 2、增加并发 3、分区 分区设置不合理,分区过多 4、数据倾斜 任务集中在某个reduce -- 开启在map端聚合(1000条记录以下/小于20M) 5、join优化 6、合理控制map和reduce个数 小...
  • hive参数配置

    2018-04-19 21:15:28
    如果是join过程出现倾斜 应该设置为true set hive.skewjoin.key=100000;这个是join的键对应的记录条数超过这个值则会进行优化; mapjoin:在连接时将小表放入内存中 set hive.auto.convert.join...
  • 如果核心数比较少,内存比较多,则可以每个reduce多设置内存,使一个核心处理能力增大; 如果核心数充足,则内存设置可以比较少,进而使多个核心处理任务,增加处理速度。 二、配置 1.In order to change the ...
  • Hive 调优-参数篇 image.png <** 工作中常用的 hive 参数调优,整理如下。 原则: 最少数据 最少字段 最少Job数 最少读取次数 避免数据倾斜 整体最优而不是局部最优 JVM 内存 <a name="lLlWa"><...
  • Hive参数性能调优

    千次阅读 2020-06-07 13:25:02
    yarn.nodemanager.resource.memory-mb 65536 --设置nodemanager分配给yarn的可用内存 yarn.nodemanager.resource.cpu-vcores 40 --设置nodemanager分配给yarn的可用虚拟CPU yarn.nodemanager.vmem-pmem-ratio 2.1 --...
  • // 基本任务参数设置 set mapred.reduce.tasks = 1; // 设置任务reduce个数 set mapreduce.job.queuename = root.queueS1; // 设置任务执行队列 set mapred.child.java.opts = -Xmx8096m ; // 内存大小 set mapred....
  • Hive 调优-参数篇 图片来源网络,点赞 工作中常用的 hive 参数调优,整理如下。 原则: 最少数据 最少字段 最少Job数 最少读取次数 避免数据倾斜 整体最优而不是局部最优 JVM 内存 文件大小合理切分 这里需要...
  • Hive参数层面常用优化

    2014-11-26 22:03:00
    1、hive数据仓库权限问题: set hive.warehouse.subdir.inherit.perms=true;...可以通过-Xmx设置,在脚本中设置:-Xmx=2048m 甚至 -Xmx=4g 3、关闭推测式任务:默认是打开的 set mapreduce.reduce.specula...
  • hive 的几个优化参数

    2020-05-17 14:12:36
    内存溢出 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing contain 从字面意思来看,是数据量超过 map 或者 ...最直接的解决办法是设置: set mapreduce.map.memory.mb=40...
  • hive 执行引擎-tez和mr部分参数优化

    千次阅读 2018-09-26 14:50:01
    Tez内存优化 1、AM、Container大小设置 tez.am.resource.memory.mb 参数说明:Set tez.am.resource.memory.mb tobe the same as yarn.scheduler.minimum-allocation-mb the YARNminimum container size.   ...
  • MapReduce主要靠yarn进行资源分配,因此,进行MapReduce作业时,可以通过调节对应的yarn和hive参数优化MapReduce作业。Container是一个逻辑上的yarn资源容器; Container就是一个yarn的java进程,在Mapreduce中的AM...
  • HIve优化使用动态分区需要加配置:使用自动优化:(mapjoin)使用负载均衡:设置map和reduce的任务处理的字节数直接设置map和reduce任务数设置最大reduce数限制修改字段类型(注意跟presto集成会有问题)设置运行...
  • 参数设置每个map使用内存的大小,默认1024M,这个参数是控制map数量的关键参数。如果需要处理的文件较多或 较大时,则分开处理效率会较快,如果文件较少或较小时会造成map资源的浪费。 2、set mapreduce....
  • 近期在根据集群上的各节点的物理机配置对集群的内存参数进行调整。 因此较系统的学习了一下hadoop里对资源调配的各组件的相关参数。  主要包含如何设置yarn中的参数, mapreduce2的参数, 在执行hive job时可以手工...
  • hive 笔记

    2021-02-26 10:34:01
    小文件过多: 一个文件就是一个map,或导致生成多个map任务,maotask申请资源需要时间,且map需要内存,造成资源浪费,设置文件合并的参数,或集群设置文件的大小 文件达到128m:当字段少,数据行数多,则map处理...
  • hive优化

    2017-11-07 13:33:00
    设置参数可以在最大表通过mapper的时候将小表完全放入内存中,从而省略掉常规reduce过程,有时可以减少map过程步骤,启动时执行优化放入 $HOME/.hiverc文件中 用户可以配置小表大小(字节) hive.mapjoin.small...
  • Hive调优小记

    2021-01-22 14:19:06
    参数设置 hive (qi)> set hive.fetch.task.conversion=more; join优化 小表 join 大表 即数据量小的表放在 join 的左边,大表放在join的右边。这样可以 map join可以让小表先进内存,大表的数据从文件读取。...
  • OPTS参数设置

    2018-02-07 17:13:00
    今天再hive on tez 跑任务的时候 OOM异常 然后找了些 JAVA OPTS设置: AVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量。 JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k" -server:一定要作为第一...
  • hive map-side join

    2017-04-27 10:21:10
    hive 在map端进行连接的过程叫map-side join,应为hive可以和内存中的小...hive 启动map-side join 需要把参数hive.auto.convert.join 参数设置为ture hive> set hive.auto.convert.join; hive.auto.convert.join=true
  • Tez优化参数设置

    2019-01-22 09:33:38
    Tez内存优化1、AM、Container大小设置tez.am.resource.memory.mb参数说明:Set tez.am.resource.memory.mb tobe the same as yarn.scheduler.minimum-allocation-mb the YARNminimum container size.hive.tez....
  • Hive数据倾斜

    2021-03-01 19:38:56
    开启Map端聚合参数设置 大表和小表进行join操作 使用mapjoin 将小表加载到内存 空值产生的数据倾斜 id为空的不参与关联 给空值分配随机的key值 小文件过多或文件过于复杂 合理设置map和reduce数 2.4 表的优化 2.4.1 ...
  • Hive使用常见问题

    千次阅读 2018-07-11 17:57:25
    1)内存溢出map阶段解决:一般存在MapJoin,设置参数set hive.auto.convert.join = false转成reduce端的Common Join。shuffle阶段解决:增加reduce数(set mapreduce.job.reduces=xxx)或调整放在内存里的最大片段所...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

hive设置内存参数