Usando clusters para computação técnica em larga escala na nuvem

esta solução fornece orientação para a realização de computação técnica em larga escala na Nuvem Google. Muitos aplicativos de computação técnica requerem um grande número de nós computacionais individuais, conectados em conjunto em um cluster, e coordenando computação e acesso de dados através dos nós.

os conceitos e tecnologias subjacentes à computação em aglomerado desenvolveram-se ao longo das últimas décadas, e são agora maduros e tradicionais. Migrar o pacote de software para o Google Cloud pode adicionar algumas rugas, mas também oferece uma série de oportunidades para diminuir os custos e aliviar os estrangulamentos existentes nos ambientes de computação de alto desempenho de hoje. Este guia fornece uma visão geral das tecnologias, dos desafios e da actual gama de soluções para os clusters informáticos em funcionamento no Google Cloud.

Cluster computing aggregates and coordinates a collection of machines to workgether to solve a task. Clusters tipicamente têm um único nó de cabeça (às vezes chamado de nó mestre), algum Número de nós computados, e possíveis alguns outros nós especiais. O nó da cabeça é o cérebro do sistema e é responsável por:

  • registrando nós computados no sistema.
  • monitorização dos nós.
  • afectação de postos de trabalho a determinados nós.
um aglomerado é composto por um nó de cabeça e um conjunto de nós computados.
Figura 1. Um aglomerado é composto por um nó de cabeça e um conjunto de nós computados. Os usuários interagem com o nó da cabeça que, em seguida, coordena o trabalho para os nós computados.

os utilizadores apresentam empregos, que são compostos por muitas tarefas, onde uma tarefa é a unidade de trabalho de base. Alguns aplicativos requerem todas as tarefas em uma tarefa para executar atualmente e deixar as tarefas se comunicarem para implementar um algoritmo paralelo; alguns empregos têm um conjunto complexo de dependências de tarefas, de modo que tarefas particulares devem ser executadas antes de outras; e algumas tarefas podem exigir configurações de memória, CPUs, ou outro hardware particular em que executar. As tarefas são executáveis que lêem os dados de entrada do armazenamento, processam os dados para produzir um resultado, e então escrevem os resultados finais de volta ao armazenamento.

existem dois tipos principais de aglomerados de trabalho de computação:

  • High-performance computing (HPC) — um tipo de computação que usa Nós manyworker, estreitamente acoplados, e executando simultaneamente para realizar a tarefa. Estas máquinas normalmente precisam de baixa latência de rede para se comunicarem de forma eficaz. Exemplos de aplicações neste espaço incluem modelagem meteorológica,dinâmica de fluidos computacional (CFD), modelagem de estresse em Engenharia, e design de Eletrônica.

  • computing High-throughput (HTC) — um tipo de computação onde appshave múltiplas tarefas que são processadas independentemente uma da outra sem necessidade de que os nós computados individuais se comuniquem. Às vezes estas cargas de trabalho são chamadas embaraçosamente paralelas ou lotes de trabalho. Os exemplos tipicaisincluem renderização de mídia, transcodificação, genômica, e Particula-física-simulação de eventos e processamento. Se você precisa processar um monte de arquivos individuais, é provavelmente uma carga de trabalho HTC.

pilha de software para computação em aglomerado

uma pilha de software para computação em aglomerado é constituída por::

  • software de gestão de sistemas que fornece e constrói clusters.
  • Schedulers that orchestrate job execution.
  • aplicações para o Utilizador Final.

as seguintes secções discutem software e schedulers de gestão de sistemas.

software de gestão de Sistemas

você pode executar software de clustering quer diretamente no hardware de metal, como com clusters nas instalações, ou em ambientes virtualizados, como com cloudenvironments. Orquestrar múltiplos nós em um conjunto à mão é timeconsumar e propenso a erros. Você pode usar o fornecimento softwareto de gerenciamento de clusters especializados e configurar vários nós e recursos, juntos, de forma aceitável e determinística.

the open sourceElastiCluster software from the University of Zurique provides a cloud-native approach toluster management, with support for provisioning nodos, by using Compute Engine, and configuration of nods by using a set of Ansibleplaybooks. ElastiCluster fornece os nós e instala uma base softwarestack, incluindo NFS para serviço de arquivos, gerenciamento de contas de usuário NIS, e um programador de Job para execução de aplicativos de usuário. O elasticuster suporta uma variedade de programadores, e você pode usá-lo fora da caixa ou personalizá-lo para atender às necessidades de equipes de pequeno a médio porte.

se utilizar outros sistemas de gestão da configuração para gerir os seus clusters de CPC, tais como Chef, Puppet, ou Terraform, pode aproveitar estes investimentos à medida que migra para o Google Cloud utilizando as ferramentas e plugins disponíveis.

o Google Cloud fornece serviços nativos para o fornecimento e implementação de sistemas de software multi-nó. O Gerenciador de implantação da nuvem permite-lhe fornecer um conjunto de recursos da nuvem, incluindo o motor Compute, grupos de instância computados do motor, e armazenamento na nuvem. O tutorial htcondor mostra-lhe como usar o Gestor de implementação da nuvem e os grupos de instância geridos para aprovar e configurar um conjunto.

schedulers de trabalho

após o cluster estar operacional, o software que gerencia a atribuição de tarefas e nós é chamado de programador de tarefas (às vezes chamado de Gestor de tarefas ou gestor de fila). Muitas vezes, um gerente de cluster vem com abuilt-in Job scheduler. Os programadores de trabalho fornecem uma variedade de capacidades para ajudar a gerir tarefas e tarefas, tais como::

  • apoio às prioridades de emprego entre utilizadores e grupos, o que ajuda a prever horários de trabalho baseados em políticas.
  • Suporte para tarefas falhadas por fazer fila e reescalonar tarefas.
  • Consideration of task dependencies and resource needs for task allocation.
  • escalar o tamanho do conjunto dependendo do número de trabalhos na fila.

há uma variedade de populares gerentes de carga de trabalho comercial e de código aberto.Exemplos incluem a Universidade de Wisconsin, Slurm da SchedMD, Univa Grid Engine e LSF Symphony da IBM. Cada um tem os seus pontos fortes.

o HTCondor é construído com uma filosofia de partilha de nada e é utilizado em todos os recursos partilhados para agendar oportunamente postos de trabalho em outras fontes. Ele fornece o seu próprio movimento de dados e, portanto, não requer sistemas sharedfile. Como resultado, HTCondor escala para centenas de milhares de núcleos e você pode usá-lo em várias zonas e regiões. O HTCondor tem sido usado para cargas de trabalho de hibrid, onde o trabalho é compartilhado ou dividido entre instalações e sistemas baseados em nuvem. No entanto, como o seu nome indica, está centrado em empregos de elevada produtividade, não estreitamente associados, em empregos paralelos.

Slurm and Univa Grid Engine provide a more traditional HPC cluster environment, supporting both high-through and high-performance parallel apps. Ambos assumem um sistema de arquivos compartilhados através dos nós, o que elimina a necessidade de mudar os dados. Ambos fornecem um ambiente de usuário conveniente e familiar para o desenvolvimento de aplicativos porque eles são muitas vezes as mesmas ferramentas utilizadas nas instalações.Estes Programadores de trabalho tradicionais são suficientes para clusters de tamanho pequeno a médio,mas à medida que o tamanho do cluster aumenta, a carga no servidor de arquivos torna-se a gargantilha para o desempenho. Os sistemas de ficheiros paralelos e distribuídos (ver secção seguinte) podem ajudar com este problema quando em grande escala. Alternativamente, quando o fileaccess de baixa latência não é necessário, você pode alavancar o armazenamento em nuvem, que proporciona acesso paralelo a objetos usando a API ou o throughgcsfuse,onde a compatibilidade de POSIX é necessária.

finalmente, o Google Cloud inclui um serviço simples para agendar uma tarefa baseada em aDocker em Compute Engine para cargas de trabalho de alto débito: a API Cloud Life SciencesPipelines.Este serviço requer que você decomponha o trabalho em tarefas,gerencie dependências entre tarefas e gerencie o ciclo de vida da tarefa. Thedsub open source project fornece uma ferramenta de linha de comando para o lançamento de batch jobs e apoia a API Cloud Life Sciences Pipelines.

Armazenamento

a maioria das aplicações HPC requerem uma solução de armazenamento de ficheiros que suporta a API POSIX. Para clusters menores,FileStore fornece um serviço de armazenamento de arquivos baseado em NFS gerenciado pelo Google. Para clusters maiores, no entanto, a aplicação i/O pode se tornar um gargalo de desempenho.Sistemas de arquivos em escala e paralelos,como o asElastifile (adquirido pelo Google), Lustre,orQuobyte, ajudam a escalar grandes clusters (ou até mesmo clusters menores I/O-pesados).

alternativamente, onde o acesso a arquivos de baixa latência não é necessário, você pode alavancar o armazenamento em nuvem, o que proporciona um acesso paralelo a objetos usando a API ou o throughgcsfuse,onde a compatibilidade POSIX é necessária.

oportunidades para computação em aglomerados na nuvem

existem muitas razões para executar aglomerados computacionais na nuvem:

  • tempo para solução. O lançamento de um cluster de qualidade da produção nas nuvens leva apenas alguns minutos, de um pequeno aglomerado de 10 nós com centenas de núcleos disponíveis, a grandes aglomerados com cem mil ou mais núcleos. Em contrapartida, a construção de novos aglomerados nas instalações pode levar meses até à conclusão da operação. Mesmo quando os clusters on-premises são disponíveis, eles tipicamente têm alta utilização e longos tempos de espera na fila —às vezes horas ou dias — antes que os trabalhos estejam programados para correr. Em vez disso, você pode construir seus próprios clusters na nuvem, usá-los para suas cargas de trabalho, e determinar os clusters quando sua análise estiver completa.

  • menor custo total de propriedade. O Google Cloud não só reduz a solução timeto,como também pode reduzir o custo total por execução, alavancando VMs impemptíveis, descontos de uso de longo prazo e escala dinâmica. Você pode adicionar nós quando as tarefas estão em fila de espera e removê-los quando não for necessário.

  • apoio à colaboração. Em muitas situações, a análise computacional é desenvolvida em colaboração com diferentes pessoas através de várias organizações. O Google Cloud fornece ferramentas de gerenciamento de nível de projeto e acesso para permitir o acesso controlado a dados e ferramentas analíticas. Os usuários autorizados podem acessar os mesmos aplicativos, dados e clusters para garantir que todos estejam na mesma página sem ter que copiar dados, gerenciar versões ou configurações de syncluster.

  • recursos personalizados. Porque o custo de um trabalho depende apenas do total de horas do núcleo, ao invés das instâncias de número, a execução de clusters na nuvem permite que cada equipe ou grupo tenha seu próprio cluster dedicado. Esta abordagem pode aliviar outro importante ponto de dor do desenvolvimento de políticas em torno do uso multi-grupo. Você pode então personalizar cada cluster dedicado à nuvem para sintonizá-lo para o aplicativo alvo. Os clusters locais tendem a incluir um recurso de tamanho único compartilhado entre os vários grupos e aplicativos. Num ambiente como este, as Políticas de partilha entre os grupos tendem a ser complexas de estabelecer e manter.

  • integração. Antes de poderem executar grandes trabalhos de cálculo, os investigadores realizam um trabalho significativo para preparar os conjuntos de dados. Depois de se moverem para a nuvem, os pesquisadores podem alavancar as grandes ferramentas de dados disponíveis na nuvem. Os resultados dos sistemas de cálculo também têm de ser analisados. Ferramentas como asBigQuery e Datalab podem proporcionar vantagens significativas em relação às disponíveis nos sistemas nas instalações.

os clusters típicos nas instalações são partilhados entre utilizadores e grupos e suportam muitas necessidades diferentes das aplicações.
Figura 2.Os clusters típicos nas instalações são partilhados entre utilizadores e grupos e suportam muitas necessidades diferentes das aplicações. Em contraste, ao se mudar para o Google Cloud, os usuários podem personalizar as propriedades do cluster para corresponder às necessidades do aplicativo para reduzir o custo e aumentar o desempenho.Apesar de as vantagens descritas até à data serem convincentes, existem, no entanto, alguns desafios técnicos que dificultam frequentemente os projectos de migração.

  • movimento de dados. Os conjuntos de dados que são processados por computenodes de um cluster normalmente devem ser encenados para a nuvem antes de executar os trabalhos.A gestão do movimento de dados pode ser complexa, dependendo do volume dos dados e da forma como é gerido. Ferramentas como o asAvere podem ajudar fornecendo uma camada de cache em nuvem que move automaticamente os dados quando necessário, mas para muitos aplicativos os conjuntos de dados devem ser encenados manualmente.

  • Acesso Aos Dados. Muitos aplicativos HPC requerem acesso compartilhado a um set offiles e diretórios. Como este acesso é fornecido pode afetar significativamente o desempenho DoApp. Você pode alavancar dados compartilhados armazenados inCloud armazenamento,em servidores NFS como filestore, ou usando sistemas de arquivos paralelos, como discutido na seção de estoragem.

  • segurança. Para dados sensíveis, você deve ter o cuidado de garantir que o acesso é sempre autorizado e os dados são adequadamente criptografados em repouso e em trânsito. Enquanto o armazenamento na nuvem criptografa os dados em repouso e em trânsito, você pode aplicar uma camada adicional de controle e gerenciar chaves,seja inCloud Key Management Service, ou por conta própria. As chaves devem ser recuperadas ou instaladas nos computenodes antes de executar a tarefa.

  • latência inter-nódulos. Para aplicações HPC bem acopladas, o desempenho pode ser sensível à latência entre nós no cluster.Como o Google Cloud fornece nós com tamanhos até 64 núcleos, você pode executar trabalhos paralelos de 64 vias sem atravessar nós. Na maioria dos casos, as tarefas de cerca de 1000 núcleos ou de menor dimensão têm um bom desempenho em hardware de rede não especializado.

  • Gestão de licenças de Software. Muitos aplicativos comerciais requerem o alicense server, às vezes conhecido como um servidor chave. Alguns aplicativos com um servidor de licença embutido ou recomendado e outros podem ser compatíveis com as ofertas de servidores de licença existentes. Alguns programadores de trabalho podem ajudar na gestão dolicense e impedir que os trabalhos funcionem até que uma licença esteja disponível.

arquitecturas recomendadas e melhores práticas

a computação técnica fornece muitas ferramentas e abordagens para diferentes circunstâncias. Com tantas opções, você pode achar difícil começar.Independentemente da escolha de software de gerenciamento de clusters e scheduler, há um número de melhores práticas que você pode seguir ao executar no Google Cloud.

  • alavancagem VMs preemptível sempre que possível. VMs Preemptible são apenas como VMs eregular no motor de cálculo, mas com um preço de até 80% menos do que VMs regular, com a ressalva de que eles podem ser recuperados com pouco aviso.Para cargas de trabalho de alta capacidade, os seus programadores de trabalho detectam a perda do nó e tratam-no como uma falha de nó e remarcam quaisquer tarefas que corram nesse nó num recurso diferente. Enquanto qualquer trabalho feito sobre aqueles nodesmight perdidos pode ser perdido, a probabilidade de perda de nó é baixa o suficiente para que o preço mais baixo vale a chance. A taxa de perda esperada é de 5% a 15%. PreemptibleVMs are limited to a maximum of 24 hours of use before being recaimed.
  • alavancar o custo e a largura de banda do armazenamento em nuvem em vez de executar o seu próprio sistema de arquivos paralelos. O armazenamento em nuvem proporciona uma forte consistência e um desempenho paralelo escalável com baixo custo global.Enquanto a latência de primeiro byte é alta em cerca de 100 ms, aplicativos que podem ver o armazenamento em nuvem em vez de executar um servidor de arquivos paralelos onCompute motor são mais eficientes em termos de custo. A largura de banda disponível entre o armazenamento em nuvem e os nós computados é suficiente para manyapps, alguns clientes relataram largura de banda agregada sustentada de mais de 23 GB/s.
  • construir um cluster único app ou grupo único. Os clusters tradicionais são distribuídos por vários usuários, grupos e aplicativos, o que pode resultar em longos períodos de fila para empregos e uso ineficiente de recursos por aplicativos. OnGoogle Cloud, considere a criação de múltiplos clusters para cada grupo ou projeto, e usando clusters que são otimizados para aplicativos específicos que os rodam. Quer você execute um cluster por duas horas, ou dois clusters por um dia cada, o custo total é o mesmo, mas o último padrão pode reduzir os tempos de espera e melhorar o desempenho do aplicativo.Embora cada implementação seja única, as secções seguintes fornecem algumas recomendações gerais para três casos comuns.

    investigador independente que procura processar os seus dados

    investigadores individuais procuram normalmente executar o seu aplicativo através dos seus dados e chegar à conclusão o mais rapidamente possível. Eles podem ser especialistas no theirapp, mas eles não querem ser especialistas em Administração ou gestão de clusters.

    se estiver a correr cargas de trabalho de alto débito, pode considerar a utilização da API Cloud Life Sciencespelines.A API Pipelines requer que você coloque seu aplicativo em um Docker Container e coloque seus arquivos de entrada em um balde de Armazenamento Em Nuvem. Depois disso isdone, você pode usar a ferramenta de linha de comando gcloud para lançar o aplicativo contra os arquivos no balde de armazenamento na nuvem. Você pode colocar os resultados em outro balde de armazenamento de nuvem.

    Aqui está um exemplo de um comando para executar uma tarefa que usesSAMtools para gerar um BAM arquivo de índice a partir de uma entrada de arquivo BAM:

    gcloud alpha genomics pipelines run --pipeline_id \--logging gs:///logs \--inputs inputFile=gs://genomics-public-data/gatk-examples/example1/NA12878_chr22.bam \--outputs outputFile=gs:////output/NA12878_chr22.bam.bai

    Onde

    • representa o app ID do Tubulações API.
    • representa o nome do balde de armazenamento NAS Nuvens.
    • representa o nome do seu directório.

    não há aglomerado para fornecimento ou gestão. As tarefas simplesmente funcionam até a conclusão em um VM que é provisionado e gerenciado pela API Pipelines. Este é o custo eficiente porque calcular as contas do motor por segundo de uso.

    cluster de pequena a média dimensão para um único projecto ou equipa

    num projecto ou equipa, os membros podem ter acesso a um cluster gerido pela equipa acentral para os utilizadores em toda a sua empresa, ou podem ter acesso a recursos em grande escala num centro HPC fora do local. Em ambas as situações, os visitantes são geridos profissionalmente e acessados utilizando ferramentas padrão. Por exemplo, os usuários podem usar ssh para se conectar a um nó de cabeça e usar o motor de gradesubmit scripts para enviar tarefas para execução.

    uma abordagem para uma equipa deste tipo consiste em utilizar o brilho Elasticopara definir um ambiente de cluster semelhante aos seus sistemas nas instalações. Eles podem personalizar o cluster selecionando um tipo de máquina computada que é mais adequado para o seu aplicativo, e personalizar os scripts de inicialização para instalar as dependências softwared para o seu aplicativo. Os dados de entrada ainda podem ser armazenados em toCloud, e você pode instalargcsfuse nos nós computados para montar os dados de entrada.

    Estes detalhes são registrados no ElastiCluster arquivo de configuração, e whencomputation é necessário, um cluster é criado usando a ferramenta de linha de comando, forexample:

    % elasticluster start astrocluster1

    O cluster, nomeado no arquivo de configuração de astrocluster1, é provisionedand configurado como especificado. As definições em um arquivo de configuração são flexíveis e suportam diferentes tipos de nó para nós cabeça e computar,Compute Enginepersistent disks for scratch space, preemptible VMs to lower the cost for high throughput workloads, and GPUs for accelerated operation. Um exemplo de um basicconfiguration para um Slurm baseada em cluster com 10 nós de computação e 1 cabeça nodeusing 32-núcleo de máquinas virtuais com base no CentOS ficaria da seguinte maneira:

     cloud=google login=google setup=ansible-slurm security_group=default image_id=centos-7-v20170327 flavor=n1-standard-32 frontend_nodes=1 compute_nodes=10 ssh_to=frontend boot_disk_size=50 

    Finalmente, quando não há mais tarefas em execução no sistema, você pode interromper o cluster:

    % elasticluster stop astrocluster1

    Para maiores cargas de trabalho, você pode:

    • olhar para personalizar os tipos de máquinas de cluster para reduzir ainda mais os custos.
    • adicionar um filtro paralelo externo para aumentar o desempenho à escala.
    • Add Auto scaling capabilities to add and remove additional nodes based on thequeue depth.

    HPC centro de adição de estourar a capacidade de clusters existentes

    Central de HPC centros têm uma enorme capacidade para computação, mas porque eles areused por muitos grupos de toda a empresa ou organização, HPC centros tendem a haveconsistently alta utilização e longa fila de espera vezes. São normalmente adquiridas tendo em conta uma determinada capacidade de produção e, quando são submetidas à mistura cargas de trabalho imprevistas, podem abrandar significativamente os progressos.

    nestas situações, você pode irromper no ambiente da nuvem do Google adicionando nós computados temporariamente ao aglomerado. O cluster se torna um híbrido, com o nó da cabeça e alguns nós computados rodando em instalações, e outros computenodes rodando no Google Cloud. Quando as filas de trabalho foram drenadas, os nós adicionais podem ser liberados.

    rebentar com a nuvem é conveniente por algumas razões:

    • mantém um ambiente de utilizador consistente para a submissão e gestão de empregos. Os usuários não sabem ou se importam se nós adicionais são adicionados.
    • permite aos gestores de TI definir políticas para quando rebentar, a fim de controlar os custos.

    o maior desafio é fornecer um espaço de nomes de dados e ficheiros consistentes para as tarefas do utilizador nas instalações e nos nós de nuvem do Google. Os nós de nuvem do groogle podem não ter acesso aos mesmos sistemas de ficheiros internos que os nós de instalações. Nesta situação, os empregos que referem estes ficheiros não funcionarão.

    se os nós do Google Cloud estiverem configurados com permissões internas de acesso a ficheiros, então os trabalhos serão executados, mas poderão não funcionar da mesma forma e poderão criar uma largura de banda adicional de rede e taxas de saída. Além disso, os trabalhos paralelos que são divididos entre as instalações e os nós de nuvem também podem não ter um bom desempenho com a latência adicional entre as diferentes partes do aplicativo.

    para empregos de alta produtividade, usando HTCondor para irromper em recursos de nuvem para além de muitos desses desafios. HTCondor suporta provisionamento dinâmico usingGlideInWMS.As jobs are submitted into the a job queue, they can trigger nodos beingprojected and added to the cluster. Quando eles são adicionados, o condor schedulertransfere os arquivos de entrada para o nó designado e usa esses nodos adicionais para executar as tarefas e drenar a fila.

    leia mais sobre casos de utilização de computação em aglomerado no Google Cloud:

    • Google Cloud, HEPCloud, and probing the nature of nature
    • 220,000 núcleos and counting: MIT math professor breaks record for largestever Compute Engine job

    Read more about:

    • servidores de arquivos em Compute Engine
    • Nuvem de Implantação de Gerenciador de documentação

    Começar com o seu cluster:

    • o processamento em Lote com Compute Engine Autoscaler
    • Criação de um HTCondor cluster usando Nuvem Gerenciador de Implantação de modelos de

    Exemplo de projetos no GitHub:

    • dsub exemplo: Simples trabalhos em lotes com janela de Encaixe
    • ElastiCluster exemplo
    • Dutos API exemplos

    • Experimente outras Google Cloud recursos para si mesmo. Dá uma vista de olhos aos nossos autóctones.

Deixe uma resposta

O seu endereço de email não será publicado.