Writing MapReduce programs