DryadLINQ: A System for General-Purpose Distributed Data-Parallel Computing Using a High-Level Language