Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@


# MapReduce Distribuido

El modelo de programación MapReduce es un modelo versátil y elegante. Muchas computaciones del mundo real pueden mapearse fácilmente a él. La biblioteca MapReduce simplifica la escritura de programas distribuidos al abstraer los detalles de la naturaleza distribuida subyacente de las computaciones. Presenta una interfaz de usuario notablemente simplificada donde el usuario presenta la lógica de negocio en forma de dos funciones: map y reduce. Demostramos que los usuarios pueden obtener rápidamente mejoras significativas de rendimiento al parallelizar sus programas utilizando nuestra implementación eficiente, limpia y tolerante a fallos de la biblioteca MapReduce con un esfuerzo mínimo.

Ref: [Artículo de MapReduce](https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)

Esta es nuestra propia implementación de la biblioteca MapReduce, escrita en C++ para el proyecto de la asignatura de Sistemas Distribuidos Monzón 2021 (IIIT Hyderabad).

**Autores originales:**
- Yashas Samaga -- 20171080
- Sanjana Sunil -- 20171027
- Aditya Morolia -- 20171177

También implementamos el manejo de fallos de trabajadores y el balanceo de carga en la biblioteca. Implementamos `wordCount`, `grepper` y `invertedIndex` como ejemplos.

Nuestra biblioteca MapReduce es una biblioteca solo de encabezados. Los archivos de encabezado se encuentran en el directorio `mapreduce/include`.

## Procedimiento de compilación

Las dependencias son:
* Boost C++ Libraries 1.72
* Boost MPI

## Uso

```bash
- mkdir build
- cd build
- cmake ..
- make
- cd bin
- mpirun -n <number of processes> --oversubscribe ./<executable> “<input directory>” - r <number of reduce workers> -m <number of reduce workers>
```

## Estructura de directorios de la biblioteca
```bash
├── mapreduce
│ ├── CMakeLists.txt
│ └── include
│ └── mapreduce
│ ├── combiner.hpp
│ ├── datasource
│ │ ├── datasource.hpp
│ │ └── directory_source.hpp
│ ├── job.hpp
│ ├── map.hpp
│ ├── mapreduce.hpp
│ ├── reduce.hpp
│ ├── specification.hpp
│ └── storage
│ ├── in_memory.hpp
│ └── storage.hpp
├── README.md
```

El directorio de entrada contiene varios archivos de texto con los datos de entrada. Después de la compilación, la carpeta bin contiene ejecutables para los tres programas de ejemplo diferentes (conteo de palabras, índice invertido y grep distribuido). Puede ejecutarlos en los archivos de texto para realizar benchmarking.