当前位置:   article > 正文

hadoop hive执行count(*)提示OutOfMemoryError: Java heap space_hive: java heap space at org.apache.hadoop.mapred.

hive: java heap space at org.apache.hadoop.mapred.localjobrunner$job.runtask
昨天在把hive部署到hadoop2.0 HA MR1集群中的时候,hive执行count(*)出错,日志为:
java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
        at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:399)
Caused by: java.lang.OutOfMemoryError: Java heap space


找了很久的原因,做了以下尝试

1.修改HADOOP_HEAP=4096  
  无效


2.增加mapreduce中hadoop-env.sh的HADOOP_CLIENT_OPTS=1024
  无效


3.在.bash_profile中增加JAVA_OPTS
  无效


解决方法:

在hive命令行中 !env; 查看hive所有的环境变量

参数HADOOP_OPTS

HADOOP_OPTS=-Djava.net.preferIPv4Stack=true  -Dhadoop.log.dir=/home/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/hadoop/freeware/hadoop-2.0.0-cdh4.2.1 -Dhadoop.id.str=aimcpro -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/hadoop/freeware/hadoop-2.0.0-cdh4.2.1/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx128m  -Dhadoop.security.logger=INFO,NullAppender


发现 Xmx128m,说明最大的被设置为128MB,问题就在这里
既然HADOOP_MAPRED_HOME/conf/hadoop-env.sh中HADOOP_CLIENT_OPTS已经被加大为1024m,那为何hive执行job仍然OOM?

于是从HADOOP_HDFS_HOME/etc/hadoop/hadoop-env.sh中去查看HADOOP_CLIENT_OPTS仍然为128m

****问题所在。说明hive在执行的时候仍然优先去读取hadoop conf目录中的配置



于是把这里的HADOOP_CLIENT_OPTS改为1024重启HDFS后,重新执行hive的 select count(*) OK
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/597393
推荐阅读
相关标签
  

闽ICP备14008679号