A job scheduling component can include a scheduling server that is able to perform tasks such as calculating the time needed to run jobs, calculating job dependencies, scheduling jobs across multiple nodes, monitoring job status, and providing support for job functions such as add, delete, update, kill, and/or restart.