private boolean schedule() { try { /* hash com os workers em processamento. Indexado pela tarefa*/ workingOn = new Hashtable(); currentStatus = Phase.MAP; while (!currentStatus.equals(Phase.ERROR)) { Worker worker = (Worker) workerQueue.take(); Task task = (Task) taskQueue.take(); TaskStatus op = task.getStatus(); /* termina escalonamento se encontra flag de fim*/ if (op.value() == TaskStatus._END) { break; } workingOn.put(task, worker); worker.execute(channel, task); } if (currentStatus.equals(Phase.ERROR)) { return false; } return true; } catch (Exception e) { exception = LogError.getStackTrace(e); reporter.report(0, "MasterServant::schedule - Escalonamento interrompido. \n" + exception); return false; } }
private boolean getProperties(String configFileName) { this.configFileName = configFileName; this.config = new Properties(); try { config.load(new FileInputStream(configFileName)); } catch (IOException e) { exception = LogError.getStackTrace(e); reporter.report( 0, "MasterServant::getProperties - Erro ao ler arquivo de configuracao " + configFileName + ".\n" + exception); return false; } /* Obtendo configuracoes para o mapreduce*/ masterHost = this.config.getProperty("mapred.Master.corbaloc-host"); if (masterHost == null) { reporter.report(0, "MasterServant::getProperties - Erro ao obter host onde Master executara"); return false; } masterPort = this.config.getProperty("mapred.Master.corbaloc-port"); if (masterPort == null) { reporter.report(0, "MasterServant::getProperties - Erro ao obter port onde Master executara"); return false; } inputFileName = this.config.getProperty("mapred.Input.name"); if (inputFileName == null) { reporter.report(0, "MasterServant::getProperties - Erro ao ler nome do arquivo de entrada"); return false; } containerName = this.config.getProperty("mapred.Master.container-name"); if (containerName == null) { reporter.report(0, "MasterServant::getProperties - Erro ao ler nome do container do master"); return false; } mapperServantName = this.config.getProperty("mapred.Mapper.servant-name"); if (mapperServantName == null) { reporter.report(0, "MasterServant::getProperties - Erro ao ler nome do servant Mapper"); return false; } reducerServantName = this.config.getProperty("mapred.Reducer.servant-name"); if (reducerServantName == null) { reporter.report(0, "MasterServant::getProperties - Erro ao ler nome do servant Reducer"); return false; } partitionerServantName = this.config.getProperty("mapred.Partitioner.servant-name"); if (mapperServantName == null) { reporter.report(0, "MasterServant::getProperties - Erro ao ler nome do servant Partitioner"); return false; } String execNodes = this.config.getProperty("mapred.Workers.exec-nodes"); if (execNodes == null) { reporter.report( 0, "MasterServant::getProperties - Erro ao ler execution nodes " + "onde workers serao instanciados"); return false; } else { execNodeList = execNodes.split(";"); } num_mappers = Integer.parseInt( this.config.getProperty("mapred.Mappers.number", String.valueOf(execNodeList.length))); num_reducers = Integer.parseInt(this.config.getProperty("mapred.Reducers.number", "0")); if (num_mappers < execNodeList.length) { reporter.report( 0, "MasterServant::getProperties - Numero de mappers nao pode ser menor que " + "numero de execution nodes"); return false; } if (num_mappers < num_reducers) { reporter.report( 0, "MasterServant::getProperties - Numero de mappers nao pode ser menor que " + "numero de reducers"); return false; } combineFlag = Boolean.valueOf(this.config.getProperty("mapred.Combine.flag", "false")).booleanValue(); if (combineFlag) { combinerServantName = this.config.getProperty("mapred.Combiner.servant-name", reducerServantName); } ioformatClassName = this.config.getProperty("mapred.IOFormat.class-name"); if (ioformatClassName == null) { reporter.report( 0, "MasterServant::getProperties - Erro ao ler nome da classe que implementa " + "a interface IOFormat"); return false; } joinFlag = Boolean.valueOf(this.config.getProperty("mapred.Join.flag", "true")).booleanValue(); joinFileName = inputFileName.split(".txt") + "Result" + ".txt"; joinFileName = this.config.getProperty("mapred.Join.file-name", joinFileName); return true; }