La segunda sesión de las TechXperience fue protagonizada por nuestro compañero Francisco Javier Salvado, Big Data Engineer en Bosonit, con la temática “Estado del arte del dato” en la cuál repasó los fundamentos del Big Data, y sus diferentes aplicaciones para, más tarde, ponerlas en contexto en su experiencia con cliente. Una charla enriquecedora que hoy traemos a colación para recoger los puntos más interesantes de ella y conocer el estado del arte del dato.
¿Quién es Francisco Javier Salvado?
Primero de todo debemos presentaros al protagonista de la sesión: Francisco Javier Salvado. Natural de Chiclana, Cadiz, y teletrabajando allí desde el inicio de la pandemia. Es licenciado en Ingeniería de las Tecnologías de Telecomunicación por la Universidad de Sevilla y también cuenta con un Máster en Análisis y Visualización de Datos Masivos por la UNIR.
En los puestos en los que ha trabajado son Big Data Engineer, Big Data Developer y, en mis inicios, Full Stack Developer. En cuanto a clientes, su primera experiencia fue trabajando para la Junta de Andalucía en Fujitsu, que seguro que la conocéis por hacer aires acondicionados, pero también es una consultora tecnológica bastante grande. Allí formó parte de un equipo de trabajo dentro de la Fundación Progreso y Salud, iniciándose en programación web con Java.
Su objetivo era dedicarse al mundo del Big Data, que venía interesándole desde antes y cuando tuvo la oportunidad entró en Bosonit para formarse primero en Logroño y de ahí pasar a aplicar su conocimiento y talento a proyectos para cliente.
Estado del arte del Dato
Antes de profundizar en conocer el estado del arte del dato, seguro que la mayoría de vosotros habrá hecho alguna búsqueda sobre lo qué es el Big Data en algún momento y con muy alta probabilidad habrá llegado a lo que son las ‘V’ del Big Data, una serie de 5 características que son las siguientes: Volumen, Variedad, Velocidad, Variedad y Valor. Pero la realidad es que todo se puede resumir en una sola V: Volumen. Y es que, como la propia palabra indica, si hablamos de Big Data estamos hablando de macrodatos y de grandes volúmenes de datos.
Destacar también que lo que hoy nos parece grande, en un futuro será pequeño y en el pasado nos parecía mucho más grande. Para ver esto basta con pensar en lo que hoy en día nos supone un Gigabyte en comparación a lo que nos suponía hace una década. Por lo tanto, podríamos concluir que Big Data es un término ambiguo y en continua evolución hasta el momento. Para dar un dato real y podamos ver en perspectiva del volumen soportado por uno de estos sistemas, puedo decir que en el proyecto en el que trabajo actualmente contamos con 100GB de memoria disponible en preproducción y 350GB en el entorno de producción. Esta memoria es la que utiliza Spark para realizar la labor de procesar los datos.
Teniendo en cuenta esto, si hablamos de Big Data, también deberíamos de hablar de computación distribuida, ya que los sistemas tradicionales no son capaces de realizar la tarea con la agilidad necesaria para adaptarse a las exigencias del momento.
Pero no debemos confundir la computación distribuida de la computación en paralelo. En la computación distribuida la memoria está separada entre los distintos procesadores y en paralelo la memoria es compartida por todos. Esto es algo fundamental puesto que, en la computación distribuida, cuando trabajamos con Spark, se produce un fenómeno llamado ‘Shuffle’; un traspaso de información entre las distintas memorias de cada nodo y parte fundamental a la hora de programar.
Entornos de trabajo para manejo de Big Data
Si miramos un poco al pasado, en la década de los 90 se desarrolló la World Wide Web, a finales de los 90 apareció Google y en 2004 de fundó Facebook. Sin darnos cuenta, se podría decir que estábamos inventando el coche antes que la rueda ya que el aumento exponencial de usuarios de internet haría necesario el auge de tecnologías que diesen soluciones eficientes a la gestión de tal volumetría de datos.
En 2006 se lanza Apache Hadoop. Un framework de computación distribuida que hoy en día prácticamente todos conocemos y que estuvo inspirado en MapReduce y Google File System. Ocho años después, en 2014, nacería Apache Spark. Su nacimiento supuso un salto de calidad radical al aumentar por cien el rendimiento, entre otras cosas, porque se logra trabajar en memoria en lugar de en disco.
Enlazando con este evento, no es casualidad que en el año 2013 viera la luz un informe acerca del concepto industria 4.0 o cuarta revolución industrial la cual está basada, entre otras tecnologías disruptivas, en el Big Data.
Dentro del proyecto Apache Hadoop y enlazando con lo dicho anteriormente acerca de la creación de Facebook y el auge de las redes sociales, cabe mencionar, por ejemplo, HBase. Una base de datos orientada a columnas y de tipo clave-valor que fue lanzada en 2006 y modelada a partir de Google BigTable. En 2010, Facebook haría uso de HBase para implementar nuevos servicios de mensajería.
Por otro lado, he usado HBase dentro de proyectos en banca donde los requerimientos del propio proyecto exigían una actualización aleatoria de registros. Para este propósito HBase resulta mucho más eficiente que la típica tabla Hive en formato parquet sobre HDFS.
Lenguajes de programación soportados por Spark
Como lenguajes de programación soportados por Spark, tenemos Scala, Python, Java y R. De entre los 4 mencionados, hablaré un poco acerca de Scala ya que además de ser el lenguaje con el cual trabajo, personalmente diría que es el más característico ya que el propio Spark se encuentra escrito principalmente en dicho lenguaje.
Scala es un lenguaje de programación multiparadigma. Soporta características tanto de programación orientada a objetos como programación funcional, por tanto, podemos quedarnos con lo mejor de entre estos dos mundos para nuestras aplicaciones. Como principales características de la programación funcional tenemos las siguientes:
- Funciones de orden superior.
- Funciones puras.
- Evaluación no estricta.
- Uso de recursividad.
De entre estas cuatro, destacaría el uso de funciones puras (funciones que para una misma entrada siempre dará una misma salida), que proporcionará a nuestro código una limpieza superior al mejorar el testeo del código. Por último, si hablamos del estado del arte del dato en su proyección de futuro, ya se está dando el salto de on-premise a cloud. En la opinión del autor de “Estado del arte del dato” es que tendremos arquitecturas híbridas con claras tendencias hacía microsistemas y serverless bajo demanda.