Clustering em Casa

Em ambientes onde um maior poder de processamento é requisito freqüente, uma alternativa que tem se mostrado interessante por sua viabilidade financeira é o uso de clusters. Mas você também pode ter um em casa. Como? Para quê? Leia aqui.

[ Hits: 20.842 ]

Por: Bruno Melo em 15/04/2008


Clustering em casa



O volume e a complexidade das informações com as quais trabalhamos cresce assustadoramente rápido e, com isso, também aumenta a necessidade de desenvolver formas mais eficientes de processar essas informações. Muitas vezes o tempo de processamento de uma tarefa pode ser crucial para determinar sua viabilidade.

Em ambientes onde um maior poder de processamento é requisito freqüente, uma alternativa que tem se mostrado interessante por sua viabilidade financeira é o uso de clusters: agregados de computadores pelos quais o processamento de uma tarefa é distribuído, podendo-se então processar uma quantidade enorme de dados em muito menos tempo. Ultimamente esse tipo de solução tem se tornado cada vez mais acessível e viável, tanto à área corporativa quanto ao público geek. Uma vez que há bastante documentação disponível, nada impede você de fazer aqueles gabinetes empoeirados e empilhados no sótão sentirem-se úteis novamente.

Um cluster pode ser usado para fazer balanceamento de carga, por exemplo, um servidor Web. Neste tipo de cluster, um computador recebe as requisições de processos pelo usuário (uma busca na web) e os passa para os demais, que processam e devolvem o resultado. Isso é interessante porque aumenta a escalabilidade do servidor (pra tornar ele mais poderoso é só colocar mais máquinas) e o torna mais barato: você pode usar várias máquinas fracas e baratas ao invés de um servidor caro.

Outro uso é o de tolerância a falhas, por exemplo, em um banco de dados. Um PC faz o trabalho enquanto outro o monitora e fica fazendo um backup constante dos dados para que, caso esse primeiro por algum motivo pare de funcionar, o segundo assuma automaticamente até que o problema seja sanado.

Um terceiro uso para um cluster, e talvez o mais interessante a longo prazo, é o cluster de processamento paralelo: o Compute Cluster. Neste tipo de cluster o processamento é dividido em diversas frentes e processado paralelamente em diversos processadores. Todos os computadores do cluster trabalham em diferentes tarefas para completar um trabalho muito grande, como um trabalho em equipe.

Funciona mais ou menos assim: com o processamento paralelo, os nodes - como são conhecidos os computadores que integram o cluster - podem, cada um, executar diferentes frentes de uma tarefa independentemente comunicando-se uns com os outros conforme os processos requisitem. Uma reprodução de um vídeo, por exemplo, não é uma tarefa paralelizável, e então não seria adequado tentar processá-la com o uso de um cluster, pois o overhead para comunicação dos nodes poderia consumir mais recursos que o método normal. Já a renderização desse mesmo vídeo pode demorar muito menos em um cluster do que em uma estação de trabalho comum.

Você não deve esperar uma serventia imediata para esse compute cluster caseiro. É preciso de um pouco de estudo em aplicações paralelizáveis para usar propriamente a infra-estrutura paralelizável: a forma de programar e as bibliotecas (MPI, por exemplo) diferem um pouco da programação linear a que estamos habituados mas, com a atual tendência irrevogável a computadores multi-core, vai se tornar obrigatória e mais cedo ou mais tarde você teria de aprender isso. Caso você não queira aprender sobre todo o potencial da programação paralela, mesmo como um usuário comum existem utilidades para um cluster em sua vida.

Para os fãs de Blender (modelagem 3D), é possível criar um conjunto de computadores que renderizem conjuntamente os projetos, reduzindo o tempo de espera pelo resultado. A solução, usando DrQueue e o Blender, é de fácil instalação e permite que qualquer "mortal" produza um centro de renderização poderoso. Para usuários mais experientes, o Scilab (computação numérica) também é uma opção de fácil clusterização. Usando PVM aliada a programação própria do programa, um matemático conseguiria reduzir o tempo de análise de dados. Para ambas as idéias, existem diversos tutoriais de como preparar e utilizar o ambiente.

Na plataforma Windows, a Microsoft disponibiliza o Windows Compute Cluster Server, mas somente na arquitetura x64. Com Linux, temos uma boa opção com o Oscar Cluster, que é uma coleção de scripts de instalação de diversos aplicativos que compõe a estrutura do cluster e que facilita imensamente sua instalação em Linux.

Hoje em dia há muita gente trabalhando com isso e, portanto, há muita documentação e implementações diferentes. Isso facilita bastante o acesso à informação para quem deseja começar a fazer isso por conta própria. Assim, para montar um cluster de máquinas velhas, tudo que você vai precisar é de alguns CPUs, um CD de instalação do Linux e um HUB. Em caso de interesse, tem gente trabalhando com isso em http://www.codeplex.com/LMSU. Divirta-se =)

Links:
Por:
Bruno Melo, Raul Kist, Daniele Santos, Henrique Baggio, Ivo Trivella (Equipe LMS)

   

Páginas do artigo
   1. Clustering em casa
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

SSH - Tradução da man page

Linux, a pirataria de software e a desvalorização do desenvolvedor (parte 2)

Ubuntu + Zoneminder = Solução Livre para CFTV

Usando o NIS/NFS como ferramentas de centralização de controle de rede

GNU Emacs (Intro)

  
Comentários
[1] Comentário enviado por y2h4ck em 15/04/2008 - 14:14h

+_+

??

[2] Comentário enviado por diegoccn em 18/04/2008 - 07:15h

Muito interessante, mas gostaria de aprender como fazer.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts