Está en la página 1de 16

Apache Spark

Apache Spark es un framework de programación para procesamiento de datos


distribuidos diseñado para ser rápido y de propósito general. Como su propio nombre indica, ha
sido desarrollada en el marco del proyecto Apache, lo que garantiza su licencia Open Source.

Apache Spark: Su relación con Hadoop


Una de las grandes preguntas sobre Spark es su relación con Hadoop. ¿Se trata de otra tecnología
competencia del famoso framework? En realidad, Spark es la evolución natural de Hadoop, cuya
funcionalidad es muy rígida y limitada en el sentido de que no aprovecha al máximo las
capacidades del procesamiento distribuido.

Algunas de las evoluciones que supone Spark frente a su predecesor son el procesamiento en
memoria que disminuye las operaciones de lectura/escritura, la posibilidad de análisis interactivo
con SQL (similar a Hive en cierto modo) y la facilidad para interactuar con múltiples sistemas de
almacenamiento persistente.

Características principales
Sus principales características son las siguientes:

 Está integrado con Apache Hadoop.


 Trabaja en memoria, con lo que se consigue mucha mayor velocidad de procesamiento.
 También permite trabajar en disco. De esta manera si por ejemplo tenemos un fichero
muy grande o una cantidad de información que no cabe en memoria, la herramienta
permite almacenar parte en disco, lo que hace perder velocidad. Esto hace que tengamos
que intentar encontrar el equilibrio entre lo que se almacena en memoria y lo que se
almacena en disco, para tener una buena velocidad y para que el coste no sea demasiado
elevado, ya que la memoria siempre es bastante más cara que el disco.
 Nos proporciona API para Java, Scala, Python y R.
 Permite el procesamiento en tiempo real, con un módulo llamado Spark Streaming, que
combinado con Spark SQL nos va a permitir el procesamiento en tiempo real de los datos.
Conforme vayamos inyectando los datos podemos ir transformándolos y volcándolos a un
resultado final.
 Resilient Distributed Dataset (RDD): Usa la evaluación perezosa, lo que significa es que
todas las transformaciones que vamos realizando sobre los RDD, no se resuelven, si no
que se van almacenando en un grafo acíclico dirigido (DAG), y cuando ejecutamos una
acción, es decir, cuando la herramienta no tenga más opción que ejecutar todas las
transformaciones, será cuando se ejecuten. Esto es un arma de doble filo, ya que tiene
una ventaja y un inconveniente. La ventaja es que se gana velocidad al no ir realizando las
transformaciones continuamente, sino solo cuando es necesario. El inconveniente es que
si alguna transformación eleva algún tipo de excepción, la misma no se va a detectar hasta
que no se ejecute la acción, por lo que es más difícil de debuggear o programar.

Componentes
Los componentes principales que conforman el framework son estos:

 Spark Core: Es la base o conjunto de librerías donde se apoya el resto de módulos. Es el


núcleo del framework.
 Spark SQL: Es el módulo para el procesamiento de datos estructurados y semi-estructurados.
Con este módulo vamos a poder transformar y realizar operaciones sobre los RDD o los
dataframes. Está pensado exclusivamente para el tratamiento de los datos.
 Spark Streaming: Es el que permite la ingesta de datos en tiempo real. Si tenemos una
fuente, por ejemplo Kafka o Twitter, con este módulo podemos ingestar los datos de esa
fuente y volcarlos a un destino. Entre la ingesta de datos y su volcado posterior, podemos
tener una serie de transformaciones.
 Spark MLLib: Es una librería muy completa que contiene numerosos algoritmos de Machine
Learning, tanto de clusterización, clasificación, regresión, etc. Nos permite, de una forma
amigable, poder utilizar algoritmos de Machine Learning.
 Spark Graph: Permite el procesamiento de grafos (DAG). No permite pintar grafos, sino que
permite crear operaciones con grafos, con sus nodos y aristas, e ir realizando operaciones.

Las principales ventajas de utilizar Spark en Big Data:


-Velocidad: su diseño se ha enfocado en optimizar el rendimiento en el procesamiento de
datos a gran escala, aprovechando conceptos como el procesamiento en memoria y otras
optimizaciones. Es una 100 veces más rápido que Hadoop
-Facilidad de uso: dispone de APIs sencillas de utilizar para trabajar con grandes conjuntos
de datos. Tiene más de 100 operadores para transformarlos y manipular datos
semiestructurados.
-Motor unificado: viene empaquetado con bibliotecas de nivel superior, que incluyen
soporte para consultas SQL, transmisión de datos, aprendizaje automático y
procesamiento de gráficos. Estas bibliotecas estándar aumentan la productividad del
desarrollador y se pueden combinar sin problemas para crear flujos de trabajo complejos.

Ejemplos de uso
ATP: utiliza Apache Spark para el desarrollo y ejecución de modelos predictivos y
algoritmos de aprendizaje automático para mejorar la relevancia de las campañas de
marketing programático.
PanTera: herramienta para explorar grandes conjuntos de datos. Emplea Spark para crear
diagramas de dispersión geográfica de miles a millones de puntos.
ElasticSearch
un gestor de datos y motor de búsqueda basado en Lucene. Se trata de un sistema
distribuido que permite trabajar con un gran volumen de datos de cualquier tipo, con una
interfaz web RESTful de búsqueda así como clientes para distintos lenguajes de
programación, y un sistema de analítica que permite realizar consultas en tiempo real.
Elasticsearch está publicado como open source (código abierto) bajo licencia Apache y
desarrollado en Java. Se trata de una tecnología que ayuda a optimizar la arquitectura de
datos de nuestro negocio.

También es conocido bajo el acrónimo ELK, un conjunto de tres tecnologías de código


abierto:

 Elasticsearch. Motor de búsqueda y análisis.

 Logstash. Canal de procesamiento de la información que ingiere datos de múltiples


fuentes simultáneamente, las transforma y luego las envía a un «stash» como
Elasticsearch.
 Kibana. Permite la visualización de datos a través de tablas y gráficos.

ElasticSearch utiliza un lenguaje denominado DSL para realizar consultas. Una consulta
examina uno o varios valores objetivos y escoge uno de los elementos en los resultados de
acuerdo con la concordancia del enfoque de la consulta.
Los operadores de consulta permiten optimizar consultas simples o complejas que
regularmente arrojan resultados en milisegundos. El esquema de diseño de ElasticSearch
es mucho más simple y ágil en comparación con una base de datos relacional
convencional debido a que no tiene las restricciones de esquema, tablas, columnas y filas.

Tipos de consultas
Una consulta comienza con la palabra "query" seguida de unas condiciones y filtros
dentro, en la forma de un objeto JSON. Existen distintos tipos de consultas que podemos
identificar, por ejemplo:

Match all query

La consulta más básica que se puede hacer. Devuelve todos los objetos que se encuentren
indexados:

"query":{
"match_all":{}

Match query

Este tipo de consulta se utiliza para realizar una búsqueda donde se busca igualar
determinados valores de un término o una frase. Entonces, si buscamos, por ejemplo
dentro de nuestra base de datos, todos los objetos cuyo atributo color es verde, tomaría
la siguiente forma:

"query":{

"match" : {

"color":"verde"

Multi match query

Muy similar a la consulta descrita anteriormente, pero en lugar de buscar la coincidencia


con un valor solo, chequea con varios campos:

"query":{

"multi_match" : {

"query": "montevideo",

"fields": [ "ciudad", "departamento" ]


}

Term queries

Este tipo de consultas se utilizan cuando se trabaja con datos como números o fechas,
para buscar el valor de un término concreto:

"query":{

"term":{"animal":"perro"}

Range query

Otro tipo de consultas son aquellas que buscan por el rango de determinado atributo. Se
utilizan distintos operadores ("gte": mayor ó igual a determinado valor, "gt": mayor a
determinado valor, "lte": menor ó igual , "lt": menor):

"query":{

"range":{

"rating":{

"gte":4

Ventajas

Qué ventajas ofrece Elasticsearch


 Sistema distribuido. Los datos se almacenan en diferentes sistemas que colaboran
entre sí y nos muestran los resultados que les demandamos en cada momento en
una sola petición.

 Multitenencia de datos. Nos permite operar sobre distintos índices al mismo


tiempo y así potenciar nuestras búsquedas.

 Acceso en tiempo real. Esta tecnología nos permite acceder de forma instantánea
a los datos.

 Búsqueda de texto completo. Usar Elasticsearch hace que implementen una gran
cantidad de funciones, tales como la división personalizada de texto en palabras,
derivación personalizada, búsqueda personalizada, etc.

 Autocompletado y búsqueda instantánea. Buscar mientras el usuario escribe.


Pueden ser simples sugerencias de búsquedas tratando de predecirlas en base al
historial de búsqueda, o simplemente haciendo una búsqueda completamente
nueva para cada palabra clave. Esta opción funciona como ocurre en el buscador
Google, que escribimos una palabra y nos sugiere otras opciones de búsqueda.
Además, al usar Elasticsearch nos permite encontrar lo que estamos buscando
aunque tenga un error ortográfico.

 Consultas complejas y afinación. Elasticsearch tiene una poderosa DSL basada en


JSON, que permite a los equipos de desarrollo construir consultas complejas y
afinarlas para recibir los resultados más precisos de una búsqueda. También
proporciona una forma de clasificar y agrupar los resultados.

 Ahorro tiempo de análisis y mayor velocidad. Elasticsearch puede ejecutar


consultas complejas extremadamente rápido. También almacena casi todas las
consultas estructuradas comúnmente utilizadas como filtro para el conjunto de
resultados y las ejecuta solo una vez. Para cada otra solicitud que contiene un filtro
en caché, comprueba el resultado de la caché. Esto ahorra el tiempo de análisis y
ejecución de la consulta mejorando la velocidad.

 Elasticsearch está orientado a documentos. Elasticsearch no utiliza esquemas,


acepta documentos JSON e intenta detectar la estructura de datos, indexar los
datos y hacer que se pueda buscar.

 Uso de facetas. Una búsqueda facetada es más sólida que una búsqueda de texto
típica, lo que permite a los usuarios aplicar una cantidad de filtros a la información
e incluso tener un sistema de clasificación basado en los datos. Esto permite una
mejor organización de los resultados de búsqueda y permite a los usuarios
determinar mejor qué información necesitan examinar.
 Escalabilidad horizontal y registro de nodos. Elasticsearch permite escalar
horizontalmente, por lo que, gracias a su diseño, permite extender los recursos y
equilibrar la carga entre los nodos de un cluster. Además, registra cualquier
cambio realizado en registros de transacciones en múltiples nodos en el clúster
para minimizar la posibilidad de pérdida de datos. Por otro lado, estos cluster
pueden detectar aquellos nodos que fallan y reorganizarlos para que los datos
siempre sean accesibles.

Desventajas

Como todo, ElasticSearch posee algunas desventajas:

 Sólo soporta como tipos de respuesta JSON, lo que lo limita al no soportar otros
lenguajes, como CSV ó XML.
 Algunas situaciones pueden generar casos de split-brain

Apache Storm
Apache Storm es un sistema que sirve para recuperar streams de datos en tiempo real
desde múltiples fuentes de manera distribuida, tolerante a fallos y en alta disponibilidad.
Storm está principalmente pensado para trabajar con datos que deben ser analizados en
tiempo real, por ejemplo datos de sensores que se emiten con una alta frecuencia o datos
que provengan de las redes sociales donde a veces es importante saber qué se está
compartiendo en este momento.
Se compone de dos partes principalmente. La primera es la que se denomina Spout y es la
encargada de recoger el flujo de datos de entrada. La segunda se denomina Bolt y es la
encargada del procesado o transformación de los datos.
En la documentación oficial representan los Spouts con grifos simulando la entrada de un
stream de datos al sistema y a los Bolts con un rayo que es donde se realizan las acciones
pertinentes con los datos de entrada.
Como Funciona Apache Storm

Storm cuenta con tres conjuntos de nodos:

 Nodo Nimbus (nodo principal): carga los cálculos para la ejecución, distribuye el
código en el clúster, lanza trabajadores en todo el clúster y monitorea el cálculo y
reasigna trabajadores según sea necesario

 Nodos ZooKeeper: coordina el clúster Storm


 Nodos de supervisor: se comunica con Nimbus a través de Zookeeper, inicia y
detiene a los trabajadores según las señales de Nimbus.
Modos de funcionamiento

Storm puede funcionar en dos modos: local y cluster.

 El modo local: es muy útil para probar el código desarrollado en la topología de


Storm ya que corre en una única JVM por lo que podemos hacer pruebas
integradas de nuestro sistema, depurar código, etc. y así poder ajustar los
parámetros de configuración. En este modo Storm simula con threads los distintos
nodos del cluster.
 El modo cluster: como su propio nombre indica, ejecuta la topología en cluster, es
decir distribuye y ejecuta nuestro código en las distintas máquinas. Es el
considerado ‘modo producción’.

Topología
Una topología en Storm es similar a un grafo. Cada nodo se encarga de procesar una
determinada información y le pasa el testigo al siguiente nodo. Esto se configura
previamente en la topología. La topología se compone de Spouts y Bolts.

Spout
El componente Spout de Storm es el encargado de la ingesta de los datos en el sistema,
por ejemplo si tenemos que leer un fichero de texto y contar las palabras, el componente
que recibiría los streams del fichero sería el Spout.

Bolt
El Bolt es encargado de consumir las tuplas que emite el Spout, las procesa en función de
lo que dicte el algoritmo que programamos sobre los streams de entrada y puede
emitirlos a otro Bolt. Es recomendable que cada Bolt realice una única tarea. Si
necesitamos realizar varios cálculos o transformaciones sobre los datos que le llegan al
Bolt, lo mejor es que se dividan en distintos Bolt para mejorar la eficiencia y la
escalabilidad.

Ventajas
Las ventajas que presenta Apache Storm son:

 Rápido: evaluado como procesamiento de un millón de mensajes de 100 bytes por


segundo por nodo

 Escalable: con cálculos paralelos que se ejecutan en un conjunto de máquinas

 Tolerante a fallas: cuando los trabajadores mueren, Storm los reinicia


automáticamente. Si un nodo muere, el trabajador se reiniciará en otro nodo.

 Confiable: garantiza que cada unidad de datos se procesará al menos una vez. Los
mensajes solo se reproducen cuando hay fallas.
 Fácil de operar: las configuraciones estándar son las idóneas para la producción
incluso desde el primer día.

R STUDIO
Para hablar de R STUDIO primero debemos empezar por R.
R es un software que fue diseñado para hacer análisis estadísticos y gráficas, y es software
libre. Así, se puede descargar y utilizar sin problemas

R ha ganado popularidad porque la curva de aprendizaje es relativamente sencilla


comparado con otros lenguajes de programación y permite maquetar o hacer prototipos
de modelos muy rápido y con resultados muy buenos.

Otra ventaja es que es más o menos sencillo compartir código. Por lo tanto, científicos en
cualquier parte del mundo pueden contribuir con sus investigaciones.

La consola de R
En R, se utiliza una línea de comandos para comunicarnos con el programa.
En la consola, podemos utilizar R como calculadora y hacer operaciones como sumar,
restar o dividir. Además, R incluye funciones matemáticas como logaritmos,
trigonométricas. También, podemos mostrar texto en pantalla como el tradicional “hola
mundo” de programación.

La interfaz de RStudio

Ahora, por un lado, R es el lenguaje de programación, como el que hace las cuentas. Por
otro lado, R Studio es un IDE, eso significa que RStudio es un programa para manejar R y
utilizarlo de manera más cómoda en algunos aspectos.

Por qué utilizar R

Hay muchos motivos por los que utilizar R, de los que destacan los siguientes:

 Es un lenguaje bastante adecuado para la estadística, ya que permite manipular los


datos rápidamente y de forma precisa.
 Se puede automatizar fácilmente, gracias a la creación de scripts que automatizan
procesos, por ejemplo, leer datos o hacer operaciones con los datos, y hacerlo
siempre de forma automática.

 Puede leer prácticamente cualquier tipo de datos.

 Hasta cierto punto, es compatible con grandes conjuntos de datos.

 Es gratuito.

 Tiene capacidades avanzadas de gráficos, por lo que nos permite realizar gráficos y
dashboards de forma que podamos presentar los resultados de forma vistosa.

 Se ejecuta en muchas plataformas.


 Mejora su funcionalidad constantemente, ya que tiene detrás una comunidad
bastante grande que crea nuevas funciones, corrige bugs y, sobre todo, documenta
muy bien todo lo que va haciendo, de forma que la utilización de todas las
funciones y métodos sea fácil a nivel de usuario.

Porque utilizar RStudio

Entre otras cosas encontramos que RStudio, es la IDE más utilizada de R:

 Muestra todo en una ventana

 Permite abrir varios scripts a la vez

 Permite ejecutar código desde script o partes de código con sólo marcarlo.

 Presenta resaltado y completado de sintaxis

 Muestra el workspace

 Muestra el historial

 RStudio provee herramientas para que las investigaciones sean reproducibles


provee markdown y knitr para combinar texto, y fragmentos de código
(programación literaria).

 Muestra los objetos del workspace

 Permite el manejo de proyectos con soporte para Git y Subversión


 Integra la ayuda
 Integra la gestión de librerías además entre ellas se integra con Python y SQL.

Partes de R STUDIO

Menú Superior

Ventana de Consola
En esta ventana se ejecuta todo en R y también se puede ingresar directamente ordenes
de R; se caracteriza por tener una entrada con el signo > y el prompt que se encuentra
parpadeando.
Ventana de objetos e historial de R
En la pestaña “Environment”, se presenta todos los objetos que vayamos creando cuando
utilizamos RStudio, la pestaña “History”, se almacena todos los comandos que se han ido
ejecutando y “Connections” si es que se ha ulitizado RStudio conectado a una base de
datos.

Ventana de Archivos, Gráficos, Paquetes, Ayuda y Visor (de aplicaciones WEB)


La pestaña “Files” muestra los archivos como un explorador de Windows, “Plots” muestra
los gráficos que se vayan generando en R, la pestaña “Packages” muestra inicialmente los
paquetes básicos que se instalan junto a R y RStudio, la pestaña “Help” muestra los html
de alguna ayuda o comando o paquete de R, y la pestaña “Visor” que muestra las
aplicaciones WEB que se van a utilizar por ejemplo en una aplicación web interactiva
como shiny.
Ventana del editor de scripts – visor de data

Generalmente no se muestra al iniciar RStudio, Se activa al hacer CTRL+Shift+N.


En las pestañas de “scripts” se escriben o importan los comandos para armar modelos o
importar data, escribir funciones en lenguaje de R y sus paquetes, adicionalmente se
puede activar el visor de data de los objetos creados.
Esta última es particularmente útil, porque posibilita documentar el desarrollo de un
proyecto, ejecutar un bloque de órdenes o una orden en particular; aquí se ingresan los
scripts y se visualizan los objetos con data.
Bibliografia

BSG Institute. (s. f.). Apache Spark para Procesamiento en Big Data.

https://bsginstitute.com/bs-campus/blog/Apache-Spark-para-Procesamiento-en-

Big-Data-124

https://expertoenbigdata.com/schema/person/experto-en-big-data/#author. (2018, 6

marzo). ¿Qué es Apache Storm? Conoce todos los detalles. Experto en Big Data.

https://expertoenbigdata.com/apache-storm/

I. (2018, 3 octubre). Usar Elasticsearch, ¿qué ventajas ofrece esta tecnología? ITELLIGENT

INFORMATION TECHNOLOGIES. https://itelligent.es/es/ventajas-elasticsearch/

Maydana, E. (2020, 28 septiembre). 3 Características e instalación de RStudio. EDU

Asesores. https://eduasesores.com/r-y-rstudio/primeros-pasos-en-rstudio/
Mesa, A. R. (2018, 2 julio). Qué es Apache Spark. OpenWebinars.net.

https://openwebinars.net/blog/que-es-apache-spark/

Rafa. (2020, 25 febrero). Qué es R y RStudio? Rafa González Gouveia.

https://gonzalezgouveia.com/que-es-r-y-rstudio/

Ramos, J. A. (2014, 22 septiembre). Introducción a Apache Storm. Adictos al trabajo.

https://www.adictosaltrabajo.com/2014/09/22/introduccion-storm/

Unir, V. (2020, 7 mayo). Apache Spark en big data: qué es y para que se emplea. UNIR.

https://www.unir.net/ingenieria/revista/apache-spark-big-data/

Zambrano, R. (2020, 7 abril). Qué es R y por qué utilizarlo. OpenWebinars.net.

https://openwebinars.net/blog/que-es-r-y-por-que-utilizarlo/

También podría gustarte