Introducción a los clusters de computación distribuida

Un clúster de computación distribuida consiste en una red formada por varias computadoras que funcionan como un solo sistema.

Estos computadores pueden tener múltiples configuraciones, es decir, puede funcionar con varias estaciones de trabajo, computadoras personales, laptops, etc. A la final su objetivo es que la red funcione como una sola máquina.

Es así que los sistemas distribuidos ofrecen varios beneficios, tales como:

Los sistemas de computación distribuidos además, pueden correr en hardware ofrecido por varios proveedores (incluyendo aquellos con soluciones en nube). El software en estos sistemas se puede organizar en dos partes: clientes y servidores. Los clientes son programas que usan servicios que proveen los servidores. Cuando un cliente hace la solicitud de un servicio, los proveedores lo ejecutan, tomando en cuenta que estos servicios requiere manejo de recursos.

Con estos detalle en mente, usualmente existen tres tipos de clúster:

Cada uno se usa acorde a los recursos que se necesiten para ejecutar una tarea.

Introducción a Apache Spark

Apache Spark es un motor unificado de analítica para big data y machine learning y fue originalmente desarrollado en la UC Berkeley en 2009. Este funciona sobre un clúster de computación distribuida. A continuación podemos ver cómo se estructura su ecosistema.

Apache Spark se puede considerar entonces un sistema de computación en clúster de propósito general y orientado a la velocidad. Proporciona APIs en Java, Scala, Python y R. Además, proporciona un motor optimizado que soporta la ejecución de grafos en general. También soporta un conjunto extenso y rico de herramientas de alto nivel entre las que se incluyen Spark SQL (para el procesamiento de datos estructurados basada en SQL), MLlib para implementar machine learning, GraphX para el procesamiento de grafos y Spark Streaming.