1. A method comprising: receiving a map-reduce job written in a first map-reduce language, wherein the map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters, wherein the first map-reduce language is a general map-reduce language that describes functions supported by multiple map-reduce frameworks but is not specific to any of the multiple map-reduce frameworks; selecting one or more clusters from the plurality of clusters to run the map-reduce job, wherein the selected one or more clusters of the plurality of clusters operate a different map-reduce framework from other clusters of the plurality of clusters; identifying a second map-reduce language associated with the selected one or more clusters; converting the first map-reduce language of the map-reduce job into the second map-reduce language; and causing the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected one or more clusters.