We can write MapReduce Programming in many languages like Java, Python, Ruby etc. Which of these languages is best and recommended?
Generally speaking you could use any language, however for things to work with the Hadoop MapReduce API, you will need to use a JVM compatible language (Java, Scala, JRuby, Jython, etc.). The traditional language of choice is Java, however there are some of us (me included) that despise it.
The language that the team responsible for developing these programs is comfortable with!
Ryan - If we use Hadoop Streaming utility, the mapper and reducers can be implemented in any programming language. I don't think there is a restriction on JVM compatibility. Regular Python, Ruby, Perl can be used. The only requirement is that the mappers and reducers should be implemented such that they read from stdin (line by line) and emit the output to stdout.
Hadoop Streaming makes Map Reduce a little more accessible to folks that are intimidated by Java (and I count myself in that group!).
which one you use?
I shy away from anything Map Reduce and use Spark instead (using Scala).
Retrieving data ...