Creating an execution plan

Pseudocode and snippets are not always enough to specify all the logic related to more complex distributed algorithms. For example, distributed algorithms usually need to be pided into different coding phases at runtime that have a precedence order. The right strategy to pide the larger problem into an optimal number of phases with the right precedence constraints is crucial for the efficient execution of an algorithm. 

We need to find a way to represent this strategy as well to completely represent the logic and structure of an algorithm. An execution plan is one of the ways of detailing how the algorithm will be subpided into a bunch of tasks. A task can be mappers or reducers that can be grouped together in blocks called stages. The following diagram shows an execution plan that is generated by an Apache Spark runtime before executing an algorithm. It details the runtime tasks that the job created for executing our algorithm will be pided into:

Note that the preceding diagram has five tasks that have been pided into two different stages: Stage 11 and Stage 12.