Spark (Parte 1)

Spark y RMarkdown han sido mis novatadas de mi nueva responsabilidad en el Instituto, he instalado y desinstalado R y software adyacente en más de una veintena de ocasiones.

En el caso de Spark considero que el principal problema es lo inestable de la red del trabajo, y cuando estaba en casa ocurrió un detalle con las famosas VPNs que se están usando durante esta pandemia.

Bien, pero ¿Qué es Spark?. Mis compañeros han investigado y conseguido bibliografía y aquí compartiré parte de esta.

El libro se llama "Mastering with R" es un libro gratuito digitalmente y se puede comprar en formato físico también. Los autores son Javier Luraschi, Kevin Kuo y Edgar Ruiz.

En la vida de profesionistas, estudiantes y docentes tenemos muchas cosas que leer, y a veces pasamos por alto secciones de libros que tienen datos interesantes.

Uno de estos ejemplos es la introducción del libro, donde menciona como los humanos hemos generado información desde que los sumerios inventaron la escritura en el año 3000 a.C.

Varios autores han llamado a estos tiempos como la "era de la información", y se menciona como un matemático George Stibitz en 1942 redefinió dos términos en lo tocante a la información, clasificándola en digital como estos bits que están leyendo ustedes y analógica como la información impresa o manuscrita.

Citando el libro referente al futuro de la información nos dice: "Un reporte del Banco Mundial sobre desarrollo digital nos da una estimación de información análoga y digital almacenada en las décadas pasadas. Este reporte muestra que la información digital ha sobrepasado a la información analógica que son aproximadamente 10 millones de unidades de almacenamiento en la actualidad. Sin embargo, el hallazgo más relevante de esta estimación es la huella de información digital esta creciendo exponencialmente" (Luraschi et al, 2020)

A continuación un gráfico donde se compara la información digital versus la información analógica.



Debido a este escenario que se ha presentado, se esta presentando y seguirá presentando según las tendencias, se han unido esfuerzos para buscar herramientas para analizar estás grandes cantidades de información.

"Los motores de búsqueda no están habilitados para almacenar toda la información de la página web requerida para dar soporte a las búsquedas web en una sola computadora. Esto significaba que tenían que dividir la información en varios archivos y almacenarlos en muchas máquinas. Este enfoque se conoció como el sistema de archivos de Google y se presentó en un artículo de investigación publicado en 2003 por Google." (Luraschi et al, 2020).

Antes de definir lo que es Spark, comentaremos lo que es Hadoop.

Google nuevamente como líder tecnológico de los últimos años, un año después de presentar el "Sistema de Archivos de Google", presentó otro paper que versaba sobre las búsquedas de información en este sistema de archivos, lo que dio origen al esquema llamado MapReduce.

Estás dos palabras-verbos se describen en el libro de esta forma "La operación de <<mapear>> proporciona una forma arbitraria de transformar cada archivo en un nuevo archivo, mientras que la operación de <<reducir>> combina dos archivos. Ambas operaciones requieren un código de computadora personalizado, pero el framework MapReduce se encarga de ejecutarlas automáticamente en muchas computadoras a la vez. Estas dos operaciones son suficientes para procesar todos los datos disponibles en la web, al mismo tiempo que brindan suficiente flexibilidad para extraer información significativa de ellos."  (Luraschi et al, 2020)

Citando al Doctor Oscar Flores nos decía que en las facultades nos ensañaban cosas muy complejas a las que se presentan en la mayoría de las veces en la  vida real, para muestra el ejemplo de esto que plantea el esquema MapReduce

El problema consiste es que queremos hacer un conteo de palabras que existen en n archivos que se encuentran en la red de redes (el texto habla más adelante en que este ejemplo sencillo nos pudiera llevar a la aplicación real de cuantas veces citan nuestro sitio web en diferentes páginas web de toda la internet para saber el grado de alcance que tiene nuestro sitio).

"La operación de <<mapear>> divide cada palabra en el archivo original y genera un nuevo archivo de conteo de palabras con un mapeo de palabras y conteos. La operación de <<reducir>> puede definirse para tomar dos archivos de conteo de palabras y combinarlos agregando los totales de cada palabra; este último archivo contendrá una lista de recuentos de palabras en todos los archivos originales" (Luraschi et al, 2020)

El entendimiento se ilumina con una representación gráfica.


Nuestro buen profesor Humberto Armando nos hubiera puesto un ejercicio de estos para resolverlo en GW Basic. :)

Estos trabajos fueron retomados por equipo de Yahoo!, implementando el Sistema de Archivos de Google y el esquema MapReduce con un único proyecto de "open source" y en 2006 nace el proyecto Hadoop con el Sistema de Archivos de Google y el esquema MapReduce implementado como el Sistema de Archivos Distribuidos Hadoop  (HDFS - Hadoop Distributed File System por sus siglas en inglés).

"El proyecto Hadoop hizo que la computación distribuida basada en archivos fuera accesible para una gama más amplia de usuarios y organizaciones, haciendo que MapReduce fuera útil más allá del procesamiento de datos web." (Luraschi et al, 2020).

Los avances y mejoras como bien saben no paran y si bien Hadoop proveía soporte para ejecutar las operaciones de MapReduce sobre el sistema de archivos distribuido, sin embargo era necesario que las operaciones requeridas para MapReduce se escribiera el código cada vez que se ejecutaba el análisis de datos.

Esta ocasión entra a escena otro gigante de las IT Facebook en 2008 con su proyecto Hive que permite que nuestro viejo conocido el lenguaje estructurado para consultas (SQL - Structured Query language por sus siglas en inglés) sea utilizado y de soporte al proyecto Hadoop.

"Esto significó que ahora el análisis de datos se podía realizar a gran escala sin la necesidad de escribir código para cada operación de MapReduce; en su lugar, se pueden escribir declaraciones de análisis de datos genéricos en SQL, que son mucho más fáciles de entender y escribir."  (Luraschi et al, 2020).

Y bien, muchas se preguntaran a la altura de este artículo ¿Qué hay de Spark?

Pues bien todo se mejora y difícilmente se espera a que nos subamos al "tren bala del conocimiento" es por ello que la Fundación Apache crea en 2009 "Apache Spark" el cual comenzó como un proyecto de investigación de UC Berkeley's AMPLab (la universidad que citó el Doctor Adolfo Guzmán Arenas donde mencionó que "el alumno más pelón tiene trenzas") con el objetivo de mejorar MapReduce.

"Específicamente, Spark proporcionó un conjunto de verbos más amplio más allá de MapReduce para facilitar la optimización del código que se ejecuta en varias máquinas. Spark también cargó datos en la memoria, lo que hizo que las operaciones fueran mucho más rápidas que el almacenamiento en disco de Hadoop. Uno de los primeros resultados mostró que ejecutar la regresión logística, una técnica de modelado de datos, arrojó que Spark se ejecutara 10 veces más rápido que Hadoop al hacer uso de conjuntos de datos en memoria" (Luraschi et al, 2020).


Hasta aquí esta primera parte de lo que es Spark, continuaré con una segunda parte relatando más ventajas de este proyecto. Seguimos leyendo y compartiendo.

Miguel Araujo.

Javier Luraschi, Kevin Kuo, Edgar Ruiz. (2020). Mastering Spark with R. United States of America: O'Really Media Inc.




Comentarios

Entradas populares de este blog

Librería de REDATAM para R

Conectar bases de datos Oracle con R vía JDBC

Red 7 Admin