GPU Computing: una nueva etapa para Big Data


Ya han pasado más 10 años desde que Hadoop apareció (lo celebramos a principios de 2016). Aunque Big Data no es Hadoop (ya hemos pasado la fase de confusión), este hito nos indica que hemos llegado ya a un cierto punto de madurez respecto a ciertas tecnologías que conforman lo que conocemos.

En fase inicial, los desarrollos de tecnologías de Big Data se han centrado en el software marcando una nueva etapa que se quería diferenciar de soluciones más fundamentadas en el hardware como HPC o appliances analíticas o especializadas en el análisis de datos. Hemos asistido a la aparición de múltiples tecnologías categorizadas en batch processing, stream processing y NoSQL. Pero todas ellas fundamentadas en software y en la creación de ecosistemas alrededor de ellas que pugnan por captar la atención de los desarrolladores. Ya sea Apache Hadoop, Apache Spark o Apache Flink (por citar algunas de ellas).

Hemos vivido una expansión de tecnologías (de software) centradas en mejorar el almacenamiento y el procesamiento del dato. Esta explosión ha derivado en una dificultad inherente no sólo para escoger la solución adecuada sino también el proveedor (algo a lo que hemos querido dar un poco de luz a través de la primera guía de estrategias de datos co-publicada con Computer World España). Ya estamos preparando la segunda versión a ser publicada a principios de 2017.

Y sin embargo, aún tenemos límites en lo que podemos hacer con el software. Es cierto, que se han creado diferentes tecnologías, ecosistemas y arquitectura(s) para mejorar lo que podemos hacer con el dato, pero ¿y si es el momento de introducir nuevos enfoques?

Muchas de las mejoras en el contexto del procesamiento de datos complejos se han articulado alrededor de conceptos como el uso de la computación distribuida (más servidores trabajando de forma conjunta y/o en paralelo, en lugar de un servidor más grande y potente) y la capacidad de usar la memoria (del CPU), así como adaptar algoritmos a su versión distribuida.  Pero para algunos escenarios (como el contexto geoespacial con múltiples agregaciones en paralelo) necesitamos todavía mayor potencia de procesamiento para nuestros algoritmos. Lo que se traduce en crear una arquitectura más compleja a nivel de hardware en las que debemos desplegar y orquestrar nuestras plataformas de datos. Miles de nodos que deben ser gestionados (y esto entra en el campo de los DevOps y los data engineers) para cumplan su cometido. Esto supone mayor dificultad para una organización.

Quizá algunos piensen para que lo necesitamos. ¿No es suficiente con lo que tenemos? No voy a estar en un contexto parecido.

Pensemos en un ejemplo, imaginemos que queremos tener trazabilidad de toda la flota logística de nuestro negocio. Ya sean camiones, coches, motocicletas, bicicletas o drones. Que queremos saber tiempo real dónde están, si llevan retraso y si todo funciona correctamente. Esto puede parece muy simple, pero en función de la cantidad de objetos en esta red logística (y si hablamos de IoT) esto es simplemente en gran reto a resolver. Con esto quiero decir, a medida que planteemos más y más propuestas de valor asociadas a la digitalización completa de un proceso de negocio vamos a necesitar mayor capacidad en nuestra plataforma de datos para poder tener visibilidad completa de lo que está sucediendo.

Afortunadamente, a grandes males, grandes remedios. Un nuevo enfoque ha emergido, GPU Computing, es decir, el uso de los procesadores gráficos para tareas realizadas tradicionalmente por el CPU. Entremos en detalle. Un CPU consiste en una serie de núcleos (pocos) optimizados para hacer procesamiento secuencial mientras que un GPU consiste en arquitectura consistente en miles de pequeños núcleos diseñados para realizar múltiples tareas de forma simultánea.

Inicialmente estos núcleos han sido optimizados para el procesamiento para operaciones gráficas, pero desde hace más de una década se ha extendido las capacidades para ampliar los casos de uso. Por ejemplo, Nvidia lleva tiempo desarrollando este nuevo tipo de GPU y un lenguaje de programación llamado CUDA para crear nuevas aplicaciones. Es decir, no estamos hablando algo completamente nuevo, sino de una tecnología que ha llegado al punto de estar preparada para su despliegue empresarial. La madurez de la que hablan muchos.

Por lo que no es nuevo encontrarse software acelerado por GPU, pero si su uso en el contexto de Big Data. Y eso nos lleva al punto actual en el empresas como Jedox que usa la aceleración por GPU para mejorar el rendimiento de su servidor MOLAP, o Kinetica que ofrece una plataforma de computación in-memory fundamentada en GPU.

Sobre Kinetica

Podemos considerar Kinetica como una de las primeras empresas cuyo producto extiende las capacidades de procesamiento en tiempo real (y también incluye soporte para series temporales, soporte geoespacial y OLAP) de forma integrada abriendo la puerta a casos de uso imposibles antaño (por precio o por capacidades técnicas). Entre sus ejemplos destacan aquellos con componente geoespacial (como el caso de US Portal). Pero destaca no sólo su capacidad de usar GPUs para el análisis sino la posibilidad de combinarlo con CPU y la integración con múltiples fuentes de origen y con algunas de las principales soluciones de BI. La siguiente imagen ilustra su arquitectura.

Kinetica

Arquitectura de Kinetica

Atención con esta empresa, de la que vamos a leer mucho en los próximos meses en lo que se antoja uno de los puntos calientes en este mercado. Grandes empresas ya han apostado por sus soluciones para innovar en sus respectivas plataformas de datos.

No son los únicos (fabricantes) claro. Amazon, Microsoft y Google pronto ofrecerán estas capacidades en su porfolio y muchos de los grandes actores ya tienen en su punto de mira esta tecnología.

¿Estamos preparados para la siguiente revolución del big data fundamentada en GPUs?

One thought on “GPU Computing: una nueva etapa para Big Data

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s