1. A method executed by a processor for efficient execution of analytic queries, comprising: collecting network flow information from switches within a cluster; receiving analytic queries with a programming model for processing and generating large data sets with a parallel, distributed process on the cluster with collaborative software-defined networking; determining A(h) as available bandwidth for a hop on a path by determining from a capacity Cap competitive flows with Flow sharing one or more of the hops in a path p Flow as: A ⁡ ( h ) = Cap - ∑ h ∈ H ⁡ ( p Flow ′ ) ⋀ Flow ′ ∈ { Flow ⁢  ⁢ Flow } ⁢ Flow ′ · rate ; and wherein: A(h) denotes the Available bandwidth for the hop on the path; h denotes a member of all hops H; p denotes a specific path; Cap denotes a capacity; Flow denotes a flow; Flow′ denotes a competitive Flow; p Flow denotes the current path; and scheduling, based on the available bandwidth A(h), candidate tasks for a node when a node asks for tasks.