ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
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都结束了才会释放.