void aplicarMapABloque(char *script_mapper, int nro_bloque, char *ruta_tmp,
		int nombre_job) {

	bloque_mapeado *datos_bloque = getBloque(nro_bloque);

	char *comando_map, *resultado_script, *info_map;

	char *p = string_itoa(nro_bloque);

	char *pepe = string_itoa(nombre_job);

	comando_map = malloc(strlen(script_mapper) + strlen(" |sort") + 1); //el +7 es por el | sort

	resultado_script = malloc(strlen(ruta_tmp) + strlen("/resultadoMapBloque-") + 4	+ strlen(".txt") + 1);

	strcpy(resultado_script, ruta_tmp);

	strcat(resultado_script, "/resultadoMapBloque-");

	strcat(resultado_script, p);

	strcat(resultado_script, ".txt");

	strcpy(comando_map, script_mapper);

	strcat(comando_map, " |sort");

	info_map = malloc(strlen("Finalizacion con exito Map en bloque ") + 4 +strlen(" -> Job-")+4+1);

	strcpy(info_map, "Finalizacion con exito Map en bloque ");

	strcat(info_map, p);

	strcat(info_map," -> Job-");

	strcat(info_map,pepe);

	free(pepe);

	free(p);

	ejecutarScriptMap(comando_map, datos_bloque, resultado_script);

	pthread_mutex_lock(&mutex_actualizacion_listas);

	actualizarEstadoBloques(resultado_script, nro_bloque, nombre_job);

	pthread_mutex_unlock(&mutex_actualizacion_listas);

	loguearme(PATH_LOG, "Proceso Nodo", 1, LOG_LEVEL_TRACE, info_map);

	free(datos_bloque);

	free(comando_map);

	free(info_map);

	return;

}
static void ejecutar3RutinasDeMap()
{
	inicializarEspacioDeDatos();

	printf("Ejecutando map sobre bloque 1\n");
	BloqueDatos *bloque1 = getBloque(espacioDeDatos, 1);
	Archivo *salidaMapBloque1 = (Archivo*) newArchivoLocal("/tmp/salidaMapBloque1", ESCRITURA);
	ejecutarRutinaDeMap(RUTINA_MAP, bloque1, salidaMapBloque1);
	cerrarArchivo(salidaMapBloque1);

	printf("Ejecutando map sobre bloque 4\n");
	BloqueDatos *bloque4 = getBloque(espacioDeDatos, 4);
	Archivo *salidaMapBloque4 = (Archivo*) newArchivoLocal("/tmp/salidaMapBloque4", ESCRITURA);
	ejecutarRutinaDeMap(RUTINA_MAP, bloque4, salidaMapBloque4);
	cerrarArchivo(salidaMapBloque4);

	printf("Ejecutando map sobre bloque 8\n");
	BloqueDatos *bloque8 = getBloque(espacioDeDatos, 8);
	Archivo *salidaMapBloque8 = (Archivo*) newArchivoLocal("/tmp/salidaMapBloque8", ESCRITURA);
	ejecutarRutinaDeMap(RUTINA_MAP, bloque8, salidaMapBloque8);
	cerrarArchivo(salidaMapBloque8);
}
static int ejecutarTarea(Tarea *tarea, EspacioDatos *espacioDeDatos)
{
	int resultado;
	Archivo *archivoSalidaRutina = obtenerArchivoSalidaRutina(tarea->nombreArchivoResultado);

	if (esMap(tarea))
	{
		loguearYMostrarEnPantalla(LOG_LEVEL_INFO, "Ejecutando rutina de map\n\tBloque : %d\n\tRutina: %s\n\tSalida: %s",
				tarea->bloque, tarea->pathRutina, tarea->nombreArchivoResultado);
		BloqueDatos *bloque = getBloque(espacioDeDatos, tarea->bloque);
		resultado = ejecutarRutinaDeMap(tarea->pathRutina, bloque, archivoSalidaRutina);
		free(bloque);
	}
	else
	{
		loguearYMostrarEnPantalla(LOG_LEVEL_INFO, "Ejecutando rutina de reduce. Salida: %s", tarea->nombreArchivoResultado);
		resultado = ejecutarRutinaDeReduce(tarea->pathRutina, tarea->listaArchivosRemotos, archivoSalidaRutina);
	}

	cerrarArchivo(archivoSalidaRutina);

	return resultado;
}