Infraestrutura do Apache Spark - combinando nós de computação e armazenamento

3

Eu tenho uma pergunta de infraestrutura em torno do Apache Spark, que estou analisando em um projeto greenfield com (no máximo) aproximadamente 4 TB de dados usados para modelagem a qualquer momento. O domínio da aplicação será analítico e o treinamento dos modelos provavelmente será feito em um lote durante a noite, e não em tempo real.

Os aplicativos tradicionais de três camadas separaram os lados do banco de dados e do aplicativo da carga de trabalho, o que significa que dois servidores diferentes poderiam ser otimizados para executar tarefas de armazenamento e computação, respectivamente. Isso facilita a arquitetagem de um sistema porque vários provedores (como Dell por exemplo) têm ofertas otimizadas para cada aplicação.

Novos frameworks como o Spark parecem combinar ambos os aspectos para evitar a movimentação de dados entre os nós - e a carga de rede que isso causa -, mas estou imaginando como isso funciona no nível da infraestrutura.

As pessoas combinam grandes quantidades de armazenamento e poder de computação em uma única máquina? Como poderia ser uma topologia de sistema padrão para o meu aplicativo e quais fatores eu consideraria ao planejá-lo? Por fim, existem servidores blade que ofereçam alta densidade de armazenamento e boa capacidade de computação?

Eu gostaria de trabalhar com no máximo 5 nós, mas não conheço nenhum recurso de orientação para ajudar no planejamento de uma implementação como essa. Quaisquer sugestões apreciadas a esse respeito.

    
por analystic 13.06.2015 / 12:41

1 resposta

1

Vou responder a minha própria pergunta, pois encontrei alguns recursos, mas também vou marcar as respostas de qualidade que vêm como respostas também, então sinta-se à vontade para contribuir. Comentários sobre meus pensamentos aqui também são mais que bem-vindos.

Este link tem algumas informações sobre o hardware de provisionamento do Spark e, pelo que consigo entender basicamente, você pode tratar o Spark como a camada de aplicativo em uma pilha de três camadas. Portanto, você pode executar (por exemplo) Cassandra ou HBase em seus nós de armazenamento e manter o Spark em nós de "aplicativo" com CPUs e memória mais strongs, mas com menos armazenamento disponível. A Ethernet de 10 Gbps entre os nós parece ser importante nesses casos de uso.

Suponho que isso levanta a questão de como se faz o processamento em um conjunto de dados muito grande, considerando que você pode continuar transmitindo dados de um banco de dados Hbase para fazer o processamento, mas acho que isso se resume à arquitetura de aplicativos, vai cair fora do escopo deste site.

    
por 15.06.2015 / 08:58