public boolean shouldAttemptTask(TaskInfo taskInfo) {
      // bail-out when preemptions are pending on every host OR task is not Pending
      return taskInfo.getState() == TaskInfo.State.PENDING &&
          pendingPreemptions.get() < getClusterNodeCount();
    }
Go through the running tasks Tree in descending priority and find a candidate to preempt. The candidate should be:
1. lower priority than forTask
2. below forTask in the DAG
3. not considered already for preemption
A successful candidate is added to the preemptionCandidates queue for preemption by the scheduling loop.
@param runningTasks Tree of running tasks
@param forTask Task to find preemption candidate for
@param preemptHosts Hosts preference
@return true when preemption candidate is found
llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/LlapTaskSchedulerService.java