
Tengo una pregunta sobre la infraestructura en torno a Apache Spark, que estoy considerando implementar en un proyecto totalmente nuevo con (como máximo) aproximadamente 4 TB de datos utilizados para el modelado en un momento dado. El dominio de la aplicación será el análisis, y el entrenamiento de los modelos probablemente se realizará en lotes durante la noche, en lugar de en tiempo real.
Las aplicaciones tradicionales de tres niveles separaban los lados de la base de datos y de la aplicación de la carga de trabajo, lo que significa que se podían optimizar dos servidores diferentes para realizar tareas de almacenamiento e informática, respectivamente. Esto facilita la arquitectura de un sistema porque varios proveedores (comoDellpor ejemplo) tienen ofertas optimizadas para cada aplicación.
Los nuevos marcos como Spark parecen combinar ambos aspectos para evitar mover datos entre nodos (y la carga de red que esto causa), pero me pregunto cómo funciona esto a nivel de infraestructura.
¿Están las personas combinando grandes cantidades de almacenamiento y potencia informática en una sola máquina? ¿Cómo sería una topología de sistema estándar para mi aplicación y qué factores consideraría al planificarla? Por último, ¿existen servidores Blade que ofrezcan una alta densidad de almacenamiento además de una buena potencia informática?
Lo ideal sería trabajar con no más de 5 nodos, pero no conozco ningún recurso de orientación que me ayude a planificar una implementación como esta. Cualquier sugerencia se agradece al respecto.
Respuesta1
Voy a responder mi propia pregunta ya que encontré algunos recursos; sin embargo, también marcaré cualquier respuesta de calidad que aparezca como respuesta, así que siéntete libre de contribuir. Los comentarios sobre mis pensamientos aquí también son más que bienvenidos.
EsteEl enlace tiene información sobre el aprovisionamiento de hardware para Spark y, por lo que puedo entender, básicamente puedes tratar a Spark como la capa de aplicación en una pila de tres niveles. Por lo tanto, puede ejecutar (por ejemplo) Cassandra o HBase en sus nodos de almacenamiento y mantener Spark en nodos de "aplicaciones" con CPU y memoria más potentes, pero con menos almacenamiento disponible. Parece que Ethernet de 10 Gbps entre los nodos será importante en estos casos de uso.
Supongo que esto plantea la pregunta de cómo se procesa un conjunto de datos muy grande considerando que, en última instancia, es posible que aún se estén transmitiendo datos desde una base de datos Hbase para realizar el procesamiento, pero creo que esto se reduce a la arquitectura de la aplicación, por lo que quedan fuera del alcance de este sitio.