Co2y's Blog

tez安装过程中的一个问题

这个问题花了我不少时间

按照官方教程部署之后,tez可以和mapreduce共同使用,并且如果是在hive的cli中用的话更方便,只要set hive.execution.engine = tez即可,但是这次报错了。

hive的cli中并没有太多信息,查看hive的日志/tmp/${USER}/hive.log也没有发现有用的信息,只是偶尔会出现retrying connect 10 times的错误,让我一直以为是通信的问题。

但是发现集群中的机器并没有开iptables,google也没有得到有用的结果,只有一个人在stackoverflow上提出了相同的问题,他也认为是tez和resourcemanager的通信问题,它的解决方法是换了一个tez版本。于是我编译了从0.52到0.80的所有tez发行版本都没有用。

之后继续看tez application master的日志发现是application master没有启动导致的通信失败,但是从中也没有看出是什么原因导致的application master启动失败,stacktrace中的异常信息也没什么用。官方的tez问题查找文档也没有给出其它的解决方案。

最后在从节点的nodemanager的日志信息中$HADOOPHOME/logs中发现是application master启动占用的virtual memory超出了限制,最坑的是这个oom的错误不是每次都报的。

之后google tez的oom异常,找到了一些解决方法,大多是设置yarn和hive-tez的jvm参数,最后通过修改yarn-site.xml 解决了问题

1
2
3
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>