1. A method of resource allocation for execution of a job, comprising: receiving feedback regarding the execution of previously submitted jobs on one or more resource nodes; receiving a request for a job including parameters of the job; estimating the resources required for execution of the job based on the feedback and the parameters of the job; and allocating the job to one or more resource nodes having the estimated resources.