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

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

Tenho uma dúvida sobre infraestrutura em torno do Apache Spark, que pretendo implementar em um projeto greenfield com (no máximo) aproximadamente 4 TB de dados usados ​​para modelagem a qualquer momento. O domínio do aplicativo será analítico e o treinamento dos modelos provavelmente será feito em lote durante a noite, em vez de em tempo real.

Os aplicativos tradicionais de três camadas separavam 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 arquitetura de um sistema porque vários provedores (comoDellpor exemplo) têm ofertas otimizadas para cada aplicação.

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

As pessoas estão combinando grandes quantidades de armazenamento e capacidade de computação em uma única máquina? Qual seria a aparência de uma topologia de sistema padrão para minha aplicação e quais fatores eu consideraria ao planejá-la? Finalmente, existem servidores blade que oferecem alta densidade de armazenamento, bem como bom poder de computação?

Idealmente, 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 esta. Qualquer sugestão apreciada a esse respeito.

Responder1

Responderei à minha própria pergunta, pois encontrei alguns recursos; no entanto, também marcarei todas as respostas de qualidade que surgirem como respostas, então sinta-se à vontade para contribuir. Comentários sobre meus pensamentos aqui também são mais que bem-vindos.

Esselink tem algumas informações sobre o provisionamento de hardware para o Spark e, pelo que entendi, você pode basicamente 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 "aplicativos" com CPUs e memória mais fortes, mas com menos armazenamento disponível. Ethernet de 10 Gbps entre os nós parece ser importante nesses casos de uso.

Suponho que isso levante a questão de como processar um conjunto de dados muito grande, considerando que, em última análise, você ainda pode estar transmitindo dados de um banco de dados Hbase para fazer o processamento, mas acho que isso se resume à arquitetura do aplicativo, então será estão fora do escopo deste site.

informação relacionada