Upload
internet
View
106
Download
2
Embed Size (px)
Citation preview
Slide 1
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Treinamento no Treinamento no GRADEpGRADEp
Framework Master-Worker
Slide 2
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Autoria
• Autor Gustavo Cestari Frainer
• Versão (número, data, autor) V1, junho de 2005 V2, 03 de agosto de 2005, Geyer
Slide 3
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Sumário da apresentação
1 Paradigma Master-Worker
2 Implementando uma nova Aplicação
Slide 4
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Paradigma Master-Worker
• Visão geral paradigma utilizado em aplicações distribuídas um dado problema é dividido em várias partes menores que podem ser
resolvidas independentemente• o Gradep chama estas partes menores de Jobs
os Jobs são distribuídos entre vários computadores distribuídos (Workers) que os resolvem em paralelo
um único processo (Master) controla a distribuição dos Jobs e coleta os resultados dos Workers
o Master faz as operações necessárias para juntar os resultados parciais dos Workers em um resultado final
Slide 5
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Paradigma Master-Worker
• Visão geral o paradigma Master-Worker é adequado
• para resolver problemas cujo trabalho computacional total possa ser quebrado em vários pedaços
• onde o resultado da computação de um pedaço não depende da computação de nenhum outro pedaço
• e a ordem de computação dos pedaços não afeta o resultado
exemplos de classes de aplicações: • procuras em grandes bancos de dados genéticos
• algoritmos de renderização de imagens
• computacional fluid dynamics (CFD)
• simulações de Monte Carlo
• outros
Slide 6
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Paradigma Master-Worker
• Visão geral o paradigma Master-Worker também é adequado
• a uma distribuição em um ambiente de Grade
• já que os altos custos de comunicação presentes neste tipo de ambiente não afetam tanto as aplicações Master-Worker
• pois não precisam realizar comunicação durante a execução de cada pedaço.
GRADEp• reconhecendo a popularidade das aplicações que seguem o paradigma
Master-Worker
• e sua adequação ao ambiente de Grade
• no Gradep disponibilizou-se um framework para facilitar a criação deste tipo de aplicação.
Slide 7
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
O Framework MW do Gradep
• O Framework MW do Gradep
o framework MW é formado por um conjunto de classes e interfaces Java
• podem ser utilizadas e estendidas para criar uma nova aplicação Master-Worker
as classes do framework contêm toda lógica de distribuição e de comunicação com o Middleware
o desenvolvedor fica livre para se concentrar no lógica da aplicação em si
Slide 8
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
O Framework MW do Gradep
• O Framework MW do Gradep
para construir uma nova aplicação o desenvolvedor deve executar os seguintes passos:
• estender a classe abstrata Job• objetos Job são passados aos Workers a pedido• e retornados a pedido• isto é, Workers chamam o Master
• implementar a interface WorkSplitter
• implementar a interface WorkJoiner
• criar uma classe Main que instancie e chame um JobMasterImpl• JobMasterImpl cria os Workers
opcionalmente o desenvolvedor também pode implementar a interface JobCriteria• empregada no cálculo do tamanho do Job
Slide 9
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo 1: Classe Job
• Passo 1: Classe Job
a classe Job é abstrata e deve ser estendida, criando uma classe Job da aplicação
um Job vai ser um pedaço do problema que está sendo resolvido
• o qual pode ser computado independentemente de outros Jobs
métodos que devem ser implementados:
• abstract public int getExitCode();• abstract public boolean hasNext();• abstract public void next();• abstract public Object getParams();• abstract public void init();• abstract public void run();
Slide 10
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo 1: Classe Job
• Exemplo do PiJob
public class PiJob extends Job{ private long hits; private long numIterations; public PiJob(long n){ numIterations = n; this.hits = 0; } public int getExitCode() { return 0; } public boolean hasNext() { return(false); } public void init() { } public void next() { }
Slide 11
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo 1: Classe Job
• Exemplo do PiJob
public Object getParams() { return new Long(numIterations); } public void run(){ Random rnums = new Random (); double x,y, value; for (long count=0; count< numIterations; count++) { x= Math.abs(rnums.nextDouble()); y= Math.abs(rnums.nextDouble()); if ( (x*x) + (y*y) < 1) hits++; } } public long getHits(){ return hits; }
Slide 12
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo 2: Interface WorkSplitter
• Passo 2: Interface WorkSplitter
a classe que implementa WorkSplitter deve criar os Jobs que vão ser processados distribuidamente.
métodos que devem ser implementados:
• public Job getJob(Object params);
quando o trabalho tiver sido completo e nao houverem mais Jobs a serem processados, getJob deve retornar null.
Slide 13
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo 3: Interface WorkJoiner
• Passo 3: Interface WorkJoiner
a classe que implementa WorkJoiner deve
• receber os Jobs com processamento completado
• extrair e juntar os resultados desses Jobs
métodos que devem ser implementados:
• public void publishResult(Job job)
é comum que tanto WorkSplitter quanto WorkJoiner sejam implementados pela mesma classe
Slide 14
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 2 e 3
• Exemplo: PiJobManager
// implementa WorkSplitter e WorkJoin public class PiJobManager implements PiJobMaster
{ long defaultJobSize; long done; long totalIterations; long remaining; long hits; public PiJobManager(Long totalIterations, Long
defaultJobSize){ this.totalIterations = this.remaining =
totalIterations.longValue(); done = 0; this.defaultJobSize = defaultJobSize.longValue(); hits = 0; }
Slide 15
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 2 e 3
• Exemplo: PiJobManager
public synchronized Job getJob(Object params){if(params == null) {
js = (remaining < defaultJobSize)? remaining defaultJobSize;
remaining -= js; return new PiJob(js); } long jobSize = ((Long)params).longValue(); if (remaining <= 0 ) return null; long js = 0; if(jobSize == 0) {return null;} else{ js = (remaining < jobSize)? remaining : jobSize; remaining -= js; return new PiJob(js); } }
}
Slide 16
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 2 e 3
• Exemplo: PiJobManager
public synchronized void publishResult( Job job) { hits += ((PiJob) job).getHits(); done += job.getNumIterations(); notifyAll(); }
public synchronized double getPi() { while(done != totalIterations) { try { wait(); } catch (InterruptedException ie){ System.out.println(ie); } } return 4.00*hits/((double)done); }
Slide 17
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 4: Main
• Passos 4: Main
finalmente, é preciso construir uma classe com um método main para a aplicação
dentro desta classe um JobMasterImpl deve ser criado
construtor do JobMasterImpl:
• public JobMasterImpl(WorkSplitter ws, WorkJoiner wj, String jobCriteria, int numInitialWorkers, boolean keepCreatingWorkers)
parâmetros:
• ws : Uma instância de uma classe que implemente WorkSplitter
• wj : Uma instância de uma classe que implemente WorkJoiner
Slide 18
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 4: Main
• Passos 4: Main jobCriteria:
• uma String com o nome da classe que vai definir os parâmetros para getJob
• use FixedJobCriteria se nenhuma classe especial tiver sido criada para a aplicação
numInitialWorkers:
• número de workers a serem criados inicialmente
Slide 19
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 4: Main
• Passos 4: Main keepCreatingWorkers:
• se for verdadeiro o JobMaster vai continuar criando workers nos computadores disponíveis da célula mesmo depois de já tiver criado os iniciais
• e novos computadores se tornarem disponíveis no meio da execução eles também vão ser utilizados
uma vez criado o JobMasterImpl, o seu método starterWorkerCreation deve ser chamado para iniciar a criação dos Workers
Slide 20
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passos 4: Main
• Exemplo: Pi
public static void Main (String[] args){
PiJobManager manager = new PiJobManager(1000000,10000)JobMaster master = new
JobMasterImpl(manager,manager,”FixedJobCriteria”,1,true);master.startWorkerCreation();System.out.println(“Pi is:”+manager.getPi());
}
Slide 21
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo Opcional: JobCriteria
• Passo Opcional: JobCriteria
o JobCriteria é utilizado para obter o objeto params que é passado para o getJob
comumente o objeto params define o tamanho do Job (número de iterações no caso do Pi)
FixedJobCriteria simplesmente mantêm sempre o mesmo parâmetro
o desenvolvedor pode implementar um novo JobCriteria para sua aplicação
• que, por exemplo, aumente o tamanho do Job se um processador estiver terminando seus Jobs muito rápido
Slide 22
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Passo Opcional: JobCriteria
• Passo Opcional: JobCriteria método da interface JobCriteria:
• public Object guessNewJobSize(Job currJob, long elapsedtime, long timeGoal);
• currJob• o Job que acabou de ser processado
• elapsedTime• quanto tempo ele demorou para ser processado
• timeGoal• um valor definido pela aplicação de quanto tempo um Job deveria
demorar para ser processado• retorno
• vai ser o parâmetro utilizado para definir o próximo Job deste processador
Slide 23
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - junho 2005
Serviço ContextManager
Treinamento no Treinamento no GRADEpGRADEp
Framework Master-Worker