func reduceName(jobName string, mapTask int, reduceTask int) string {
	return "mrtmp." + jobName + "-" + strconv.Itoa(mapTask) + "-" + strconv.Itoa(reduceTask)
}
reduceName constructs the name of the intermediate file which map task
<mapTask> produces for reduce task <reduceTask>.
package mapreduce
import (
	"fmt"
	"strconv"
)
const debugEnabled = false
func debug(format string, a ...interface{}) (n int, err error) {
	if debugEnabled {
		n, err = fmt.Printf(format, a...)
	}
	return
}
type jobPhase string
const (
	mapPhase    jobPhase = "mapPhase"
	reducePhase          = "reducePhase"
)
type KeyValue struct {
	Key   string
	Value string
}