Herramientas de Spark
Herramientas de Spark
Universidad de El Salvador
lr03012@ues.edu.sv
Universidad de El Salvador
mv02001@ues.edu.sv
Universidad de El Salvador
og99016@ues.edu.sv
Universidad de El Salvador
rr13009@ues.edu.sv
GRUPO TEÓRICO: 01
GRUPO DE TRABAJO: 09
Actualmente las empresas necesitan respuestas relacionadas con los datos, estamos de
acuerdo que para las empresas ya no es un problema obtener los datos y almacenarlos sino
lo procesos de análisis alrededor de ellos que les proporcionen análisis descriptivos de gran
calidad, búsquedas y capacidades más avanzadas que les permitan predecir el
comportamiento de sus consumidores, mejorar y enfocar sus estrategias de marketing,
aprovisionar sus inventarios en forma óptima, sabiendo que momentos son los apropiados,
por ejemplo, para comprar ciertas cantidades de ciertos productos, mejorar proceso internos
de la empresa implementando metodologías de tipo Machine Learning con el
procesamiento de datos y entrenamiento de modelos neuronales por mencionar algunos.
Con miras a esta incipiente necesidad de poner a disposición de casi cualquier empresa
herramientas de código abierto fueron apareciendo y poco a poco ganándose el respeto de
los científicos de datos, varias herramientas que con más o menos carencias que otras
permiten brindar análisis cuantiosos de datos con presupuestos más adecuados a empresas
medianas o hasta pequeñas, entre estas herramientas destaca por ser una de las más
utilizadas Apache Spark.
Spark, es un ecosistema aún joven que se ha convertido en poco tiempo en una de las
mejores opciones para el manejo y procesamiento de información. Una de las cualidades
más interesantes de Spark y la que lo ha convertido en una de las primeras opciones es su
capacidad de agrupar en una sola herramienta el sistema de analítica pues Spark centraliza
un gran rango de otras herramientas muy útiles en el procesamiento de Big Data y su
facilidad para implementar y manejar infraestructuras complejas como “clusters” arriba de
8000 nodos
OBJETIVOS
General:
Específicos:
Con el constante crecimiento alrededor del mundo de la Big Data y la computación paralela
esta investigación describe precisamente al mayor exponente que más esta suscitando
interés en el mundo como son las Herramientas de Apache Spark y Sistemas de archivos
distribuidos HDFS.
Con el paso del tiempo, el mundo viene cambiando día a día y con ello las tecnologías. Es
por ello que en estos tiempos los seres humanos buscan como mejorar su vida cotidiana.
Desde el más pequeño hasta el más grande necesitan estar informados para tomar una
decisión. El niño que comienza la escuela, el adolescente en la universidad y el adulto en el
trabajo.
Todos necesitan recopilar grandes cantidades de información, la cual al analizarla y
procesarla contribuye en la toma de decisiones.
Se necesitan herramientas para procesarlas y analizar la información y entre las
herramientas más usadas en la actualidad se encuentran las Herramientas Spark la cual
ayuda a procesar los volúmenes de información para la toma de decisiones en las grandes
empresas.
Para comprender mejor el potencial y utilidad que seguirá adquiriendo Apache Spark que
nace en 2009, la investigación proporciona los términos necesarios para entender la
funcionabilidad que brindan sus herramientas y se muestra una implementación de un
Sistemas de Archivos Distribuidos con Hadoop.
RESULTADOS
MARCO TEORICO
Antecedentes:
Con el avance y crecimiento del mundo las empresas y organizaciones se han visto
obligadas a comprender mejor a sus clientes y usuarios, pero debido a que el mundo y las
poblaciones crecen exponencialmente se tienen millones de datos que representan a un
grupo de personas. Es de este hecho donde parte el concepto de Big Data y las muchas
tecnologías que engloban este concepto. Propiamente Big Data significa grandes
volúmenes de datos, y como se tienen estos grandes volúmenes, son necesarias tecnologías
que puedan extraer y transformar estos datos en información útil para las empresas.
Lo que hace que Big Data sea tan útil para muchas empresas es el hecho de que
proporciona respuestas a muchas preguntas que las empresas ni siquiera sabían que tenían.
En otras palabras, proporciona un punto de referencia. Con una cantidad tan grande de
información, los datos pueden ser moldeados o probados de cualquier manera que la
empresa considere adecuada. Al hacerlo, las organizaciones son capaces de identificar los
problemas de una forma más comprensible.
La recopilación de grandes cantidades de datos y la búsqueda de tendencias dentro de los
datos permiten que las empresas se muevan mucho más rápidamente, sin problemas y de
manera eficiente. También les permite eliminar las áreas problemáticas antes de que los
problemas acaben con sus beneficios o su reputación.1
Existen muchas definiciones sobre Big Data, pero los expertos concuerdan en que este
conocimiento se puede definir con cinco “Vs”, porque estos puntos reflejan la importancia
de Big Data.
Volumen: Con la misma palabra “Big” define que son una gran cantidad de datos
que representan retos para las empresas, porque se tratan de millones de datos y
estas deben de contar con la infraestructura necesario para poder superar este reto.
Variedad: Uno de los principales retos es que los orígenes de datos pueden ser muy
distintos y se debe conocer del tema para poder integrar estos y procesarlos, un
ejemplo de estos seria Spark que transforma los orígenes de datos en un RDD donde
se pueden manipular con mayor facilidad
Veracidad: Una gran cantidad de datos no tiene valor si son incorrectos y puede
perjudicar a las organizaciones si se quiere tomar decisiones en base a estos datos.
Por eso es necesario que los datos sean verídicos.
Valor: Se utiliza estas herramientas porque se espera obtener beneficios para las
empresas, por eso estos análisis necesitan generar un valor. 2
Herramientas para poner en práctica lo que es Big Data y para qué sirve en las
empresas
Big Data necesita nuevas herramientas y tecnologías que puedan abarcar la complejidad de
datos no estructurados y en continua expansión. Para ello, las tecnologías tradicionales de
1
Powerdata. (2019). Power Data. Obtenido de https://www.powerdata.es/big-data
2
Emanuele Carisio (2018). MediaCloud. Obtenido de https://blog.mdcloud.es/
base de datos relacionales, no son adecuadas. Además, se necesitan aplicaciones avanzadas
de análisis y visualización, para poder extraer todo el potencial de los datos y explotarlo
para nuestros objetivos de negocio.
A continuación, se mencionarán algunas de las principales herramientas:
Hadoop: Es una estructura de software de código abierto para almacenar datos y ejecutar
aplicaciones en clústeres de hardware comercial. Proporciona almacenamiento masivo para
cualquier tipo de datos, enorme poder de procesamiento y la capacidad de procesar tareas o
trabajos concurrentes virtualmente ilimitados. El procesamiento de datos y aplicaciones
está protegido contra fallos del hardware. Si falla un nodo, los trabajos son redirigidos
automáticamente a otros modos para asegurarse de que no falle el procesamiento
distribuido. Se almacenan múltiples copias de todos los datos de manera automática. 3
Base de datos NoSQL: están diseñadas específicamente para modelos de datos específicos
y tienen esquemas flexibles para crear aplicaciones modernas. Las bases de datos NoSQL
son ampliamente reconocidas porque son fáciles de desarrollar, por su funcionalidad y el
rendimiento a escala. Esta página incluye recursos que lo ayudan a comprender mejor las
bases de datos NoSQL y comenzar a usarlas. Las bases de datos NoSQL utilizan una
variedad de modelos de datos para acceder y administrar datos. Estos tipos de bases de
datos están optimizados específicamente para aplicaciones que requieren grandes
volúmenes de datos, baja latencia y modelos de datos flexibles, lo que se logra mediante la
flexibilización de algunas de las restricciones de coherencia de datos en otras bases de
datos. Ejemplo MongoDB o DynamoDB. 4
3
Sas. (2019). Sas. Obtenido de https://www.sas.com/es_mx/insights/big-data/hadoop.html
4
Amazon Web Services. (2020). AWS. Obtenido de https://aws.amazon.com/es/nosql/
5
Miguel Moraleja Yudego. (2018). ICEMD. Obtenido de https://www.icemd.com/digital-knowledge/articulos/apache-
spark-introduccion-que-es-y-como-funciona/
de AWS. Simplemente debe apuntar AWS Glue a sus datos almacenados en AWS y AWS
Glue encontrará sus datos y almacenará los metadatos asociados (p. ej., esquemas y
definiciones de tablas) en el catálogo de datos de AWS Glue. Una vez catalogados, puede
realizar búsquedas y consultas inmediatamente en sus datos, que están disponibles para
operaciones de ETL. AWS Glue es un servicio sin servidor. No es necesario aprovisionar ni
administrar infraestructura. AWS Glue administra el aprovisionamiento, la configuración y
el escalado de los recursos necesarios para ejecutar sus trabajos de ETL en un entorno
Apache Spark totalmente administrado y escalable. Solo paga por los recursos utilizados
mientras se ejecutan los trabajos. 6
BASES TEORICAS
Apache Spark
Es una tecnología de la computación en clúster de la velocidad del rayo, diseñado para el
cálculo rápido. Está basada en Hadoop MapReduce y se extiende el modelo MapReduce
para utilizar eficientemente para más tipos de cálculos, que incluye consultas interactivas y
procesamiento de flujo. La característica principal de Spark es su clúster de computación en
memoria que aumenta la velocidad de procesamiento de la solicitud.
Spark está diseñado para cubrir una amplia gama de cargas de trabajo, tales como
aplicaciones de lotes, algoritmos iterativos, consultas interactivas y streaming. Aparte de
apoyar todas estas cargas de trabajo en un sistema respectivo, se reduce la carga de gestión
del mantenimiento de herramientas separadas
Evolución de Spark Apache
Spark es una de las sub proyecto de Hadoop desarrollado en 2009 en la Universidad de
Berkeley en laboratorios AMP de Matei Zaharia. Era de código abierto en el año 2010 bajo
una licencia BSD. Fue donada a la fundación del software de Apache en 2013, y ahora
Apache Spark se ha convertido en un proyecto de Apache alto nivel desde febrero del 2014.
7
Poco después de que el proyecto Spark tuviera éxito en laboratorios AMP, se convirtió en
código abierto en 2010 y transferido a la Apache Software Foundation en 2013.
Actualmente está siendo dirigido por Databricks.
Spark ofrece muchas ventajas distintas sobre otras plataformas informáticas distribuidas,
como:
Una plataforma de ejecución más rápida tanto para aprendizaje automático iterativo
como interactivo para el análisis de los datos.
6
Amazon Web Services. (2020). AWS. Obtenido de https://aws.amazon.com/es/glue/
7
Arturo (2018). Github. Obtenido de https://github.com/arturisimo/spark-intro
Stack simples para procesamiento por lotes, consultas SQL, procesamiento de flujo
en tiempo real, procesamiento gráfico y análisis de datos complejos.
Proporciona API de alto nivel para desarrollar una amplia gama de aplicaciones
distribuidas y ocultando las complejidades de la programación distribuida
Soporte ininterrumpido para varias fuentes de datos como RDBMS, HBase,
Cassandra, Parquet, MongoDB, HDFS, Amazon S3, etc. 8
Componentes de Spark
Spark Core: El núcleo de Spark, en cierto modo, es similar al núcleo de un sistema
operativo. Es el motor general de ejecución, que es rápido y tolerante a fallas. Todo el
ecosistema Spark está construido encima de este motor central. Está diseñado
principalmente para hacer la programación de trabajos, distribución de tareas y monitoreo
de trabajos a través de nodos de trabajadores. También es responsable de la gestión de la
memoria, interactuando con varios sistemas de almacenamiento heterogéneos, y varias
otras operaciones. El componente principal del núcleo de Spark es el conjunto de datos
distribuidos resilientes (RDD), que es una colección de elementos inmutable y tolerante a
fallas. Spark puede crear RDD desde una variedad de fuentes de datos como HDFS,
sistemas de archivos locales, Amazon S3, otros RDD, NoSQL almacenes de datos como
Cassandra, etc. Son resistentes en el sentido de que reconstruir automáticamente en caso de
falla. Los RDD se crean mediante transformaciones paralelas diferidas.
Spark SQL: Spark SQL es un componente en la parte superior del núcleo chispa que
introduce una nueva abstracción de datos llamada SchemaRDD, que proporciona soporte
para datos estructurados y semiestructurados.
Spark Streaming: La ventana de procesamiento para los datos empresariales se está
acortando más que nunca. Para abordar los requisitos de procesamiento en tiempo real de la
8
Srinivas Duvvuri. (2016). Spark for Data Science. BIRMINGHAM - MUMBAI: Packt Publishing Ltd.
industria, se diseñó este componente de Spark, que es tolerante a fallas y escalable. Spark
permite el análisis de datos en tiempo real en transmisiones de datos en vivo al admitir
análisis de datos, aprendizaje automático y procesamiento de gráficos en ellos.
Cuatro aspectos principales de la transmisión de chispas
Recuperación rápida de fallas y rezagados
Mejor equilibrio de carga y uso de recursos.
Combinación de transmisión de datos con conjuntos de datos estáticos y consultas
interactivas.
Integración nativa con bibliotecas de procesamiento avanzadas (SQL, aprendizaje
automático, procesamiento de gráficos). 9
9
Databricks. (2020). Apache Spark. Obtenido de https://databricks.com/glossary/what-is-spark-streaming
10
Databricks. (2020). Apache Spark. Obtenido de https://databricks.com/glossary/what-is-machine-learning-
library
GraphX viene con una variedad de algoritmos gráficos y hace que sea fácil escribir el suyo
usando una API simple que puede mezclar gráficos y RDD. 11
Sistema de Archivo Distribuidos con Hadoop
Apache Hadoop es un framework que permite el procesamiento distribuido de grandes
conjuntos de datos a través de un conjunto de ordenadores utilizando modelos básicos de
programación.
Hadoop está diseñado para escalar de un servidor individual a miles de máquinas,
ofreciendo computación y almacenamiento local. Por otro lado, en lugar de depender del
hardware para ofrecer HA, Hadoop detecta y controla los errores en la capa de aplicación.
12
Arquitectura
La arquitectura, en modalidad cluster que vamos a desplegar es la siguiente:
11
Databricks. (2020). Apache Spark. Obtenido de https://databricks.com/session/graphx-graph-analytics-in-
spark
12
Hadoop. (2019). Apache Hadoop. Obtenido de https://hadoop.apache.org/docs/stable/
o hd-slave3
Paso 1: Incluimos el nombre de todos los nodos que conforman el cluster en el fichero
/etc/hosts:
192.168.40.4 hd-master
192.168.40.5 hd-slave1
192.168.40.6 hd-slave2
192.168.40.7 hd-slave3
hadoop@hd-master:~#ssh-keygen -t rsa
hadoop@hd-master:~#ssh-copy-id hadoop@hd-slave1
hadoop@hd-master:~#ssh hadoop@hd-slave1
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
mv hadoop-2.6.0 /usr/local/hadoop
<property>
<name>fs.defaultFS</name>
<value>hdfs://hd-master:9000</value>
<description>NameNode URI</description>
</property>
</configuration>
Editamos /usr/local/hadoop/etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
</configuration>
Editamos /usr/local/hadoop/etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>Execution framework</description>
</property>
</configuration>
Editamos /usr/local/hadoop/etc/hadoop/slaves:
hd-slave1
hd-slave2
hd-slave3
Paso 8: Creamos el directorio para almacenar los datos HDFS del NameNode:
root@hd-master:~# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
Paso 10: Creamos el directorio para almacenar los datos HDFS den DataNode:
root@hd-slave[1-3]:~# mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
Paso 11: Cambiamos configuración del NameNode por DataNode en todos los Slaves
Nodes:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
#Stop Services
#Start Services
#Stop Services
Para obtener la información sobre el cluster y todas las aplicaciones, podemos acceder
Resource Manager a través del puerto 8088 del Nodo Master: 13
http://hd-master:8088
CONCLUSIONES
Hoy en día el análisis de Big Data es indispensable para las empresas y organizaciones
porque sin este tipo de herramientas es casi imposible conocer a su publico objetivo e
identificar nuevas oportunidades de crecimiento y ganancia. Por eso este tipo de
tecnologías se han vuelto muy populares y ocupadas, pero como en todas las
organizaciones es necesario buscar un equilibrio entre los gastos incurridos en montar una
infraestructura para procesar datos y la información que será de utilidad. En la busca de este
equilibrio nacen tecnologías como Hadoop, que permite al usuario distribuir los datos,
teniendo la capacidad de que nuestros datos estén corriendo en paralelo, en nodos
13
Juan Alonso Ramos. (2014). Autentia. Obtenido de
https://www.adictosaltrabajo.com/2014/02/25/hadoop-first-steps/
independientes que forman un cluster. Este tipo de infraestructura es bastante económica y
sobre todo es bastante veloz y eficiente.
Otra característica destacable de Hadoop y Spark es una tolerancia a fallos, porque usa la
alta disponibilidad y además usa la replicación; los datos suelen estar replicados con
replicación 3 en el HDFS que es el sistema de almacenamiento de Hadoop, de forma que, si
un nodo cae, tendremos los datos en el resto de los nodos configurados. Además, que son
un Open Source, un proyecto de código abierto.
REFERENCIAS
Srinivas Duvvuri. (2016). Spark for Data Science. BIRMINGHAM - MUMBAI: Packt
Publishing Ltd.
DataBricks. (2020). Apache Spark. Obtenido de https://databricks.com/spark/about.
Holden Karau, Andy Konwinski, Patrick Wendell & Matei Zaharia. (2015). Learning
Spark. United States of America: O’Reilly.
Hadoop. (2019). Apache Hadoop. Obtenido de https://hadoop.apache.org/docs/stable/
Spark. (2019). Apache Spark. Obtenido de https://spark.apache.org/docs/latest/