Chapter 5. Spark’s Distributed Processing Model
As a distributed processing system, Spark relies on the availability and addressability of computing resources to execute any arbitrary workload.
Although it’s possible to deploy Spark as a standalone distributed system to solve a punctual problem, organizations evolving in their data maturity level are often required to deploy a complete data architecture, as we discussed in Chapter 3.
In this chapter, we want to discuss the interaction of Spark with its computational environment and how, in turn, it needs to adapt to the features and constraints of the environment of choice.
First, we survey the current choices for a cluster manager: YARN, Mesos, and Kubernetes. The scope of a cluster manager goes beyond running data analytics, and therefore, there are plenty of resources available to get in-depth knowledge on any of them. For our purposes, we are going to provide additional details on the cluster manager provider by Spark as a reference.
After you have an understanding of the role of the cluster manager and the way Spark interacts with it, we look into the aspects of fault tolerance in a distributed environment and how the execution model of Spark functions in that context.
With this background, you will be prepared to understand the data reliability guarantees that Spark offers and how they apply to the streaming execution model.
Running Apache Spark with a Cluster Manager
We are first going to look at the discipline of distributing ...