1. A system for scheduling jobs, said system comprising: a plurality of interconnected compute nodes defining a cluster of compute nodes, the cluster including a NameNode and a multitude of DataNodes; the NameNode including at least one processor programmed to: schedule execution of a plurality of tasks on compute nodes of the cluster; receive state information variables of the compute nodes; determine if the state variables indicate that a current model of the capabilities of the compute nodes are no longer correct; and if the state variables show that the current model is no longer correct, schedule a specific plurality of tasks onto the compute nodes for which a model discrepancy has been detected in order to obtain specific observations that allow for efficiently updating the model of that compute node; wherein the NameNode has no offline learning phase prior to the scheduling execution of the plurality of tasks; wherein the at least one processor is further programmed to: if the plurality of interconnected compute nodes are in a steady state, schedule the execution of a plurality of tasks on compute nodes of the cluster using a policy that maximizes throughput; and if the plurality of interconnected compute nodes are in an uncertain state, schedule the execution of a plurality of tasks on compute nodes of the cluster using a policy that gives information about the system to maximize future production.