I encountered a similar problem. So, I checked the Yarn logs on the specific nodes and found out that we have some kind of out-of-memory problem, so the Yarn interrupted the execution. This thing happened because I gave more memory to the worker node than its default max capacity. As a result Spark crashed while trying to store objects for shuffling with no more memory left.
I would suggest you to either add swap, or configure the worker/executor to use less memory in addition with using MEMORY_AND_DISK storage level for several persists.