在hive启动之后,可以正常进入hive的交互命令行,创建表和查询表都可以正常使用,但是在对表进行插入时候报错。
如插入语句
hive (default)> insert into student values(1,“法外狂徒张三”);
报错
Total jobs = 1
Launching Job 1 out of 1
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask
【原因:】
Tez时检查到用过多内存而被NodeManager杀死进程问题,这种问题是从机上运行的Container试图使用过多的内存,而被NodeManager kill掉了。
【解决方案】
方案一:或者是关掉虚拟内存检查。我们选这个,修改yarn-site.xml
cd /opt/module/hadoop-3.1.3/etc/hadoop
vim yarn-site.xml
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
方案二:mapred-site.xml中设置Map和Reduce任务的内存配置如下:(value中实际配置的内存需要根据自己机器内存大小及应用情况进行修改)
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
</property>
最后重新启动hadoop集群,重新启动hive后台服务