最近我们升级到Spark 1.6并尝试使用SparkQL作为Hive的默认查询引擎。使用HiveServer2在同一台计算机上添加Spark Gateway角色,并启用Spark On Yarn Service。但是,当我运行如下查询时:
SET hive.execution.engine=spark;
INSERT OVERWRITE DIRECTORY '/user/someuser/spark_test_job' SELECT country, COUNT(*) FROM country_date GROUP BY country;
我们看到作业已被Yarn接受,已分配资源且状态显示正在运行,但是,它显示10%的持续进度,并且在Hue或Yarn UI中不再进一步。 如果我们检查Spark UI作业是否完成,我实际上在HDFS上看到了一个输出: 有没有人遇到过类似的问题?有什么线索如何调试这种行为? 我使用Cloudera CDH 5.12
答案 0 :(得分:0)
找到答案。最近有patch released来解决这个问题。在bug和功能之间浮动:
启动Hive会话时,会将查询提交给 Spark处理引擎,Hive维护一个或多个Spark Executors 群集直到会话终止。最初的设置 火花处理引擎是时间密集的。避免开销 必须为每个查询创建一个新的Spark处理引擎 提交后,Hive维护一个Spark Application Master(YARN Spark 驱动程序)和每个Hive会话的一个或多个Spark Executor。该 然而,权衡是Spark组件将消耗资源 虽然他们可能处于闲置阶段,但在查询之间,对于YARN 很长一段时间。
因此,为了在没有补丁的情况下修复此问题,您应该终止Hive会话或在查询完成后切换回MapReduce QL引擎。如果您使用Hue,则只有第二种选择。
答案 1 :(得分:-1)
从我过去的经历中分享这一点。请阅读这篇文章:
希望它有所帮助。