JCGrid - Java Grid Computing - Univates
JCGrid - Java Grid Computing - Univates
JCGrid - Java Grid Computing - Univates
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Univates</strong><br />
Programação Paralela e Distribuída<br />
Maglan Cristiano Diemer<br />
<strong>JC<strong>Grid</strong></strong> - <strong>Java</strong> <strong>Grid</strong> <strong>Computing</strong><br />
Eduardo Diersmann<br />
Maurício Postal<br />
Michael Marques<br />
Vagner Furlanetto
Sobre o Jc<strong>Grid</strong><br />
● Ferramenta de grid computacional.<br />
● Ser de fácil utilização.<br />
● Requer apenas o ambiente JAVA.<br />
● Não requer configuração específica de sistema operacional.<br />
● Não necessita de sistema de arquivos compartilhados, como<br />
NFS, samba, etc...<br />
● Permite dividir o processamento entre diversos estações de<br />
trabalho.<br />
● Arquivos são transferidos pela ferramenta.
Descrição:<br />
Há três tipos de nodos no Jc<strong>Grid</strong>:<br />
● Server<br />
● Worker<br />
● Client<br />
O Client e todos os Workers conectam-se ao server, utilizando<br />
sockets TCP/IP. O client conecta-se ao server, por padrão, pela<br />
porta 10101, já os workers conectam-se, por padrão, pela porta<br />
10102.
Descrição<br />
Server<br />
Possui apenas um server, que recebe pedidos de trabalho do<br />
Client e passa esses pedidos para os workers, após isso ele<br />
recebe os resultados obtidos pelo workers e os retorna ao<br />
client. Cada arquivo que ele recebe do client ele armazena<br />
numa cache local e envia para os workers quando for<br />
requisitado, evitando assim o envio de arquivos duplicados.
Descrição<br />
Workers<br />
Pode-se ter quantos workers desejar, e pode-se rodar vários<br />
em uma mesma máquina. Ele realiza o trabalho requisitado<br />
pelo server e envia de volta o resultado.<br />
Client<br />
Pode-se ter quantos client desejar, eles dividem os trabalhos<br />
em várias requisições e depois coletam o resultado obtido<br />
dessas requisições.
Descrição
Descrição
Licença e Versão<br />
● Licença LGPL<br />
● Release 0.05 (2004/07/06)
Onde conseguir<br />
● http://sourceforge.net/projects/jcgrid/files/
Requisitos<br />
● <strong>Java</strong> Runtime 1.4.2 (ou superior)<br />
● binários: - jcgrid-server.tgz<br />
- jcgrid-worker.tgz<br />
- jcgrid-client.tgz<br />
● Para rodar implementação exemplo com POVRAY é<br />
necessário ter instalado a versão 3.6 (ou superior) do mesmo.
Tutorial: jc<strong>Grid</strong> com povray<br />
●Instalação e configuração;<br />
● povray e java;<br />
● Server;<br />
● Worker;<br />
● Client;<br />
●Demonstração;<br />
● Renderização de imagem com povray.
Tutorial: jc<strong>Grid</strong> com povray<br />
●Ubuntu 9.04;<br />
● apt-get install povray<br />
●<strong>Java</strong>;<br />
● apt-get install sun-java6-jdk (jre)<br />
● update-java-alternatives --list
Tutorial: jc<strong>Grid</strong> com povray : SERVER<br />
Descompactar arquivo: tar zxvf jcgrid-server-0.05.tgz<br />
Entrar no diretório: cd jcgrid-server/<br />
Configurar parâmetros: vim povray-server-go.sh<br />
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16
Tutorial: jc<strong>Grid</strong> com povray : SERVER<br />
Parâmetros:<br />
-a set server admin. communication port<br />
-d set working directory<br />
-e enable secure connection<br />
-k set server woker communication port<br />
-p set server client communication port<br />
-s set server address<br />
-w set server password<br />
-z enable compressed connection<br />
Rodar o servidor: sh povray-server-go.sh
Tutorial: jc<strong>Grid</strong> com povray : WORKER<br />
Descompactar arquivo: tar zxvf jcgrid-worker-0.05.tgz<br />
Entrar no diretório: cd jcgrid-worker/<br />
Configurar parâmetros: vim povray-worker-go.sh<br />
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16<br />
export JCGRID_SERVER_NAME=10.3.12.20<br />
export JCGRID_WORKER_NAME=worker04<br />
export JCGRID_WORKER_CPU=1
Tutorial: jc<strong>Grid</strong> com povray : WORKER<br />
Parâmetros:<br />
-a set server admin. communication port<br />
-c set the number of workers to run<br />
-d set working directory<br />
-e enable secure connection<br />
-k set server woker communication port<br />
-n set server session name<br />
-p set server client communication port<br />
-s set server address<br />
-v Execute pvengine.exe instead of povray command<br />
-w set server password<br />
-z enable compressed connection<br />
Rodar o worker: sh povray-worker-go.sh
Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />
Descompactar arquivo: tar zxvf jcgrid-client-0.05.tgz<br />
Entrar no diretório: cd jcgrid-client/<br />
Configurar parâmetros: vim povray-client-go.sh<br />
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16<br />
export JCGRID_SERVER_NAME=10.3.12.20<br />
export JCGRID_CLIENT_NAME=cliente_1
Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />
Parâmetros:<br />
-a set server admin. communication port<br />
-b set the povray animation start frame<br />
-d set working directory<br />
-e enable secure connection<br />
-f set the povray ini file<br />
-g set the povray image fragment size<br />
-h set the povray animation end frame<br />
-k set server woker communication port<br />
-n set server session name
Tutorial: jc<strong>Grid</strong> com povray : CLIENT<br />
...continua Parâmetros:<br />
-o set the povray output file<br />
-p set server client communication port<br />
-r disable rendering window<br />
-s set server address<br />
-t set the povray output file format [i.e. png, ppm, jpg, etc.]<br />
-w set server password<br />
-x set the povray output file width<br />
-y set the povray output file height<br />
-z enable compressed connection
Tutorial: jc<strong>Grid</strong> com povray : RENDERIZAR<br />
Renderizar um arquivo de imagem :<br />
sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />
Complemento do nome do cliente: cornell<br />
Diretório de parâmetros do POVRAY : demos/povray/cornell<br />
Altura: 320<br />
Largura: 240<br />
Tamanho do fragmento: 64
Tutorial: jc<strong>Grid</strong> com povray : RENDERIZAR<br />
Renderizar um arquivo uma animação :<br />
sh povray-client-go.sh spiral demos/povray/anim-spiral 320 240 320 -b 1 -h 64<br />
Complemento do nome do cliente: spiral<br />
Diretório de parâmetros do POVRAY : demos/povray/anim-spiral<br />
Altura: 320<br />
Largura: 240<br />
Tamanho do fragmento: 320<br />
Frame inicial: 1<br />
Frame final: 64
Tutorial: povray : DEMONSTRAÇÃO<br />
Demonstração 1<br />
Linha de Comando Client:<br />
sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />
Estrutura<br />
●Servers: 1<br />
●Workers: 2<br />
●Clients: 1<br />
Tempo D1:_______<br />
CLIENT<br />
10.3.12.11<br />
SERVER<br />
10.3.12.11<br />
WORKER<br />
10.3.12.11<br />
WORKER<br />
10.3.12.17
Tutorial: povray : DEMONSTRAÇÃO<br />
Demonstração 2<br />
Linha de Comando Client:<br />
sh povray-client-go.sh cornell demos/povray/cornell 320 240 64<br />
Estrutura<br />
●Servers: 1<br />
●Workers: 5<br />
●Clients: 1<br />
Tempo D1:_______<br />
Tempo D2:_______<br />
CLIENT<br />
10.3.12.11<br />
SERVER<br />
10.3.12.11<br />
WORKER<br />
10.3.12.17<br />
WORKER<br />
10.3.12.18 10.3.12.11<br />
WORKER<br />
10.3.12.19<br />
WORKER<br />
10.3.12.20<br />
WORKER<br />
10.3.12.21
Resultados povray<br />
Ubuntu 9.04<br />
Intel Pentium 4 CPU 2,66GHz<br />
1GB memória<br />
● 1 máquina - 1m22s<br />
● 2 máquinas - 49s<br />
● 3 máquinas - 33s<br />
● 4 máquinas - 29s<br />
Imagem 800x600 px 128 fragmentos
Outras aplicações<br />
● Mandel<strong>Grid</strong><br />
● Implementação do <strong>JC<strong>Grid</strong></strong> na plataforma Android<br />
http://griddroid.wordpress.com/
Problemas<br />
● Não há muita documentação no site do projeto.<br />
● O único exemplos que ajudam a entender a utilização da<br />
ferramenta são os três exemplos incluídos.
TODO<br />
● Implementar espaços de tuplas *<br />
● Implementar “worker affinity” **<br />
● Implementar suporte à múltiplos servidores<br />
* Um espaço de tuplas tem como função criar uma abstração de memória compartilhada<br />
sobre um sistema distribuído.<br />
** Affinity é uma flag que diz ao kernel em qual CPU pode rodar o código de determinado<br />
processo.
Finalizando.....<br />
PERGUNTAS?
Finalizando.....<br />
OBRIGADO!