> For the complete documentation index, see [llms.txt](https://vikram-bajaj.gitbook.io/cs-gy-9223-d-programming-for-big-data/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vikram-bajaj.gitbook.io/cs-gy-9223-d-programming-for-big-data/master-8/hadoop/advantages-and-disadvantages-of-mapreduce.md).

# Advantages and Disadvantages of MapReduce

## Advantages

* Scalable (due to simple design)
* Runs on cheap commodity hardware
* Procedural control i.e. we can control of the execution of every step

## Disadvantages

* It is not flexible i.e. the MapReduce framework is rigid

![](/files/-M5-0VDFSdARMra7zFxF)

This is the only possible flow of execution. (We can have 1 or more mappers and 0 or more reducers, but a job can be done using MapReduce only if it is possible to execute it in the MapReduce framework).

* A lot of manual coding is required, even for common operations such as join, filter, projection, aggregates, sorting, distinct...
* Semantics are hidden inside the map and reduce functions, so it is difficult to maintain, extend and optimize them

The need for a high-level, general data flow language gave rise to **Pig Latin**.

![](/files/-M5-0VDHRWV7cFqUXOta)

**The next chapter introduces Apache Pig.**
