31Distributed Programming for the Cloud
1.6.6 sCheDuling
The effectiveness of a distributed program hinges on the manner in which its con-
stituent tasks are scheduled over distributed machines. Scheduling in distributed
programs is usually categorized into two main classes, task scheduling and job
scheduling. To start with, as dened in Section 1.2, a job can encompass one or
many tasks. Tasks are the nest unit of granularity for execution. Many jobs from
many users can be submitted simultaneously for execution on a cluster. Job schedul-
ers decide on which job should go next. For instance, Hadoop MapReduce adopts a
rst in, rst out (FIFO) job scheduler, whereby jobs are run according to the order of
which they have been received. With F ...