Vamos falar um pouco sobre Cluster, mais especificamente sobre Cluster Beowulf. Parte desse post é referente à um trabalho que fiz na faculdade e que estará disponivel para download ao final do artigo.
O que é um Cluster?Um cluster, ou aglomerado de computadores, é formado por um conjunto de computadores, que utiliza um tipo especial de sistema operacional classificado como sistema distribuído. Muitas vezes é construído a partir de computadores convencionais (personal computers), os quais são ligados em rede e comunicam-se através do sistema, trabalhando como se fossem uma única máquina de grande porte. Há diversos tipos de cluster. Um tipo famoso é o cluster da classe Beowulf, constituído por diversos nós escravos gerenciados por um só computador.
Quando se fala de cluster de um HD (Hard Disc), refere-se ao cruzamento de uma trilha com um setor formatado. Um HDD (hard disk drive) possui vários clusters que serão usados para armazenar dados de um determinado arquivo. Com essa divisão em trilhas e setores, é possível criar um endereçamento que visa facilitar o acesso a dados não contíguos, assim como o endereçamento de uma planilha de cálculos ou, como um exemplo mais simples, o tabuleiro do jogo "Batalha Naval"
História do Cluster BeowulfO nome Beowulf deriva de um épico inglês que conta a historia de um herói que salvou um reino dinamarquês de um monstro chamado Grendel. Em 1993, Donald Becker e Thomas Sterling começaram a esboçar os contornos de uma mercadoria com base em cluster projetado como um sistema de custo-eficaz alternativo para os supercomputadores. No inicio de 1994, trabalhando no CEDIS (Centro de Excelência em Ciência da Informação e em Dados Espaciais) sob o patrocínio do projeto HPCC/SEE, o projeto Beowulf foi iniciado.
O protótipo inicial era um cluster composto de 16 processadores DX4 conectados por um canal Ethernet. A maquina foi um sucesso instantâneo e a idéia de proporcionar COTS (Commodity Off the Shelf) baseado em sistemas computacionais para satisfazer requisitos específicos se espalhou rapidamente através da NASA e para as comunidades acadêmicas e de pesquisa.
Uma medida não técnica de sucesso é a observação de que os pesquisadores no interior da comunidade de Computação de Alto Desempenho agora se referem a essas maquinas como “Classe de computadores cluster Beowulf”. Clusters Beowulf são agora reconhecidos como genero dentro da comunidade HPC.
O primeiro cluster Beowulf foi construído com processadores DX4 e 10Mbit Ethernet. Os processadores eram muito rápidos para uma única Ethernet e Ethernet switches ainda eram caros. Para equilibrar o sistema, Don Becker reescreveu seus drivers Ethernet para Linux e construiu um “canal ligado” aonde o trafego de rede Ethernet foi distribuído em dois ou mais Ethernets.
No final de 1997, uma boa escolha para um sistema equilibrado foi processadores 16,200 MHz conectados por Fast Ethernet e Fast Ethernet switch. A exata configuração de uma rede cluster equilibrada continua a mudar e continua a depender do tamanho do cluster e as relações entre velocidade do processador, largura da banda, e a lista de preços para os componentes. Uma importante característica dos clusters Beowulf é que substituir o processador, a tecnologia de rede ou os custos relativos dos componentes não alteram o modelo de programação.
O primeiro cluster Beowulf foi construído para resolver um determinado requisito computacional do SEE e pela comunidade de pesquisadores com experiência em programação paralela. Muitos destes pesquisadores tinham diferentes objetivos e expectativas do que os administradores do sistema em relação aos dados detalhados de desempenho, ferramentas de desenvolvimento Isso conduziu uma atitude “do-it-yourself”. Alem disso, o acesso a uma grande maquina significativa muitas vezes o acesso a apenas uma pequena fração dos recursos da maquina compartilhada entre muitos usuários.
Para esses usuários, a construção de um cluster que eles poderiam controlar e utilizar completamente resultou em uma maior plataforma de desempenho computacional. O fato de que os componentes se tornaram acessíveis, aumentou o valor para este segmento da comunidade de pesquisa. Enquanto aprender a construir e gerenciar um cluster Beowulf foram um investimento considerável, houve benefícios substanciais para não estar vinculado a uma solução proprietária.
Esse núcleo paralelo de programadores era, em primeiro lugar, interessados em computação de alto desempenho aplicada aos problemas complicados. Na Supercomputing de 1996, tanto NASA quanto DOE demonstraram clusters custando menos de US $ 100.000 que atingiriam mais de um gigaflop/s de desempenho sustentado. Um ano mais tarde, pesquisadores da NASA no Goddard Space Flight Center combinaram dois clusters para um total de 199 processadores P6 e rodaram uma versão PPM (Piece-wise Parabolic Method) sustentado em uma taxa de 10,1 Gflop/s. Na mesma semana, Caltech’s 140 cluster rodou um problema N-body a uma taxa de 10,9 Gflop/s.
Embora nem todos os supercomputadores são clusters Beowulf, um pode construir um Beowulf que é poderoso o suficiente para atrair o interesse dos usuários de supercomputadores. Alem do programador paralelo, cluster Beowulf foram construídos e utilizados pelos programadores com pouca experiência em programação paralela. Clusters Beowulf fornecem a universidades, muitas vezes com recursos limitados, uma excelente plataforma paralela para ensinar programação paralela.
Fatores contribuintesAlguns fatores que contribuíram para o crescimento da classe de computadores Cluster Beowulf:
- A prevalência de computadores para escritórios, computadores pessoais, jogos e entretenimento agora fornecem os designers de sistemas relacionando o custo-benefício com novos tipos de componentes.
- A industria COTS agora oferece subsistemas completamente montados e de fácil manuseio (Microprocessadores, motherboards, disco e placas de interface de rede), visto que esses componentes estão cada vez mais disponíveis no mercado.
- Aumento gradativo da necessidade de desempenho elevado de processamento.
- Desempenho elevado e semelhante ao MPP’s, a um custo final mais acessível.
- Facilidade na realização de manutenções, para as quais pode-se utilizar ferramentas via login remoto (telnet ou ssh).
- A grande concorrência no mercado tem impulsionado a queda dos preços e aumentado a segurança/confiança desses sistemas.
- A disponibilidade de software open source, em particular o sistema operacional Linux, compiladores GNU e ferramentas de programação.
- Programas como o HPCC tem produzido muitos anos de experiência trabalhando com algoritmos paralelos.
- O reconhecimento de que a obtenção de alta performance é um trabalho árduo e requer pesquisadores para adotar uma atitude “do-it-yourself”.
- Uma crescente dependência de ciência computacional que exige um alto desempenho computacional.
- Total independência de qualquer tipo de fornecedor, tanto de software quanto de hardware.
- Facilidade na administração e solução de nós. Se houver algum problema com um nó do cluster, não é necessária a manutenção deste para retornar ao trabalho.
- Acessível a qualquer pessoa, inclusive em casa. Pode ser usado para estudos em programação paralela, com a vantagem de ter baixo custo.
A combinação dessas condições: hardware, software, experiências e expectativas, proveram o ambiente que fez o desenvolvimento dos clusters Beowulf um acontecimento natural evolutivo.
Crescimento do BeowulfO projeto Beowulf cresceu a partir da primeira maquina Beowulf e também a comunidade tem crescido a partir do projeto da NASA. Como a comunidade Linux, o Beowulf é uma comunidade organizada de pesquisadores e desenvolvedores. Cada organização tem a sua própria agenda e o seu próprio conjunto de um determinado componente ou aspecto do sistema de Beowulf. Alguns sistemas foram construídos por cientistas computacionais e são usados em uma definição operacional, outros foram construídos como bancos de ensaio para o sistema de pesquisa e outros servem como uma plataforma barata para aprender sobre programação paralela.
A maioria das pessoas da comunidade Beowulf são independentes e auto-suficientes. A comunidade é realizada em conjunto pela vontade dos seus membros para partilhar idéias e discutir os seus sucessos e fracassos nos esforços de desenvolvimento.
O futuro do Beowulf será determinado coletivamente pelos indivíduos e organizações que contribuem para o projeto. Como tecnologias de microprocessadores continuam a evoluir, redes de alta velocidade tornam-se rentáveis e mais desenvolvedores para mover plataformas paralelas, o projeto vai continuar a avançar.
Características do Cluster BeowulfO aumento da demanda por um alto poder de processamento em alguns setores do mercado aliado à busca de uma maior disponibilidade e escalabilidade para seus ambientes computacionais, tem direcionado os pesquisadores para a adoção de sistemas paralelos como alternativa para suprir estas exigências. O Cluster Beowulf se destaca porque alem de proporcionar alto desempenho, disponibilidade e escalabilidade, possui, como característica principal, o baixo custo de implementação.
O que distingue o Cluster Beowulf dos demais tipos são as seguintes características (que são aplicadas de acordo com a finalidade do cluster):
- A conexão dos nós pode ser feita por redes do tipo Ethernet.
- Existe um servidor responsável por controlar todo o cluster, principalmente quanto à distribuição de tarefas e processamento (pode haver mais de um servidor, dedicado a tarefas específicas, como monitoração de falhas). Este servidor é chamado de Front-end.
- O sistema operacional é baseado Linux, sendo necessário que ele contenha todos os programas para cluster.
- Pode-se usar computadores comuns, inclusive modelos considerados obsoletos.
- Não é necessário usar equipamentos próprios para clusters. Basta equipamentos comuns a redes e os tradicionais PCs.
Alem de proporcionar benefícios financeiros, os Clusters Beowulf possuem também as seguintes características:
- Escalabilidade absoluta: é possível conseguir Clusters com poder de processamento superior a maior maquina individual existente.
- Escalabilidade incremental: mais maquinas podem ser adicionadas, se desejadas pelo usuário, para aumentar o poder de processamento.
- Alta disponibilidade> como cada computador do Cluster é completo, a falha de um não compromete o funcionamento do todo.
- Atualização com a tecnologia de ponta: como seus nós são construídos com computadores comuns, pode-se aplicar os melhores tipos de material disponíveis.
- Flexibilidade de configuração: se a aplicação utilizar intensamente a rede para passagem de mensagens, parte do orçamento pode ser direcionada a oferecer uma infra-estrutura que melhore o meio de interconexão.
De maneira generalizada, o Cluster Beowulf permite a construção de sistemas de processamento que podem alcançar altos valores de gigaflops. Isso tudo com o uso de computadores comuns e de um sistema operacional com código-fonte livre, ou seja, alem de gratuito, pode ser melhorado para a sua finalidade. Tais características fizeram o Cluster Beowulf um tema muito explorado em universidade e claro, aplicado para diversos fins.
Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a necessidade de se ter às bibliotecas Parallel Virtual Machine (PVM) ou para Message Passing Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nos do cluster, O MPI é mais avançado que o PVM, pois pode trabalhar com mensagens para todos os computadores ou para apenas um determinado grupo.
Quando um computador participa de um Cluster, recebe uma nova denominação: nó. Assim, dependendo da função do nó dentro do Cluster, um computador pode possuir o papel de nó principal ou de nó secundário, havendo a possibilidade de existir um ou mais nós principais interligados através de uma rede a muitos outros nós comuns.
Os nós principais (front-end) controlam o cluster, monitorando e distribuindo as tarefas. Eles desempenham duas funções importantes: funcionam como servidores de Network File System (NFS – Sistema de Arquivos de Rede) e como gateways para o ambiente externo ao Cluster. Como servidor NFS, os nós principais oferecem mecanismos para armazenar arquivos de usuários e arquivos dos demais nós do Cluster. No papel de gateways, eles permitem que os demais nós do Cluster, se necessário, possam acessar qualquer computador, justificando, assim, o porque de os nós principais possuírem duas interfaces de rede.
Os demais nós do Cluster, nós secundários (back-ends), executam os processos paralelamente, sendo esta a sua única função, ou seja, são exclusivamente dedicados para processamento das tarefas enviadas pelo nó principal. Como as tarefas são executadas de maneira paralelas, as aplicações devem ser escritas atentando-se para esta condição, a fim de se explorar ao Maximo esta arquitetura. Uma característica destes nós é a possível ausência de placa de vídeo, monitor ou teclado, barateando ainda mais o custo do sistema como um todo.
Uma rápida definição para Clusters Beowulf seria: Beowulf é uma tecnologia de cluster que agrupa computadores rodando GNU/Linux para formar um supercomputador virtual via processamento paralelo (distribuído).
Clique na imagem para ampliar
Arquitetura BeowulfServidor:
- Administração e distribuição das tarefas
- Interface com exterior
- Responsável pela segurança
- Chamado front-end
- Normalmente é apenas um, mas em grandes clusters pode ser mais de um.
- “Única máquina do cluster com periféricos”
Cliente:
- Nós restantes
- Configurados e controlados pelo servidor.
- Normalmente sem teclados e mouse (às vezes sem disco rígido)
- Não podem ser acessados pela rede externa
- Login remoto a partir do servidor
- Responsáveis pelo processamento dos dados
Rede dedicada:
- Interliga nós
- Normalmente Ethernet
Clique na imagem para ampliar
Funcionamento do Cluster BeowulfO funcionamento é muito simples. A tarefa é separada em partes independentes, distribuídas nos vários nós que estão na estrutura do cluster, nos quais as informações são processadas, realizadas pela maquina que é designada como front-end do sistema.
Esse tipo de cluster parece maravilhoso, mas existe um pequeno detalhe que os tornam pouco úteis em situações que não necessitam de tanto poder computacional, pois ate é possível processar um numero fabuloso de dados, mas somente ao utilizar aplicativos desenvolvidos com suporte a arquitetura.
Construído de vários nós (clientes ou back-ends) controlados por um computador principal (front-end), ao qual se tem acesso direto, ligados por uma rede Fast Ethernet. O front-end distribui as tarefas e os back-ends realizam os cálculos que lhe são enviados. Como mostra a ilustração abaixo:
Clique na imagem para ampliar
Aplicações- Servidores Web de alto-desempenho – um cluster pode balancear a carga e aumentar a capacidade de resposta, quando o sistema estiver sob intensa utilização.
- Base de Dados – Reduzir tempo de resposta.
- Aplicações com inteligência artificial e automação – área que utiliza algoritmos que ocupam os recursos do sistema de uma forma intensiva e exponencial em relação á dimensão do problema como reconhecimento de padrões, redes neurais e máquinas de inferência.
- Engenharia Genética – através do sequenciamento de DNA.
- Computação Gráfica – Diminuir o tempo de renderização de imagens.
- Analise de Elementos Finitos – cálculo de estruturas, navios, aviões e veículos Espaciais.
- Exploração Sísmica – possibilidade de analisar grande conjunto dados gerados por levantamentos sismológicos e mapeamento de satélite.
- Problemas de pesquisa básica – em química, física e engenharia, tais como mecânica quântica, estatística, química de polímeros, crescimento de cristais, dinâmica molecular, distribuições de conexões em circuitos VLSI entre outros.
- Pesquisas militares – projetos de novas armas, simulação dos efeitos causados por novas armas, processamento de sinais de radares para comando de mísseis antibalísticos e geração automática de mapas.
Download:
Cluster Bewoulf - LinuxFonte:
Wikipédia