1. A computer-implemented method for providing resources in a distributed computing environment, comprising: receiving a work item from a user; creating a job from the work item; automatically, with a processor and memory, allocating at least a first virtual machine to a first pool; scheduling the job on the first pool with a first scheduler that is associated with the first pool and leases a task of the job from a job queue, the task being associated with a retry count; leasing, with the first scheduler, the task for initiating the job on the first virtual machine of the first pool, wherein the first virtual machine maintains the lease on the task for a duration of time from the job queue; executing the task on the first virtual machine, wherein the task is, upon failure, rescheduled on the first virtual machine up to a number of times; reassigning the task to a second pool comprised of at least a second virtual machine in response to the number of times corresponding to the retry count during the duration of time, wherein a lease to the task of the job is released from the first scheduler; scheduling the task on the second virtual machines on the second pool with a second scheduler that is associated with the second pool and leases the task of the job from the job queue; and initiating the task on the second virtual machine of the second pool.