In Spark 2.0, Akka is removed from Spark Core dependencies. For one to understand the works required to accomplish this, check out these tickets.
You can also find the design doc for new pluggable RPC implementation in this ticket
As a result of the refactoring, a common single-threaded event loop was implemented in DAGScheduler to replace Akka. An alternative non Akka RPC implementation was also introduced.
Also, see Reynold Xin’s comment in the following pull request about the reasons behind the refactoring.
If we ever do that, it’d be for making networking easier (both debugging and deployment), and enabling our users to use Akka (using Akka, especially a different version of it for an app on top of Spark is a mess right now. Spark not depending on Akka will make it easier for applications on top of Spark to use Akka).
This major undertaking started as early as Spark 1.3 and finally in Spark 2.0, Akka is removed from Spark Core dependencies. Kudos to Shixiong Zhu for getting it done.