BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias DryadLINQ; Computação Distribuída Facilitada

DryadLINQ; Computação Distribuída Facilitada

Favoritos

Dryad e DryadLINQ são dois projetos da Microsoft Research para o desenvolvedor C# que facilitam o processamento de grandes volumes de dados em clusters de computadores ou datacenters.

Dryad é uma infra-estrutura que executa programas sequenciais de forma paralela em um custer de computadores em um datacenter. A computação paralela é organizada como um grafo acíclico direto onde os programas são os vértices do grafo e as arestas são canais de comunicação entre os programas, conforme a figura abaixo:

dryad

O grafo simplesmente mostra o relacionamento entre programas, de onde chega as entradas e para onde são direcionadas as saídas. O grafo precisa ser acíclico para evitar deadlock no agendamento de um programa. O Job Manager (JM) armazena o grafo e agenda a execução de um programa quando seus canais de entrada estão prontos e quando há um computador disponível. O JM obtém um computador disponível do Name Server (NS) e agenda o programa para execução através de um daemon (D). Os canais de comunicação entre programas (os vértices) são arquivos, memória compartilhada ou pipes TCP. O grafo pode ser modificado dinamicamente duramente a execução e é tolerante a falhas. O grafo completo pode ser executado em um sistema único para se fazer debug. O Dryad já é utilizado em produção pela Microsoft no produto AdCenter.

DryadLINQ é um “compilador que traduz programas LINQ para computações distribuídas que podem rodar em um cluster de PCs”. Este processo é conseguido através do seguinte:

  • Objetos de dados C# e LINQ tornam-se arquivos particionados distribuídos.
  • Queries LINQ tornan-se tarefas Dryad distribuídas.
  • Métodos C# tornam-se código executado nos vértices de uma tarefa Dryad.

DryadLINQ tem as seguintes funcionalidades:

  • Programação declarativag: computações são expressadas em uma linguagem de alto nível similar ao SQL
  • Paralelização automática: de um código declarativo seqüencial, o compilador DryadLINQ gera planos de query altamente paralelizados para grandes clusters de computadores. Para explorar o paralelismo em múltilplos processadores em cada máquina, o DryadLINQ se vale do framework de paralelismo PLINQ.
  • Intragração com o Visual Studio: no DryadLINQ, programadores aproveitam o abrangente ferramental do VS: Intellisense, refatoração, debugger integrado, gerenciamento de build, gerenciamento de código etc.
  • Integração com o .Net: todas as bibliotecas .Net, incluído o Visual Basic e as linguagens dinâmicas estão disponíveis.
  • Verificação de tipagem: computações distribuídas são estaticamente verificadas.
  • Serialização automática: mecanismos de transporte de dados lidam com todos os tipos de objeto .Net automaticamente.
  • Otimização de grafos de Jobs
    • estático: um rico conjunto de regras de otimização de queries via re-escrita de termos é aplicado ao plano de query, otimizando localmente e melhorando a performance.
    • dinâmico: otimizações de plano de query de tempo de execução adaptam o plano levando em consideração estatísticas do conjunto de dados processado.

Links úteis: Paper: Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks, Apresentação: Dryad, Paper: DryadLINQ: A System for General-Purpose Distributed Data-Parallel Computing Using a High-Level Language, DryadLINQ program examples (PDF).

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT