func mergeName(jobName string, reduceTask int) string {
	return "mrtmp." + jobName + "-res-" + strconv.Itoa(reduceTask)
}
mergeName constructs the name of the output file of 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
}
func reduceName(jobName string, mapTask int, reduceTask int) string {
	return "mrtmp." + jobName + "-" + strconv.Itoa(mapTask) + "-" + strconv.Itoa(reduceTask)
}