您当前的位置: 首页 >  hive

梁云亮

暂无认证

  • 1浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hive调优之其它

梁云亮 发布时间:2020-02-28 00:05:13 ,浏览量:1

并行执行

Hive会将一个查询转化成一个或者多个阶段。这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。默认情况下,Hive一次只会执行一个阶段。 某些job包含的多个阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短,那么job可能就越快完成。 hive-site.xml:

  
    hive.exec.parallel
    false
    Whether to execute jobs in parallel
  
  
    hive.exec.parallel.thread.number
    8
    How many jobs at most can be executed in parallel
  

通过设置参数hive.exec.parallel值为true,就可以开启并发执行。 set hive.exec.parallel=true; //打开任务并行执行 set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。 当然,得是在系统资源比较空闲的时候才有优势,否则,没资源,并行也起不来。

JVM重用

JVM重用指的是同一个Job中不同的Task之间重要JVM。 JVM重用是Hadoop调优参数的内容,对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或执行的job包含有成百上千task任务的场景。 JVM重用可以使得JVM实例在同一个job中重新使用N次。N的值可以在Hadoop的mapred-site.xml文件中进行配置,通常在10-20之间。


  mapreduce.job.jvm.numtasks
  10

这个功能的缺点是,开启JVM重用将一直占用使用到的task插槽,以便进行重用,直到任务完成后才能释放。如果某个“不平衡的”job中有某几个reduce task执行的时间要比其他Reduce task消耗的时间多的多的话,那么保留的插槽就会一直空闲着却无法被其他的job使用,直到所有的task都结束了才会释放。

推测执行

推测执行(Speculative Execution)机制根据一定的法则推测出可能“拖后腿”的任务,并为这样的任务启动一个备份任务,让该备份任务与原始任务同时处理同一份数据,并最终选用最先成功运行完成任务的计算结果作为最终结果。 推测执行默认是开启的。

设置开启推测执行参数:

  • Hadoop的mapred-site.xml文件中进行配置

    
      mapreduce.map.speculative
      true
    
    
      mapreduce.reduce.speculative
      true
    
    
  • hive本身也提供了配置项来控制reduce-side的推测执行:

  
    hive.mapred.reduce.tasks.speculative.execution
    true
  
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0416s