I feel your requirement does not fit into the MapReduce model well.
If you must use MapReduce/HDFS, you may consider using multiple MapReduce jobs:
The first MapReduce job stores the shuffle results (by a reduce function that outputs its input) in HDFS that can be reused.
The other MapReduce jobs just have map tasks that read the data from HDFS generated by the first MapReduce job as input. You must carefully organize and partition the data in HDFS to simulate the reduce tasks' semantics if you applications reply on the semantics.
It can work but is ugly.
Another choice is to implement a MapReduce-like framework on Hadoop (YARN/Hadoop 2, not Hadoop v1) that can skip the map phase. You may take a look at the approachs of HaLoop and DryadInc.
Overall, my felling is that it is better to use other programming models/systems other than plain MapReduce for your workloads.