dec*_*tle 3 hadoop hive hiveql
由于OutOfMemory和GC开销限制超出错误,我一直有一些失败的工作.为了对抗前者,我尝试SET mapred.child.java.opts="-Xmx3G";在hive脚本的开头设置**.
基本上,每当我将此选项添加到脚本时,计划的MR作业(对于脚本中的第一个查询)都会立即被"杀死".
有关如何纠正这一点的任何想法?是否有任何其他参数需要与最大堆空间一起修补(例如io.sort.mb)?任何帮助将非常感激.
FWIW,我使用hive-0.7.0带hadoop-0.20.2.我们群集中最大堆大小的默认设置是1200M.
TIA.
** - 尝试过的其他一些替代方案(具有滑稽效果但结果没有明显变化):
SET mapred.child.java.opts="-Xmx3G";
SET mapred.child.java.opts="-server -Xmx3072M";
SET mapred.map.child.java.opts ="-server -Xmx3072M";
SET mapred.reduce.child.java.opts ="-server -Xmx3072M";
SET mapred.child.java.opts="-Xmx2G";
更新1:它可能与设置堆大小无关.以任何方式修改mapred.child.java.opts都会导致相同的结果.例如,如此设置它SET mapred.child.java.opts="-XX:+UseConcMarkSweepGC";具有相同的MR工作被立即杀死的结果.或者甚至在脚本中明确地将其设置为'cluster default'会导致这种情况.
更新2:在此处添加了一个grepJobTracker日志的pastebin .
dec*_*tle 13
认为这最终将成为一件微不足道的事情,最终会成为琐事.
mapred.child.java.opts这样设定:
SET mapred.child.java.opts="-Xmx4G -XX:+UseConcMarkSweepGC";
是不可接受的.但这看起来很好:
SET mapred.child.java.opts=-Xmx4G -XX:+UseConcMarkSweepGC; (减去双引号)
叹了口气.有更好的调试选项/错误消息本来不错.