Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.5.2
-
None
Description
When dynamic resource allocation is enabled fetching broadcast variables from removed executors were causing job failures and SPARK-9591 fixed this problem by trying all locations of a block before giving up. However, the locations of a block is retrieved only once from the driver in this process and the locations in this list can be stale due to dynamic resource allocation. This situation gets worse when running on a large cluster as the size of this location list can be in the order of several hundreds out of which there may be tens of stale entries. What we have observed is with the default settings of 3 max retries and 5s between retries (that's 15s per location) the time it takes to read a broadcast variable can be as high as ~17m (below log shows the failed 70th block fetch attempt where each attempt takes 15s)
... 16/02/13 01:02:27 WARN storage.BlockManager: Failed to fetch remote block broadcast_18_piece0 from BlockManagerId(8, ip-10-178-77-38.ec2.internal, 60675) (failed attempt 70) ... 16/02/13 01:02:27 INFO broadcast.TorrentBroadcast: Reading broadcast variable 18 took 1051049 ms