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.
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
- software de gestão de Sistemas
- schedulers de trabalho
- Armazenamento
- oportunidades para computação em aglomerados na nuvem
- arquitecturas recomendadas e melhores práticas
- investigador independente que procura processar os seus dados
- cluster de pequena a média dimensão para um único projecto ou equipa
- HPC centro de adição de estourar a capacidade de clusters existentes
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.