在Hive on spark中 设置spark.master 为 yarn-client ,
提交HiveQL任务到yarn上执行,发现任务无法执行 输出一下错误:
可以看到 Hive on Spark 可以submit查询,但是任务无法执行。
因为我们设置的yarn-client 模式提交,所以在hive执行的输出log日志中查找到相应语句输出的log信息:
发现yarn.Client 一直在重复的report,等待资源调度。
总结下解决思路:
1> 首先想到是集群中内存资源不足,可以检查下每台机器是否有足够剩余内存( free -g);也可能是其他已经提交的应用占了大部分资源;
2> 如果1>正常,我们可以看看YARN集群是否启动成功。注意“坑”可能就在这里: 即使Slave上的nodemanager进程存在,要注意检查resource manager日志,看看各个node manager是否启动成功,我的问题就出现在这里:进程在,但是日志显示node manager状态为UNHEALTHY,所以YARN集群能识别到的总内存资源为0。。。
检查了UNHEALTHY的原因,
2017-09-11 18:21:55,857 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /tmp/hadoop-root/nm-local-dir error, used space above threshold of 90.0%, removing from list of valid directories
2017-09-11 18:21:55,857 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /opt/Beaver/hadoop-2.7.3/logs/userlogs error, used space above threshold of 90.0%, removing from list of valid directories
2017-09-11 18:21:55,857 INFO org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Disk(s) failed: 1/1 local-dirs are bad: /tmp/hadoop-root/nm-local-dir; 1/1 log-dirs are bad: /opt/Beaver/hadoop-2.7.3/logs/userlogs
2017-09-11 18:21:55,857 ERROR org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Most of the disks failed. 1/1 local-dirs are bad: /tmp/hadoop-root/nm-local-dir; 1/1 log-dirs are bad: /opt/Beaver/hadoop-2.7.3/logs/userlogs
发现是由于磁盘空间不够,已经达到 90%的阈值,导致无法启动node节点启动为UNHEALTHY,所以 清理一些磁盘空间再启动就可以正常的运行了。