Hadoop provides many interfaces to its filesystems, and it generally uses the URI scheme to pick the correct filesystem instance to communicate with.
Although it is possible (and sometimes very convenient) to run MapReduce programs that access any of these filesystems, when you are processing large volumes of data, you should choose a distributed filesystem that has the data locality optimization, such as HDFS or KFS.
If you opt to loose data locality optimization, still is the requirement to use a shared filesystem, that each cluster member should see a single filesystem.
The MapReduce filosophy differs from Neumann model's computing exactly from this perspective, that thinking in MapReduce you have to forget the individual nodes which would contain different filesystems, at the end result burdening the architecture in thinking to desing "which data from where you can access and let's desing the transfer of data too". MapReduce should be viewed as a One entity, thus is very important to use such a shared filesystem.