1. A method for scheduling jobs in a distributed computing environment, the method comprising: obtaining a set of task identifiers, each task identifier identifying a corresponding data processing task included in one of a plurality of jobs to be scheduled for execution; for each unscheduled data processing task, determining input data transfer times to transfer input data for the unscheduled data processing task to each of a plurality of data processing locations; and for each of the plurality of data processing locations, determining a task completion time for the unscheduled data processing task based on the corresponding input data transfer time; from the jobs having unscheduled data processing tasks, selecting a job having a longest job completion time based on a shortest task completion time for the data processing tasks included in the selected job; selecting, from the unscheduled data processing tasks for the selected job, a data processing task having a longest task completion time based on the shortest task completion times for the unscheduled data processing tasks for the selected job; and scheduling the selected data processing task for execution at the data processing location corresponding to the selected data processing task's shortest completion time and having available processing resources.