Github user kayousterhout commented on a diff in the pull request:
https://github.com/apache/spark/pull/14079#discussion_r86649317
--- Diff:
yarn/src/main/scala/org/apache/spark/deploy/yarn/YarnAllocator.scala ---
@@ -217,18 +219,35 @@ private[yarn] class YarnAllocator(
* @param localityAwareTasks number of locality aware tasks to be used
as container placement hint
* @param hostToLocalTaskCount a map of preferred hostname to possible
task counts to be used as
* container placement hint.
+ * @param nodeBlacklist a set of blacklisted nodes, which is passed in
to avoid allocating new
+ * containers on them. It will be used to update
the application master's
+ * blacklist.
* @return Whether the new requested total is different than the old
value.
*/
def requestTotalExecutorsWithPreferredLocalities(
requestedTotal: Int,
localityAwareTasks: Int,
- hostToLocalTaskCount: Map[String, Int]): Boolean = synchronized {
+ hostToLocalTaskCount: Map[String, Int],
+ nodeBlacklist: Set[String]): Boolean = synchronized {
this.numLocalityAwareTasks = localityAwareTasks
this.hostToLocalTaskCounts = hostToLocalTaskCount
if (requestedTotal != targetNumExecutors) {
logInfo(s"Driver requested a total number of $requestedTotal
executor(s).")
targetNumExecutors = requestedTotal
+
+ // Update blacklist infomation to YARN ResouceManager for this
application,
+ // in order to avoid allocating new Containers on the problematic
nodes.
+ val blacklistAdditions = nodeBlacklist -- currentNodeBlacklist
+ val blacklistRemovals = currentNodeBlacklist -- nodeBlacklist
--- End diff --
would be nice to have a unit test for this that mocked out amClient (to
make sure it gets called with the right deltas)
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]