黑猴子的家:Hive 优化之 JVM 重用

JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。

Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。JVM重用可以使得JVM实例在同一个job中重新使用N次。N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间,具体多少需要根据具体业务场景测试得出。

<property>
  <name>mapreduce.job.jvm.numtasks</name>
  <value>10</value>
  <description>How many tasks to run per jvm. If set to -1, there is
  no limit. 
  </description>
</property>

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据仓库中的SQL性能优化(Hive篇) - 简书 http://www.jianshu.com/p/808a5...
    葡萄喃喃呓语阅读 10,053评论 0 31
  • Fetch 抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELE...
    ZFH__ZJ阅读 5,849评论 0 3
  • 先来个文章大纲: 1.厨房生活小技巧; 2.日常菜肴制作简介(内含做菜小技巧); 从小受村宴厨师父亲的影响,...
    叶落秋寒阅读 3,414评论 2 1
  • 我常常不敢仔细看爸妈的脸,我怕看到岁月的痕迹。我怕,我越来越大,他们越来越老。我想做个大人,无所不能的大人。我的...
    月牙和大树阅读 708评论 0 0
  • 学习中医是一种人生修为 在一个真正的中医眼里,没有“病”这个概念,有的只是每个人身体内部存在的各种不和谐或者不平衡...
    瞳喜生物阅读 2,187评论 0 0