hive-0.8.1-cdh4.0.1中的MapReduce作业失败。

hive-0.8.1-cdh4.0.1中的MapReduce作业失败。,hive,Hive,hive-0.8.1-cdh4.0.1中调用Reducer的查询导致任务失败。 具有MAPJOIn的查询工作正常,但JOIN给出了错误 例如: hive>从表1中选择count(*); MapReduce作业总数=1 正在启动作业1/1 编译时确定的reduce任务数:1 12/10/15 23:07:02警告配置:mapred.job.name已弃用。而是使用mapreduce.job.name 12/10/15 23:07:02警告配置:mapred.system.dir已弃用。相反,请使用

hive-0.8.1-cdh4.0.1中调用Reducer的查询导致任务失败。 具有MAPJOIn的查询工作正常,但JOIN给出了错误

例如:

hive>从表1中选择count(*);
MapReduce作业总数=1
正在启动作业1/1
编译时确定的reduce任务数:1
12/10/15 23:07:02警告配置:mapred.job.name已弃用。而是使用mapreduce.job.name
12/10/15 23:07:02警告配置:mapred.system.dir已弃用。相反,请使用mapreduce.jobtracker.system.dir
12/10/15 23:07:02警告配置:mapred.local.dir不推荐使用。而是使用mapreduce.cluster.local.dir
12/10/15 23:07:02警告conf.HiveConf:hive-site.xml在类路径上找不到
警告:org.apache.hadoop.metrics.jvm.EventCounter已弃用。请在所有log4j.properties文件中使用org.apache.hadoop.log.metrics.EventCounter。
执行日志位于:/tmp/XXXX
/XXXX_20121015230707_c93521d0-4a97-4972-92b9-0fdd3ab42e5f.log
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/home/XXXX/hadoop-2.0.0-cdh4.0.1/share/hadoop/common/lib/SLF4J-log4j12-1.6.1.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:在[jar:file:/home/XXXX/hive-0.8.1-cdh4.0.1/lib/SLF4J-log4j12-1.6.1.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:有关说明,请参阅。
进程内运行的作业(本地Hadoop)
空值的Hadoop作业信息:映射程序数:0;减速器数量:0
2012-10-15 23:07:04721空映射=0%,减少=0%
结束作业=作业\u本地\u 0001,有错误
作业期间出错,正在获取调试信息。。。
**执行失败,退出状态:2**
获取错误信息
**任务失败!**
任务ID:
第一阶段
日志:
/tmp/XXXX/hive.log
失败:执行错误,从org.apache.hadoop.hive.ql.exec.MapRedTask返回代码2
日志文件显示,这是由于Java堆空间问题造成的

**java.lang.Exception: java.lang.OutOfMemoryError: Java heap space**
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:400)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:912)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:334)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:232)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
**java.lang.Exception:java.lang.OutOfMemoryError:java堆空间**
在org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:400)上
原因:java.lang.OutOfMemoryError:java堆空间
位于org.apache.hadoop.mapred.MapTask$MapOutputBuffer。(MapTask.java:912)
位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:391)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:334)
位于org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:232)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)

用于hadoop 2.0.0+,

in etc/hadoop/mapred-site.xml
设置:


mapreduce.task.io.sort.mb
1.

它将工作

映射连接将需要更多内存

增加文件
conf/mapred site.xml
中的mapreduce jvm内存大小


mapred.child.java.opts
-Xmx1024m-服务器

是的,你也救了我:)
in etc/hadoop/mapred-site.xml
<property>
  <name>mapreduce.task.io.sort.mb</name>
  <value>1</value>
</property>
<property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx1024m -server</value>
</property>