Batch Processing PDF
Batch Processing PDF
Introducción
Batch processing (Sistema por lotes en español) hace referencia a la ejecución de un programa sin
Normalmente se usa para realizar tareas que son repetitivas sobre grandes lotes de información.
Es normal que estos programas se ejecuten a través de scripts en los que dentro suele estar
indicado que acciones van a ser ejecutadas por dicho script y, normalmente, los recursos que va a
om
necesitar para llevarlo a cabo.
c
u.
at
al
r tu
Existen varios programas que funcionan usando batch processing, por ejemplo:
vi
la
Gnuplot
au
EXEC II
[Link]
GNU Octave
Generalmente, casi en todos los casos, un programa podría ser ejecutado en modo batch, siempre
que se pueda especificar qué pasos existen para su ejecución mediante un script.
No se debe confundir el procesamiento por lotes con los archivos que tengan extensión .bat de los
[Link]
1 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
sistemas batch.
Los archivos .bat se ejecutan de manera secuencial y el usuario no puede hacer nada
Por otro lado tenemos los sistemas por batch que son una forma de hacer el proceso de la
información en lenguaje llano. Estos sistemas son ejecutados de forma secuencial también pero no
porque el programa en sí se lo exija (Como los archvos .bat), sino porque no conocen otra forma de
ejecutarse.
om
Como introducción tenemos varios apartados interesantes que nos serán de ayuda para adentrarnos
en profundidad.
c
u.
Hadoop nace en el momento en que Google necesita urgentemente una solución con la que pueda
Apache sqoop es una herramienta que fue diseñada para importar información desde bases de
tu
Apache Spark es un framework de computación en clúster diseñado para una rápida computación.
r
vi
la
au
[Link]
2 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Objetivos
Dentro de esta unidad vamos a ver varios tipos de herramientas que nos serán de ayuda para
om
Conocer la definición de la herramienta Sqoop.
c
Conocer la definición de la herramienta Spark 2.0.
u.
Conocer las funciones y usos de las herramientas anteriormente mencionadas
at
dentro de un entorno adaptado a nuestras necesidades.
al
r tu
vi
la
au
[Link]
3 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Mapa Conceptual
[[[Elemento Multimedia]]]
c om
u.
at
al
r tu
vi
la
au
[Link]
4 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Hadoop.
¿Qué es HADOOP?
Podríamos empezar esta nueva unidad comentando que Hadoop nace en el momento en que Google
necesita urgentemente una solución con la que pueda continuar procesando datos al ritmo que el
mercado le demanda ya que Google en sus inicios creció de forma exponencial. Google decide
buscar una solución y esta solución se basa en un sistema de archivos distribuidos. Más tarde se
om
denominará Hadoop y se basa en un gran número de pequeños ordenadores, cada uno de los cuales
c
Lo novedoso y la excelencia del sistema es que a pesar de que cada uno de ellos funciona de forma
u.
independiente y autónoma, todos actúan en conjunto como si fueran un solo ordenador de
dimensiones increíbles.
at
En 2006, Google publica todos los detalles acerca de su nuevo descubrimiento, compartiendo su
conocimiento y experiencia con todos los usuarios. Esto despierta el interés de la comunidad Open
al
Source que viendo las nuevas oportunidades que surgirán, explotan sus posibilidades desarrollando
tu
A partir de entonces son muchas las empresas que lo incorporan a sus plataformas, como ya
r
vi
Conceptos previos
au
Es necesario conocer de forma muy clara algunos conceptos antes de profundizar en Hadoop.
Ley de Moore: Originado en la década de los 60’s, establece que la velocidad del procesador o
Nodo: PC o equipo físico que posee, como tal, su propio hardware y software.
[Link]
5 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
Clúster: Conjunto de 1 a n racks unidos entre sí por una misma red y que se comportan como
u.
un único ordenador.
at
al
r tu
vi
la
Hadoop
au
“The Apache™ Hadoop® project develops open‐source software for reliable, scalable, distributed
computing.”
Apache Hadoop es por lo tanto un framework de software libre que permite escribir y ejecutar
aplicaciones en sistemas distribuidos para procesar grandes cantidades de datos. Está diseñado para
almacenamiento local.
[Link]
6 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
En lugar de confiar en el hardware para ofrecer alta disponibilidad, el framework en sí está diseñado
para detectar y controlar los errores en la capa de aplicación, facilitando un servicio de alta
El framework de Hadoop está escrito en Java y es una evolución del subproyecto Nutch que a su vez
fue un subproyecto de Lucene, todos ellos desarrollados por Doug Cutting, que nombró el proyecto
c om
Lucene es un proyecto Java orientado a la búsqueda e indexación de texto. Aunque ha sido utilizado
u.
para la implementación de motores de búsquedas ya que es capaz de procesar millones de
at
documentos, es útil para cualquier aplicación que requiera indexación y búsqueda de textos
completos.
al
Nutch es una extensión de Lucene que permite construir un motor de búsquedas web, usando
tu
Lucene como su núcleo. Es capaz de procesar miles de millones de páginas web sin llegar a tener
un coste exorbitante. Otra diferencia con Lucene, es que Nutch debe correr sobre un clúster
r
distribuido. Para ello, se tuvo que crear una capa que permitiera gestionar el procesamiento
vi
Alrededor de 2004, Google publicó dos papers describiendo Google File System (GFS) y el
[Link]
7 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
framework de MapReduce. Doug Cutting implementó una evolución del framework de Nutch basado
en estas tecnologías y rápidamente superó las capacidades de Nutch pudiendo procesar varios
Aunque el concepto de programación distribuida está muy extendido, los puntos clave de Hadoop
om
como Amazon’s Elastic Compute Cloud (EC2).
Robusto: Debido a que está pensado para funcionar con hardware de equipos básicos, Hadoop
está diseñado para trabajar pese a que se sufran frecuentes averías hardware. Gracias a ello,
c
es capaz de manejar la mayoría de estos fallos.
u.
Escalable: Hadoop permite el escalado horizontal para gestionar volúmenes de datos más
Profundizando un poco más, Hadoop es un sistema distribuido usando una arquitectura Master-
r
Slave (maestro-esclavo), usado para almacenar su Hadoop Distributed File System (HDFS) y
vi
Hadoop corre sobre Linux. Hay varias formas de utilizar Hadoop. Dependiendo de nuestras
Un único nodo en local (single node), utilizado por ejemplo para hacer pruebas de concepto
Un clúster pseudo-distribuido para simular un clúster de varios nodos pero corriendo en una
Montar un clúster entre distintas máquinas (multi node) totalmente distribuido que sería el
Hadoop requiere un entorno de programación Java. Destacar que los usuarios de Linux o Mac OSX
[Link]
8 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
u otros entornos Unix son capaces de instalar Hadoop y ejecutarlo en una o más maquinas sin más
necesidad de software que Java. El resto de usuarios necesitan una máquina virtual. Por esta razón
Ecosistema Hadoop
Este ecosistema cambia muy rápido con lo que es bueno revisarlo cada cierto periodo de tiempo.
c om
u.
at
al
r tu
vi
la
au
Monitorización
[Link]
9 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
que trabaja con Hadoop para procesar y analizar grandes volúmenes de logs. Incluye herramientas
c om
u.
at
al
tu
gestión de los clúster de Hadoop. Posee dashboards de mapas de calor para visualizar el estado del
r
[Link]
au
mover troncos (logs). Es un sistema distribuido para agregar y mover grandes cantidades de
[Link]
10 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
om
En el siguiente enlace se puede encontrar un manual de uso:
c
[Link]
u.
La arquitectura e integración de Flume, donde se ve como diferentes agentes recogen ficheros log
at
desde diferentes orígenes, los integran en un repositorio común para después analizarlos con
distribuidos y mantener la sincronización del clúster. Facilita un conjunto de primitivas simples que
pueden usar las aplicaciones distribuidas para implementar servicios de mayor nivel de
sincronización y configuración. Es fácil de programar y usa un modelo de datos del estilo de árbol de
[Link]
11 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Procesamiento
framework está inspirado en los nombres de dos importantes métodos, macros o funciones en
programación funcional: Map y Reduce. MapReduce ha sido adoptado mundialmente, ya que existe
om
Avro [Link] La serialización es el proceso mediante el cual se convierte un objeto
a un formato para que pueda ser procesado y almacenado. Como en Hadoop se procesa una gran
c
cantidad de datos la serialización se usa para poder procesarlos y guardarlos de forma eficiente. La
u.
serialización puede ser en formato de texto plano, JSON o binario. De esta forma se pueden leer
almacenados en Hadoop usando un lenguaje similar a SQL llamado HiveQL. En el siguiente enlace
tu
uso: [Link]
r
vi
la
au
Esta imagen refleja el funcionamiento de Hive que funciona como una capa externa y por encima de
Hadoop y desde donde vamos a poder realizar consultas sobre los ficheros de HDFS usando HiveQL.
[Link]
12 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
HCatalog [Link]
Es un servicio para la gestión de tablas y almacenamiento que proporciona un esquema común que
permite abstraerse de las diferentes estructuras de tablas, de cómo se almacenan y de los datos que
c om
u.
at
Mahout [Link] Es un proyecto de aprendizaje automático y minería de datos
al
para la buscar patrones en grandes datasets.
r tu
vi
la
au
Pig [Link] Desarrollado por Yahoo, permite a los usuarios de Hadoop centrarse
encuentra en [Link]
[Link]
13 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
al
Tez [Link] Es una evolución del sistema MapReduce, que permite ejecutar varias
tu
operaciones Map y/o reduce concatenadas. Estas tareas se pueden modelar en forma de grafo
acíclico.
r
vi
la
au
búsquedas sobre textos. Proporciona librerías para la indexación y búsqueda de texto. Ha sido
[Link]
14 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Bases de datos
om
clave-valor.
c
NoSQL distribuida, orientada a columnas para el almacenamiento de grandes volúmenes de datos.
u.
Es el componente necesario cuando se requiere escrituras/lecturas en tiempo real y acceso aleatorio
at
para grandes conjuntos de datos.
al
r tu
vi
la
au
usan Hadoop.
[Link]
15 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Módulos en Hadoop
om
Hadoop está inspirado en el proyecto de Google File System (Ghemawat, y otros, 2003) y en el
Hadoop Distributed File System (HDFS), Hadoop MapReduce y Hadoop Common en los que
c
entraremos en detalle en los siguientes apartados:
u.
Hadoop Common: Utilidades comunes que dan soporte a otras aplicaciones Hadoop.
at
Hadoop Distributed File System (HDFS): Sistema distribuido de ficheros que proporciona un
datos.
r
vi
la
Comenzar Actividad
au
[Link]
16 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
La búsqueda e indexación de
texto.
om
en sus inicios creció de forma exponencial.
c
u.
at
al
r tu
vi
la
au
[Link]
17 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Pig.
Pig es una plataforma creada por Yahoo (a alto nivel) que nos ayuda a desarrollar algoritmos
MapReduce utilizando una sintaxis similar a SQL llamada Pig latin. Tiene dos modos de
maquina local. Utilizando un script se codificarán las sentencias que realizan la carga, escaneo,
búsqueda y filtrado de los datos de entrada y sentencias para el formateo y almacenamiento de los
datos de salida.
om
Podremos utilizar un schema para estructurarlos y poder acceder de manera más sencilla.
c
Se puede ampliar Pig Latin usando UDF (Funciones definidas por el usuario).
u.
Estas funciones pueden estar desarrolladas en varios lenguajes de programación (Python, Ruby,
"Filosofía" Pig
Para poder comprender mejor el por qué se creó Pig, se definieron una lista de enunciados que
resumen el proyecto.
"Pigs eat anything": Haciendo referencia al símil de que un cerdo puede comer
[Link]
18 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
cualquier cosa, Pig puede trabajar con cualquier tipo de datos, ya sea no
"Pigs live anywhere": En su creación, Pig fue implementado en Hadoop pero esto
"Pigs are domestic animals": Al igual que los "animales domésticos", Pig está
om
programas. Como indicamos en el apartado anterior, Pig puede crecer y aumentar
su funcionalidad mediante funciones que definan los propios usuarios (UDF). Esto
c
hace que Pig pueda extenderse mediante UDFs para que realice un procesamiento
u.
personalizado.
Por supuesto, al ser el creador de dicha plataforma, Yahoo! fue el primero en utilizarla para sus
vi
Realmente, más del 50% de los procesos que se ejecutan en Hadoop se basan en scripts escritos en
Pig Latin.
au
A partir del 2009, Pig se empezó a usar para el procesamiento de datos en otras compañias, tales
como:
LinkedIn: Esta plataforma usa Hadoop y Pig en el componente "Gente que podrías conocer"
para recomendar a los usuarios posibles conocidos, empleos o páginas que puedan ser de su
interés.
Twitter: Esta red social usa Pig para procesar logs de datos de los tweets enviados.
AOL y WhitePages: Estas páginas utilizan Pig para, en sus búsquedas de información, filtrar
[Link]
19 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
los registros.
Pig Latin
Pig Latin es un lenguaje de programación que usa flujos de datos de forma paralela. Esto
permite a los programadores definir como deben ser tratados (Lectura, Procesamiento y
om
La sintaxis es muy parecida a SQL pero, al ser un lenguaje orientado a la transformación de datos
Habitualmente utilizando MapReduce en Java, los programas pueden ser de más de 100 líneas de
c
código, mientras que utilizando Pig Latin, los scripts normalmente no suelen pasar de unas 10 líneas
u.
de código. at
al
r tu
vi
la
au
[Link]
20 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
El método de funcionamiento de Pig Latin es el de ejecutar sentencias tomando los datos de entrada
("bag") que hacen referencia a un conjunto de tuplas (filas), procesando dichas sentencias con
Una "tupla" es un conjunto de campos, donde cada uno hace referencia a cualquier tipo de dato. Pig
Latin no utiliza condicionales tales como "if" ni tampoco ciclos tales como "for" ya que este
lenguaje está enfocado en el flujo de datos y no en controlar dicho flujo como otros lenguajes de
om
programación.
Pig Latin usa operadores relacionales para poder realizar varias operaciones sobre los datos que
se analizan.
c
u.
Aunque anteriormente hemos dicho que Pig Latin no utiliza ciclos "for", sí que existe el operador
"FOREACH" que tiene una naturaleza similar ya que su función es la de iterar sobre las tuplas y
at
transformarlas en dichas iteraciones.
al
En la siguiente tabla se puede observar algunos de los operadores relacionales que son utilizados en
Pig Latin:
r tu
vi
la
au
[Link]
21 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
al
r tu
vi
la
au
Anteriormente comentamos el uso que algunas empresas (LinkedIn, Twitter, AOL,...) le daban a Pig.
Además de estos usos, existen muchos datos que se pueden procesar y aún no se ha hecho y esto
Por ejemplo, Pig se podría usar para ver todos los movimientos de un usuario en una página web y
poder dividir en varios tipos a los usuarios. Así, se podría categorizar a dichos tipos de usuarios y
para cada uno mostrar anuncios o artículos que estén más relacionados con sus tipos de búsqueda.
[Link]
22 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Pig permite el análisis de gran volumen de información (Big Data), con Apache Pig se puede
procesar y almacenar dichos datos en una base de datos y posteriormente ejecutar consultas
(queries) sobre ellos. Esto hace que Pig tenga una similitud con una herramienta ETL (Extract
Transform Load).
Pig permite la paralelización utilizando Hadoop haciendo que los scripts sean más simples.
Esto no significa que Pig sea un reemplazo de una ETL ya que no tiene funcionalidades específicas
om
Ejemplo de lenguaje Pig Latin para programa de cuenta de caracteres:
c
u.
at
al
r tu
vi
Este ejemplo de un archivo cogerá las palabras de un archivo de texto y nos contará las palabras.
la
au
Comenzar Actividad
[Link]
23 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Pig es una plataforma creada por Yahoo (a alto nivel) que nos ayuda a desarrollar
algoritmos MapReduce utilizando una sintaxis similar a SQL llamada Pig latin.
c om
u.
at
al
r tu
vi
la
au
[Link]
24 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Hive.
Apache Hive es un framework que fue originalmente creado por Facebook que sirve para trabajar
con el HDFS de Hadoop y nos facilita trabajar con los datos. A través de sentencias SQL podemos
c om
u.
at
al
Facebook fue la encargada de desarrollar Hive y actualmente es utilizada por Apache Hive y
tu
desarrollada por empresas tales como Netflix y FINRA (Financial Industry Regulatory Authority).
r
Amazon incluye una derivación Apache Hive en sus servicios Amazon Web Services.
vi
Hive no es una base de datos, aunque tengamos que crearnos un schema, crear una tabla e
la
Apache Hive permite analizar conjuntos de datos grandes que utilicen almacenamiento bajo HDFS
Tiene un lenguaje basado en SQL que se llama HiveQL y permite leer y convertir consultas en
Para que las consultas sean más rápidas, Hive utiliza índices de bitmaps.
[Link]
25 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Almacenamiento en BD Relacionales.
DEFLATE,...).
UDF (Funciones definidas por el usuario) para poder tratar textos y otros tipos de
om
Inicialmente, Hive guarda sus metadatos en una base de datos apache Derby pero se puede
c
configurar para que estos metadatos puedan ser almacenados en otros bases de datos relacionales
u.
como pueden ser: Postgres, MySQL, Oracle, o MS SQL.
at
Su principal inconveniente es que necesita procesar la consulta SQL y traducirla a Java para crear el
trabajo MapReduce.
al
Desde el botón upload podemos subir archivos que utilizaremos como fuentes de datos:
[Link]
26 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
al
r tu
vi
la
Crearemos la base de datos y la tabla que almacenara los datos desde aquí.
au
[Link]
27 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
Supongamos que hemos creado una tabla como esta. Los campos de la tabla deben de ser campos
al
importe
from presupuestos
order by importe
[Link]
28 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Conclusión
Hive nos proporciona una herramienta para traducir queries del lenguaje tradicional SQL, que es ya
conocido por la industria, a los nuevos frameworks NoSQL en el ecosistema Hadoop. Hive es una
om
Si se utiliza un volumen de información muy extenso en un clúster de Hadoop y no se tienen
nociones o fundamentos para programar MapReduce, Hive es perfecta para poder extraer la
c
información que se desee.
u.
Por ejemplo:
at
Si tenemos muchos archivos .log en un servidor y queremos extraer información en ellos sería
al
difícil poder extraer información de forma fácil y rápida. Sin embargo, utilizando Hive, sería sencillo
crear una tabla extrayendo los datos de los ficheros y filtrando la información por ejemplo por líneas
tu
Apache Hive.
au
MapReduce.
[Link]
29 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Sqoop.
Sqoop es un programa que se ejecuta bajo línea de comandos y sirve para transferir datos entre
Hadoop y BD relacionales.
El nombre de esta aplicación surge de unir las palabras sql y hadoop. Pasó a ser un proyecto Apache
de nivel superior en 2012. Tiene una amplia documentación tanto para desarrolladores como para
usuarios.
om
Como ejemplo, Microsoft usa un conector que está basado en Sqoop para ayudar al traspaso de
c
La API de Sqoop permite conectar con otras BD mediante el desarrollo de conectores y así poder
u.
adaptar y usar los lenguajes de consultas de otro proveedor de BD específico.
at
¿Cómo funciona Sqoop?
al
Sqoop trabaja como una capa intermedia entre las BD relacionales y Haddop tal y como se muestra
en la siguiente imagen.
r tu
vi
la
au
Apache Sqoop es una herramienta que fue diseñada para importar información desde bases de
datos estructuradas y sistemas Hadoop en el clúster Hadoop. Podemos utilizar Sqoop también para
[Link]
30 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
om
Supongamos que tenemos una tabla empleados en MySQL:
c
u.
at
al
tu
Una vez ejecutado tendremos nuestra tabla importada en el HDFS de hadoop listo para ser usado.
[Link]
31 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Conclusión
Como hemos podido ver, Sqoop es una herramienta muy útil para trasladar una base de datos ya
Nos permite, mediante los comandos pertinentes, importar datos de nuestra BD relacional,
analizarlos y gestionarlos mediante otras herramientas como pueden ser Pig o Hive sobre Hadoop y
c om
u.
at
al
r tu
vi
la
au
[Link]
32 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Flume.
Flume es un servicio distribuido y fiable para recoger, agregar y mover grandes cantidades de
datos de log. Tiene una arquitectura simple y flexible de flujo de datos. Es robusto y tolerante a
fallos con mecanismo de confiabilidad ajustables y muchos mecanismos de conmutación por error y
recuperación. Utiliza un modelo de datos extensible que permite la aplicación analítica en línea. Esta
c om
u.
at
Para usar Flume una vez lo tengamos instalado configuraremos de dónde obtendremos los datos:
al
r tu
vi
Vamos a transferir los datos de twitter. Una vez listado los componentes, tendremos que
describirlos:
la
au
Ahora deberemos describir los “sink” que será donde almacenemos los datos:
[Link]
33 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Deberemos describir el canal por donde se transferirá los datos entre la fuente de datos y los
“sink”:
om
Una vez configurado como hemos visto necesitaremos un accessToken que podemos crearlo desde
[Link] una vez creada nuestra aplicación rellenaremos los datos que nos faltaban y
c
u.
El archivo final [Link] sería algo así:
at
al
r tu
vi
la
au
Ejecutaremos Flume:
[Link]
34 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
Estos tweets estarán en nuestro HDFS de hadoop
al
tu
Conceptos (1/2)
Evento
Payload de bytes que Flume representa como unidad de datos y puede ser transportado
au
Flujo
Cliente
[Link]
35 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Agente
Proceso que tiene los componentes Flume como Fuentes (Source), Canales (Channels) y
Conceptos (2/2)
om
Fuente (Source)
c
mecanismo. La fuente, al recibir un evento, lo entrega a 1 o más canales.
u.
Canal (Channel)
at
Es donde, temporalmente, un evento es almacenado. Estos eventos son entregados a los
canales por las fuentes que operan con el agente. Los eventos que están en los canales
al
Sumidero (Sink)
r
del flujo o hasta el destino final. Si el sumidero envía el evento hasta el destino final se
la
[Link]
36 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
al
r tu
vi
la
au
[Link]
37 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Spark Core.
Apache Spark es un framework de computación en cluster diseñado para una rápida computación.
Fue creada sobre Hadoop MapReduce y amplia el modelo MapReduce para usar de manera más
eficiente más tipos de cálculos que incluyen consultas interactivas y procesamiento de flujo.
c om
u.
at
Fue desarrollada por la Universidad de California. Posteriormente, el código base fue donado a la
Apache Software Foundation que, desde entonces, se encarga de mantener dicho código. Permite
al
una interfaz para programación de clusters con paralelismo de datos y tolerancia a fallos.
tu
La base de la arquitectura para Apache Spark está en el Resilient Distributed DataSet (RDD) que
es un multiset de ítems de datos, en modo solo lectura, distribuidos en un clúster de máquinas con
r
Como veremos en el apartado del tema siguiente (Spark 2.0), actualmente se recomienda para el
la
Los RDDs de Spark son un conjunto de trabajo (Working Set) para los programas distribuidos que
Apache Mesos.
Hadoop YARN.
[Link]
38 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Por otro lado, para el almacenamiento distribuido, existen varias interfaces disponibles:
Cassandra.
Amazon S3.
om
OpenStack Swift.
Kudu.
c
u.
Ventajas Spark at
Las mayores ventajas de Spark serían:
al
Procesamiento de los resultados parciales en memoria.
Shell interactiva.
Tolerancia a fallos.
r
Multi-lenguaje.
la
[Link]
39 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
at
Componentes Spark
al
Spark está basado en un núcleo o componente principal (Core) y sobre este Core hay varios
Spark SQL: Los datos están estructurados y podemos acceder a ellos e integrar Spark con
vi
Spark MLlib: Biblioteca donde están alojados algoritmos clásicos de machine learning
[Link]
40 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Abstracción RDD
Un RDD (Resilient Distributed Dataset) es una abstracción de Spark que hace referencia a una
colección de elementos en memoria a través del cluster en particiones. Se pueden llevar a cabo
Cada partición hace referencia a un subconjunto de los datos y se asigna a cada nodo para que,
c om
u.
at
al
tu
Primero tenemos que leer el archivo de entrada. El siguiente comando es utilizado para leer un
[Link]
41 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Nuestro objetivo es contar las palabras de un archivo. Crearemos un mapa plano separando cada
linea en palabras flatMap(line ⇒ [Link](“”) después relleremos cada palabra como una clave
con el valor 1 usando la función map. Finalmente reduciremos esas claves añadiendo valores de
claves similares. El siguiente comando es usado para ejecutar la lógica de cuenta de palabras:
1)).reduceByKey(_+_);
Después de ejecutar el comando no tendremos ninguna salida ya que esto no es una acción sino
om
una transformación.
c
u.
scala> [Link]("output”)
at
Para ver la salida nos iremos a ese directorio y veremos que nos ha creado 3 archivos.
Conclusion
Spark, desde sus inicios, fue diseñado y desarrollado para poner solución a muchos problemas que
Existen bastantes proyectos reales en los que se ha utilizado y aplicado Spark con éxito y se ha
manifestado que ofrece una gran ventaja competitiva. Se ha convertido en la gran "novedad" en el
[Link]
42 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
c om
u.
Comenzar Actividad
at
Relaciona los elementos de la columna Derecha con la columna Izquierda
al
La base de la arquitectura para 1 El Resilient Distributed DataSet
Apache Spark está en (RDD).
tu
3
diseñado y desarrollado para representaba. Es rápido y eficaz.
poner solución a
au
[Link]
43 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Spark 2.0.
Apache Spark 2.0 trajo varios cambios a Apache Spark. La mayor actualización fue la usabilidad de
la API, soporte para SQL 2003, mejora de rendimientos y streaming estructurado. Esta versión
c om
u.
at
Las principales novedades de Apache Spark 2.0 son:
al
Unificaron los dataframe y los dataset.
Más simple.
Estos cambios solo modificaron el funcionamiento interno del programa y dieron soporte a más
au
Mejora de la velocidad
Una de las ventajas esenciales de Apache Spark 2.0 frente a sus versiones anteriores reside en la
velocidad, ya que, en esta nueva versión se utiliza una memoria caché integrada y se ha avanzado
La estimación de mejora de la velocidad de Apache Spark 2.0 frente a Apache Spark 1.0 y sus
[Link]
44 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
permitieran, además de procesar los datos en tiempo real, que se pudiera combinar este
En esta versión 2.0 de Spark, escuchando a los desarrolladores, está disponible una API que permite
om
Para poder trabajar con esta API de Spark 2.0 es necesario que se configure un almacén de datos
c
Gracias a ellos, se podrá analizar los sitios web mediante consultas interactivas de una sesión
u.
determinada.
at
En esta versión, quedan unificadas en una única biblioteca las APIs DataFrame y Datasets.
al
Spark 2.0 es 10 veces más rápido que Spark 1.6, en gran parte porque los desarrolladores han hecho
Según los análisis realizados, se estima que la mayoría de los ciclos de un motor de datos se suele
gastar en trabajos que no sirven para nada. Optimizar estos ciclos de CPU es un paso muy
la
Spark 2.0 está basado en la segunda generación del motor de datos Tungsteno, que se acerca
mucho a un compilador. Aprovecha los registros para la escritura de datos de forma intermedia y
Flume
[Link]
45 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Apache Spark
c om
u.
at
al
r tu
vi
la
au
[Link]
46 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Recuerda
[[[Elemento Multimedia]]]
c om
u.
at
al
r tu
vi
la
au
[Link]
47 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Autoevaluación
Apache Hadoop…
om
Apache Hadoop es un framework de pago que permite escribir y ejecutar aplicaciones
en sistemas distribuidos para procesar grandes cantidades de datos.
c
Apache Hadoop es una aplicación de software libre que permite escribir y ejecutar
u.
aplicaciones en sistemas distribuidos para procesar grandes cantidades de datos.
at
Lucene…
al
Nutch…
[Link]
48 / 49
[AFO017713] IFCT127PO ARQUITECTURA BIG DATA
[MOD015921] IFCT127PO ARQUITECTURA BIG DATA
[UDI080712] BATCH PROCESSING.
Verdadero.
Falso.
om
Indica si la siguiente afirmación es verdadera o falsa: “Hadoop está inspirado en
el proyecto de Lucene”.
c
u.
Verdadero. at
Falso.
al
r tu
vi
la
au
[Link]
49 / 49