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; }