Conceptos Importantes de Big Data

Freddy Abad L.

--

Este artículo es complementario de BIG DATA — Construcción de un Clúster Multinodo en Apache Spark&Hadoop, Pyspark, Flask, AngularJS.

A continuación detallo de manera sencilla los conceptos referentes a la rama del Big Data. Disfruta de su lectura.

Big Data

Es un concepto que comúnmente se lo relaciona al tamaño de la información que es almacenada en algún tipo de base de datos. A pesar de esto, existen otros aspectos importantes, tal es el caso de las 5 Vs de Big Data: volumen, velocidad, variedad, valor, veracidad [2]. El volumen se refiere a la cantidad de información que existe hoy en día. Como menciona [2], elaboran una comparación acerca de la diferencia que existe entre las diferentes medidas de información, por ejemplo, el libro War and Peace de 1296 páginas impresas sería equivalente a 2 megas de información, lo que significa que 1 Zettabyte equivale a 5x10e4 copias del mismo libro. Así la velocidad es la medida que detalla que tan rápido se generan los datos, por segundo, minuto, horas, días. La variedad refiere a los diversos formatos de tipos de datos que existen, estos pueden ser texto, imágenes, audio, videos, etc. Además el valor mide la importancia que generan los datos dentro de los procesos para convertirlos en información. La última característica es la Veracidad, esta mide qué tan confiables son las fuentes de las que se obtienen los datos.

Map-Reduce

Según [3], “es un modelo de programación y una implementación asociada para procesar y generar grandes conjuntos de datos. Los usuarios especifican una función de mapa que procesa un par clave / valor para generar un conjunto de pares clave / valor intermedios, y una función de reducción que fusiona todos los valores intermedios asociados con la misma clave intermedia”. En el mismo artículo se explica el proceso de cálculo de la función, la cual debe tomar un conjunto de pares clave/valor como entrada para producir otro par como salida. La dos funciones principales se describen: Map.- Es una función escrita por el usuario, donde se toma como entrada un par clave/valor y luego se produce un conjunto intermedio de pares clave/valor. Luego se agrupan todos los valores intermedios asociados a una misma llave intermedia para posteriormente enviarlos a la función Reduce. Reduce.- Es una función escrita por el usuario, la cual acepta las llaves intermedias y sus valores intermedios asociados provenientes de la función Map. Luego realiza una mezcla de estos valores para formar un conjunto más pequeño de valores. Comúnmente se produce cero o un valor de salida por invocación de la función Reduce. Los valores intermedios se suministran a la función Reduce por medio de un iterador. De esta forma se pueden manejar listas de valores que son demasiado grandes para almacenarlos en memoria.

Arquitectura Lambda

La Arquitectura Lambda (LA) fue presentada por primera vez en el libro de Nathan Marz [4], el cual era un ingeniero de Big Data para la empresa Twitter en aquel entonces. LA permite la creación de pipelines de datos en tiempo real con lecturas de baja latencia y actualizaciones de alta frecuencia. Esta arquitectura cuenta con 3 capas principales:

● La capa Batch.- crea vistas utilizando un framework orientado a lotes sobre el total de conjunto de datos inmutables.

● La capa Speed.- crea vistas incrementales utilizando un framework basado en el procesamiento de datos nuevos en tiempo real.

● La capa Serving.- proporciona una vista unificada a la cual pueden acceder las aplicaciones para consultar en función de las vistas creadas por la capa Batch y la capa Speed.

LA tiene como objetivo satisfacer las necesidades de un sistema robusto que sea tolerante a fallas, capaz de soportar altas cargas de trabajo, en las cuales se requieren lecturas y actualizaciones de baja latencia.

VPN

Una red privada virtual (VPN), es usada para redireccionar por un túnel seguro el tráfico de internet, utilizando algoritmos de encriptación de datos y un enmascaramiento de la IP, proporcionando privacidad en línea y una protección a ataques potenciales[7].

Logmein hamachi, es una aplicación que permite la configuración de VPNs, esta permite establecer enlaces directos entre computadoras que se encuentran bajo firewalls de NAT, con un mínimo de configuraciones necesarias[8].

Clúster de computadoras

Un clúster de computadoras, definido por [9], es un sistema de procesamiento distribuido o paralelo. Este se encuentra formado por un conjunto de computadores independientes e interconectadas entre sí, pero funcionando como un único y consolidado recurso computacional. Cada uno de los elementos del clúster se lo denomina nodo, siendo estos los que poseen los recursos de procesamiento, RAM, interfaz de red, sistema operativo, entre otros. Generalmente, en los clústeres, existe un nodo, llamado nodo maestro, encargado de controlar, administrar y monitorear todos los recursos del sistema y aplicaciones. Mientras que el resto de nodos encargados del procesamiento se los denomina nodos esclavos.

Apache Hadoop

Según los autores de [10] Hadoop es un framework que tiene por objetivo el desarrollo de aplicaciones que necesiten procesamiento paralelo con MapReduce, lo que permite trabajar con miles de nodos y petabytes de datos. Hadoop analiza de manera rápida y fiable datos tanto estructurados como complejos, siendo de gran utilidad en proyectos que necesiten escalabilidad. La distribución de datos, agiliza la búsqueda ya que se accede a la información de forma paralela. Relacionado a la arquitectura hadoop, posee la siguiente estructura fundamental:(i) Sistema de ficheros: Utiliza HDFS, que es un sistema de ficheros distribuidos. (ii) Hadoop MapReduce: Consta de la planificación de tareas MapReduce, así como de todos los nodos encargados de realizar las mismas. (iii) Hadoop common: Permite la integración de subproyectos de hadoop.

Apache Spark

De acuerdo a [11]: Es una herramienta que tiene como propósito el mejorar la velocidad y el rendimiento en aplicaciones big data. La ventaja que presenta es ofrecer una respuesta rápida a consultas y algoritmos interactivos partiendo de la distribución de procesos a través de la memoria de distintas máquinas. Además de ser un entorno de procesamiento de datos en memoria más veloz y fácil de usar que hadoop.

Spark cuenta con algunos componentes en su ecosistema. El principal es Spark Core, que es el motor encargado de la planificación, distribución y monitorización de las aplicaciones que se encuentran ejecutándose en el cluster. Otros módulos centrales son los siguientes: (i) Spark SQL: da soporte a consulta de datos mediante SQL. (ii)Spark Streaming: permite el procesamiento y análisis de datos en tiempo real.(iii) Mlib: librería utilizada para el aprendizaje automático de Spark.(iv) GraphX: utilizada para el análisis de grafos y (v) SparkR: integra Spark con el lenguaje de programación R [11]. Además cuenta con integraciones a otros lenguajes de programación como Python y Scala.

SPA — Single Page Application

En base a [12] Single Page Application(SPA), está compuesto de HTML, CSS y JavaScript. Se basan en una arquitectura con las siguientes características: (i) Chunking: Consiste en la construcción por partes, cargando fragmentos de HTML y datos JSON. (ii) Controllers: trata sobre separar las vistas de los modelos haciendo uso de patrones como MVVM o MVC.(iii) Templating: se basa en reemplazar el código html por binding en templates html.(iv) Routing: se define como la selección de vistas y navegación, manteniendo las información contenida en la página, sin la necesidad de recargar. (v) Real-Time Communication: utiliza comunicación two-way. (vi) Local Storage: permite el acceso y funcionamiento offline, ya que almacena datos en el navegador.

Notas Finales

Todo el ecosistema que engloba la Big Data es apasionante e inmensamente grande, seguir por esta rama del conocimiento sin duda es una buena decisión. Espero que este artículo complementario te sea de mucha utilidad.

No olvides difundir el conocimiento que adquieres. 👋

Ing. Freddy Abad — CUENCADEV

REFERENCIAS

[1] V. R. Borkar, M. J. Carey, and C. Li, “Big data platforms: What’s next?,” XRDS Crossroads, ACM Mag. Students, vol. 19, no. 1, pp. 44–49, Sep. 2012, doi: 10.1145/2331042.2331057.

[2] M. Zhou, M. Cao, T. Park, and J. H. Pyeon, “Clarifying big data: The concept and its applications,” in ACM International Conference Proceeding Series, Oct. 2015, vol. 20–23-October-2015, pp. 10–13, doi: 10.1145/2837060.2837068.

[3] B. S. J. B. Botelho, “What is Big Data and Why is it Important?,” 2009. https://searchdatamanagement.techtarget.com/definition/big-data (accessed Mar. 01, 2021).

[4] H. Pence, “What is Big Data and Why is it Important?”, Journal of Educational Technology Systems, vol. 43, no. 2, pp. 159–171, 2014. Available: 10.2190/et.43.2.d [Accessed 1 March 2021].

[5] J. Dean and S. Ghemawat, “MapReduce”, Communications of the ACM, vol. 51, no. 1, pp. 107–113, 2008. Available: 10.1145/1327452.1327492.

[6] N. Marz and J. Warren, Big Data. Frechen: MITP, 2016.

[7] NordVPN, “¿Qué es una VPN? .” https://nordvpn.com/es/download/ (accessed Mar. 01, 2021).

[8] “Hamachi — Wikipedia, la enciclopedia libre.” https://es.wikipedia.org/wiki/Hamachi (accessed Mar. 01, 2021).

[9] “¿Qué es un cluster?” http://www.revista.unam.mx/vol.4/num2/art3/cluster.htm#arriba (accessed Mar. 01, 2021).

[10] P. Fin De Carrera, M. Palacios Díaz-Zorita, and N. Fernández García, “Evaluación de la herramienta de código libre Apache Hadoop ,” 2011.

[11] M. G. Mario Macías, Introducción a Apache Spark . 2016.

[12] ITBLOGSOGETI, “Single-Page Applications (SPA).” https://itblogsogeti.com/2014/06/10/single-page-applications-roberto-bermejo-sogeti/ (accessed Mar. 01, 2021).

[13] “Backend para la Arquitectura de Aplicaciones Frontend — IBM Developer.” https://developer.ibm.com/es/depmodels/microservices/patterns/create-backend-for-frontend-application-architecture/ (accessed Mar. 01, 2021).

[14] Rahul, “How to Set Up LogMeIn (Hamachi) VPN on Ubuntu 16.04, CentOS 7.” https://tecadmin.net/set-up-logmein-on-linux/ (accessed Mar. 01, 2021).

[15] João Torres, “How To Set Up a Hadoop 3.2.1 Multi-Node Cluster on Ubuntu 18.04 (2 Nodes) .” https://medium.com/@jootorres_11979/how-to-set-up-a-hadoop-3-2-1-multi-node-cluster-on-ubuntu-18-04-2-nodes-567ca44a3b12 (accessed Mar. 01, 2021).

[16] João Torres, “How to Install and Set Up an Apache Spark Cluster on Hadoop 18.04.” https://medium.com/@jootorres_11979/how-to-install-and-set-up-an-apache-spark-cluster-on-hadoop-18-04-b4d70650ed42 (accessed Mar. 01, 2021).

--

--

No responses yet