[
https://issues.apache.org/jira/browse/HIVE-17270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16118723#comment-16118723
]
Peter Vary commented on HIVE-17270:
-----------------------------------
??I'm not sure why the MiniSparkOnYarn cluster shows only 1 executor. My best
guess is that the tests get are started as soon as 1 executor has started (see
QTestUtil#createSessionState). Its possible the test just finishes before the
second executor even gets created.??
The strange thing is, that not only the first query is showing only 1 executor
in the test files, but all of them. But when I was running the tests on the
cluster the first run shows 1 executor, the following ones 2 (until I change
some spark configuration and the next one is only 1 executor again)
On the cluster I have unset {{spark.dynamicAllocation.enabled}}, to match the
config of the {{MiniSparkOnYarn}} tests
The number of reducers are printed by this:
{code:title=ExplainTask}
private JSONObject outputMap(Map<?, ?> mp, boolean hasHeader, PrintStream out,
boolean extended, boolean jsonOutput, int indent) throws Exception {
[..]
boolean isFirst = true;
for (SparkWork.Dependency dep: (List<SparkWork.Dependency>)
ent.getValue()) {
if (!isFirst) {
out.print(", ");
} else {
out.print("<- ");
isFirst = false;
}
out.print(dep.getName());
out.print(" (");
out.print(dep.getShuffleType());
out.print(", ");
out.print(dep.getNumPartitions());
out.print(")");
}
[..]
return jsonOutput ? json : null;
}
{code}
The GenSparkUtils.getEdgeProperty sets this:
{code:title=GenSparkUtils}
public static SparkEdgeProperty getEdgeProperty(ReduceSinkOperator reduceSink,
ReduceWork reduceWork) throws SemanticException {
SparkEdgeProperty edgeProperty = new
SparkEdgeProperty(SparkEdgeProperty.SHUFFLE_NONE);
edgeProperty.setNumPartitions(reduceWork.getNumReduceTasks());
[..]
return edgeProperty;
}
{code}
Which is set by SetSparkReducerParallelism:
{code:title=SetSparkReducerParallelism}
@Override
public Object process(Node nd, Stack<Node> stack,
NodeProcessorCtx procContext, Object... nodeOutputs)
throws SemanticException {
[..]
LOG.info("Set parallelism for reduce sink " + sink + " to: " +
numReducers +
" (calculated)"); <-- I see this in the logs which are
matching the values in the explain plans
desc.setNumReducers(numReducers);
[..]
return false;
}
{code}
This is the depth where I had to go home today :)
If no new pointers, then I will dig deeper tomorrow :)
Thanks,
Peter
> Qtest results show wrong number of executors
> --------------------------------------------
>
> Key: HIVE-17270
> URL: https://issues.apache.org/jira/browse/HIVE-17270
> Project: Hive
> Issue Type: Bug
> Components: Spark
> Affects Versions: 3.0.0
> Reporter: Peter Vary
> Assignee: Peter Vary
>
> The hive-site.xml shows, that the TestMiniSparkOnYarnCliDriver uses 2 cores,
> and 2 executor instances to run the queries. See:
> https://github.com/apache/hive/blob/master/data/conf/spark/yarn-client/hive-site.xml#L233
> When reading the log files for the query tests, I see the following:
> {code}
> 2017-08-08T07:41:03,315 INFO [0381325d-2c8c-46fb-ab51-423defaddd84 main]
> session.SparkSession: Spark cluster current has executors: 1, total cores: 2,
> memory per executor: 512M, memoryFraction: 0.4
> {code}
> See:
> http://104.198.109.242/logs/PreCommit-HIVE-Build-6299/succeeded/171-TestMiniSparkOnYarnCliDriver-insert_overwrite_directory2.q-scriptfile1.q-vector_outer_join0.q-and-17-more/logs/hive.log
> When running the tests against a real cluster, I found that running an
> explain query for the first time I see 1 executor, but running it for the
> second time I see 2 executors.
> Also setting some spark configuration on the cluster resets this behavior.
> For the first time I will see 1 executor, and for the second time I will see
> 2 executors again.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)