a very small improvement suggestion.
Actually the method map in the mapper Interface can throw a IOException.
I would found it better in case it just throw a general Exception
since a map task can fail for other reasons as well, e.g. a in the
map search server scenario you suggested.
Makes this sense?