Hadoop consists of two important components: HDFS and Map Reduce. In the previous chapter, we talked about various recipes one can perform to use and maintain HDFS in a good state. In this chapter, we are going to explore the details of the Map Reduce framework. Hadoop itself is written in Java, and Java is, of course, a preferred way to write Map Reduce programs, but this does not restrict you to only using Java. It provides libraries, such as Hadoop-Streaming, Hadoop Pipes, and so on so that you can write map reduce programs in most popular languages. These include C++, C#, Shell Scripting using Hadoop-Streaming, and so on.