Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
TaskInfo is initialized with the "requestTime and locality delay". When lots of vertices are in the same level, "taskInfo" details would be available upfront. By the time, it gets to scheduling, "requestTime + localityDelay" won't be higher than current time. Due to this, it misses scheduling delay details and ends up choosing random node. This ends up missing cache hits and reads data from remote storage.
E.g Observed this pattern in Q75 of tpcds.
Related lines of interest in scheduler: https://github.com/apache/hive/blob/master/llap-tez/src/java/org/apache/hadoop/hive/llap/tezplugins/LlapTaskSchedulerService.java
boolean shouldDelayForLocality = request.shouldDelayForLocality(schedulerAttemptTime); .. .. boolean shouldDelayForLocality(long schedulerAttemptTime) { return localityDelayTimeout > schedulerAttemptTime; }
Ideally, "localityDelayTimeout" should be adjusted based on it's first scheduling opportunity.
Attachments
Issue Links
- links to