0% encontró este documento útil (0 votos)
58 vistas58 páginas

Introducción a Apache Pig y Pig Latin

Pig es una plataforma creada por Yahoo para desarrollar algoritmos MapReduce utilizando una sintaxis similar a SQL llamada Pig Latin. Pig Latin permite procesar datos de forma paralela mediante operadores relacionales y flujos de datos. Inicialmente Pig se desarrolló en 2006 por Yahoo Research para procesar grandes volúmenes de datos utilizando MapReduce.

Cargado por

more
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas58 páginas

Introducción a Apache Pig y Pig Latin

Pig es una plataforma creada por Yahoo para desarrollar algoritmos MapReduce utilizando una sintaxis similar a SQL llamada Pig Latin. Pig Latin permite procesar datos de forma paralela mediante operadores relacionales y flujos de datos. Inicialmente Pig se desarrolló en 2006 por Yahoo Research para procesar grandes volúmenes de datos utilizando MapReduce.

Cargado por

more
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Pig.

1/7

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 funcionamiento permitiéndonos ejecutar los algoritmos en el cluster HDFS de
Hadoop o en nuestra 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.

Podremos utilizar un schema para estructurarlos y poder acceder de manera más sencilla.

Se puede ampliar Pig Latin usando UDF (Funciones definidas por el usuario).

Estas funciones pueden estar desarrolladas en varios lenguajes de programación (Python,


Ruby, Java, Javascript,...) y luego llamarlas, de forma directa, desde el propio lenguaje.

Inicialmente Pig se desarrolló en 2006 por los investigadores de Yahoo Research para
poder lanzar un map-reduce sobre un gran volumen de datos.

En 2007, se trasladó a Apache Software Foundation.

1 Siguiente
1/7
Pig.
2/7

"Filosofía" Pig

Para poder comprender mejor el por qué se creó Pig, se definieron una lista de enunciados
que resumen el proyecto.

Estos enunciados son:

1. "Pigs eat anything": Haciendo referencia al símil de que un cerdo puede


comer cualquier cosa, Pig puede trabajar con cualquier tipo de datos, ya sea
no estructurado, estructurado ó semi-estructurado.
2. "Pigs live anywhere": En su creación, Pig fue implementado en Hadoop pero
esto no significa que solamente esté orientado a esta plataforma. Su
intención es que Pig sea utilizado como un lenguaje para el procesamiento
paralelo.
3. "Pigs are domestic animals": Al igual que los "animales domésticos", Pig
está pensado para que los propios usuarios puedan controlar y modificar el
funcionamiento (conducta en el caso de los animales domésticos) de los
programas. Como indicamos en el apartado anterior, Pig puede crecer y
aumentar su funcionalidad mediante funciones que definan los propios
usuarios (UDF). Esto hace que Pig pueda extenderse mediante UDFs para
que realice un procesamiento personalizado.
4. "Pigs fly": El objetivo de Pig es procesar datos de forma muy rápida. No
pretendemos mejorar las características sino el rendimiento para que
realmente Pig pueda "volar".

Anterior 1 2 Siguiente

2/7
Pig.
3/7

¿Quién está usando Pig actualmente?

Por supuesto, al ser el creador de dicha plataforma, Yahoo! fue el primero en utilizarla para
sus procesos de búsqueda en la web así como para incorporarlo en Hadoop.

Realmente, más del 50% de los procesos que se ejecutan en Hadoop se basan en scripts
escritos en Pig Latin.

A partir del 2009, Pig se empezó a usar para el procesamiento de datos en otras
compañias, tales como:

1
LinkedIn: Esta plataforma
3 usa Hadoop y Pig en el 2
AOL y WhitePages: Estas
componente "Gente que Twitter: Esta red social usa

páginas utilizan Pig para, en


podrías conocer" para Pig para procesar logs de

sus búsquedas de
recomendar a los usuarios datos de los tweets

información, filtrar los


posibles conocidos, enviados.

registros
empleos o páginas que
puedan ser de su interés.

Anterior 1 2 3 Siguiente

3/7
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 Almacenamiento) los datos que
provienen de una o más entradas.

La sintaxis es muy parecida a SQL pero, al ser un lenguaje orientado a la transformación de datos también
es parecido a los optimizadores de consultas.

Habitualmente utilizando MapReduce en Java, los programas pueden ser de más de 100 líneas de código,
mientras que utilizando Pig Latin, los scripts normalmente no suelen pasar de unas 10 líneas de código.

Pig Latin

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 dichas tuplas
y emitiendo otro "bag" como salida.

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 programación.

Anterior 1 2 3 4 Siguiente
Pig.

5/7

Pig Latin usa operadores relacionales para poder realizar varias operaciones sobre los datos
que se analizan.

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
transformarlas en dichas iteraciones.

En la siguiente tabla se puede observar algunos de los operadores relacionales que son utilizados
en Pig Latin:

Operadores relacionales Pig Latin

Anterior 1 2 3 4 5 Siguiente

5/7
Pig.

6/7

¿Qué se puede resolver con Pig?

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 puede permitir realizar modelos de predicción del comportamiento.

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.

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 como sí lo hace una herramienta ETL.

Anterior 1 2 3 4 5 6 Siguiente

6/7
Pig.

7/7

Ejemplo de lenguaje Pig Latin para programa de cuenta de caracteres:

Este ejemplo de un archivo cogerá las palabras de un archivo de texto y nos contará las palabras.

Ejercicio

Relaciona los elementos de la columna derecha con la columna izquierda


(Introducir números en las casillas de la columna derecha)

Pig Latin usa 1 Operadores relacionales para


poder realizar varias
operaciones sobre los datos que
Pig Latin es un lenguaje 2 se analizan.
de programación que usa
Flujos de datos de forma
Inicialmente Pig se 3 paralela.
desarrolló en 2006 por los
investigadores de Yahoo
Research para Poder lanzar un map-reduce
sobre un gran volumen de
datos. En 2007, se trasladó a
Apache Software Foundation.

¡Correcto! ×

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.

Comprobar Reintentar Mostrar solución


Anterior 1 2 3 4 5 6 7
Hive.

1/6

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
lanzar consultas que serán traducidas a trabajos MapReduce.

Facebook fue la encargada de desarrollar Hive y actualmente es utilizada por Apache Hive y
desarrollada por empresas tales como Netflix y FINRA (Financial Industry Regulatory Authority).

Amazon incluye una derivación Apache Hive en sus servicios Amazon Web Services.

Hive no es una base de datos, aunque tengamos que crearnos un schema, crear una tabla e
introducir datos. Por esto se conoce como el componente datawarehouse de Hadoop.

1 Siguiente
1/6
Hive.
2/6

Apache Hive permite analizar conjuntos de datos grandes que utilicen almacenamiento
bajo HDFS de Hadoop y en sistemas que sean compatibles tales como Amazon S3.

Tiene un lenguaje basado en SQL que se llama HiveQL y permite leer y convertir consultas
en MapReduce y otras plataformas que pueden ejecutarse bajo YARN.

Para que las consultas sean más rápidas, Hive utiliza índices de bitmaps.

Hive incluye otras características tales como:

1. Indexación para la mejora de la velocidad en las consultas.


2. Varios tipos de almacenamiento de texto (Ej: ORC, RCFile,...).
3. Almacenamiento en BD Relacionales.
4. Operaciones para poder ser ejecutadas en datos comprimidos (Ej: BWT,
DEFLATE,...).
5. UDF (Funciones definidas por el usuario) para poder tratar textos y otros
tipos de datos y poder adaptarlo a nuestra funcionalidad.
6. Consultas con estructura parecida a SQL que se convierten, de forma
automática, a MapReduce, Tez ó tareas Spark.

Inicialmente, Hive guarda sus metadatos en una base de datos apache Derby pero se
puede configurar para que estos metadatos puedan ser almacenados en otros bases de
datos relacionales como pueden ser: Postgres, MySQL, Oracle, o MS SQL.

Anterior 1 2 Siguiente

2/6
Hive.

2/6

Apache Hive permite analizar conjuntos de datos grandes que utilicen almacenamiento
bajo HDFS de Hadoop y en sistemas que sean compatibles tales como Amazon S3.

Tiene un lenguaje basado en SQL que se llama HiveQL y permite leer y convertir consultas en
MapReduce y otras plataformas que pueden ejecutarse bajo YARN.

Para que las consultas sean más rápidas, Hive utiliza índices de bitmaps.

Hive incluye otras características tales como:

1. Indexación para la mejora de la velocidad en las consultas.


2. Varios tipos de almacenamiento de texto (Ej: ORC, RCFile,...).
3. Almacenamiento en BD Relacionales.
4. Operaciones para poder ser ejecutadas en datos comprimidos (Ej: BWT,
DEFLATE,...).
5. UDF (Funciones definidas por el usuario) para poder tratar textos y otros tipos de
datos y poder adaptarlo a nuestra funcionalidad.
6. Consultas con estructura parecida a SQL que se convierten, de forma automática,
a MapReduce, Tez ó tareas Spark.

Inicialmente, Hive guarda sus metadatos en una base de datos apache Derby pero se puede
configurar para que estos metadatos puedan ser almacenados en otros bases de datos relacionales
como pueden ser: Postgres, MySQL, Oracle, o MS SQL.

Anterior 1 2 Siguiente

2/6
Hive.

2/6

Apache Hive permite analizar conjuntos de datos grandes que utilicen almacenamiento
bajo HDFS de Hadoop y en sistemas que sean compatibles tales como Amazon S3.

Tiene un lenguaje basado en SQL que se llama HiveQL y permite leer y convertir consultas en
MapReduce y otras plataformas que pueden ejecutarse bajo YARN.

Para que las consultas sean más rápidas, Hive utiliza índices de bitmaps.

Hive incluye otras características tales como:

1. Indexación para la mejora de la velocidad en las consultas.


2. Varios tipos de almacenamiento de texto (Ej: ORC, RCFile,...).
3. Almacenamiento en BD Relacionales.
4. Operaciones para poder ser ejecutadas en datos comprimidos (Ej: BWT,
DEFLATE,...).
5. UDF (Funciones definidas por el usuario) para poder tratar textos y otros tipos de
datos y poder adaptarlo a nuestra funcionalidad.
6. Consultas con estructura parecida a SQL que se convierten, de forma automática,
a MapReduce, Tez ó tareas Spark.

Inicialmente, Hive guarda sus metadatos en una base de datos apache Derby pero se puede
configurar para que estos metadatos puedan ser almacenados en otros bases de datos relacionales
como pueden ser: Postgres, MySQL, Oracle, o MS SQL.

Anterior 1 2 Siguiente

2/6
Hive.

3/6

Su principal inconveniente es que necesita procesar la consulta SQL y traducirla a Java para
crear el trabajo MapReduce.

El programa presenta el siguiente aspecto:

Desde el botón upload podemos subir archivos que utilizaremos como fuentes de datos:

Para procesar los datos utilizaremos el editor que tiene integrado:


Anterior 1 2 3 Siguiente
3/6
Hive.

4/6

Crearemos la base de datos y la tabla que almacenara los datos desde aquí.

Supongamos que hemos creado una tabla como esta. Los campos de la tabla deben de ser
campos que tengamos en nuestro archivo de datos

Ya solo nos queda introducir los datos en la tabla.

load data inpath '/user/usuario/gastos.csv' overwrite into table presupuestos;

Ahora si realizamos una consulta:

select descripcion_centro, descripcion_seccion, descripcion_capitulo, descripcion_economico,


importe

from presupuestos

order by importe

Podemos visualizar los datos como más nos convenga y necesitemos.

Anterior 1 2 3 4 Siguiente

4/6
Hive.

5/6

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 herramienta fácil y rápida de programar pero conlleva un sobrecoste en la ejecución en
comparación de la programación directa en frameworks NoSQL.

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
información que se desee.

Por ejemplo:

Si tenemos muchos archivos .log en un servidor y queremos extraer información en ellos sería
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
que contengan fallos o errores.

Anterior 1 2 3 4 5 Siguiente
Hive.

6/6

Ejercicio

Arrastra la solución a la derecha (respuesta simple)


A través de sentencias SQL podemos lanzar consultas que serán traducidas
a trabajos:

?
Apache Hive.

MapReduce.

arrastrar aquí

Comprobar Reintentar (5) para Mostrar solución

Anterior 1 2 3 4 5 6

6/6
Hive.

6/6

Ejercicio

Arrastra la solución a la derecha (respuesta simple)


A través de sentencias SQL podemos lanzar consultas que serán traducidas a trabajos:

?
Apache Hive.

MapReduce.

arrastrar aquí

¡Correcto! ×

MapReduce.

Comprobar Reintentar Mostrar solución

Anterior 1 2 3 4 5 6

6/6
Sqoop.

1/4

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.

Como ejemplo, Microsoft usa un conector que está basado en Sqoop para ayudar al traspaso de
información entre SQL Server y Hadoop.

La API de Sqoop permite conectar con otras BD mediante el desarrollo de conectores y así poder
adaptar y usar los lenguajes de consultas de otro proveedor de BD específico.

1 Siguiente
1/4
Sqoop.

2/4

¿Cómo funciona Sqoop?

Sqoop trabaja como una capa intermedia entre las BD relacionales y Haddop tal y como se
muestra en la siguiente imagen.

Funcionamiento Sqoop

Anterior 1 2 Siguiente

2/4
Sqoop.

3/4

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
extraer datos Hadoop y exportarlos a bases de datos relacionales.

Supongamos que tenemos una tabla empleados en MySQL:

Para importar esta tabla usaremos el siguiente comando

sqoop import --connect jdbc:mysql://localhost/employees --username usuario --table employees

Una vez ejecutado el comando el trabajo de mapa de datos se ejecutara:

Una vez ejecutado tendremos nuestra tabla importada en el HDFS de hadoop listo para ser
usado.

Anterior 1 2 3 Siguiente

3/4
Sqoop.

4/4

Conclusión

Como hemos podido ver, Sqoop es una herramienta muy útil para trasladar una base de datos ya
existente al entorno Hadoop y viceversa.

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
devolver el resultado de nuevo a nuestras BD relacionales.

Almacenamiento de datos

Anterior 1 2 3 4

4/4
Flume.

1/5

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 principalmente diseñado para copiar datos de varios servidores a HDFS.

Para usar Flume una vez lo tengamos instalado configuraremos de dónde obtendremos los datos:

Vamos a transferir los datos de twitter. Una vez listado los componentes, tendremos que
describirlos:

Los access token y los consumerkey las obtendremos de Enlace a app .

Ahora deberemos describir los “sink” que será donde almacenemos los datos:

1 Siguiente
1/5
Flume.

2/5

Así configuraremos los sink para HDFS.

Deberemos describir el canal por donde se transferirá los datos entre la fuente de datos y los
“sink”:

Una vez configurado como hemos visto necesitaremos un accessToken que podemos crearlo
desde aps.twitter.com una vez creada nuestra aplicación rellenaremos los datos que nos faltaban y
podremos empezar a recoger datos.

El archivo final twitter.conf sería algo así:

Ejemplo

Ejecutaremos Flume:

Y empezara a mostrarnos los tweets recogidos:


Estos tweets estarán en nuestro HDFS de hadoop

Anterior 1 2 Siguiente
2/5
Spark Core.

1/9

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.

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 una interfaz para programación de clusters con paralelismo de datos y tolerancia a fallos.

1 Siguiente
1/9
Spark Core.

2/9

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 un entorno tolerante a fallos.

Como veremos en el apartado del tema siguiente (Spark 2.0), actualmente se recomienda para el
desarrollo la API DataSet, aunque la API RDD no está descatalogada.

Los RDDs de Spark son un conjunto de trabajo (Working Set) para los programas distribuidos
que permiten la restricción de la memoria compartida distribuida.

Anterior 1 2 Siguiente
2/9
Spark Core.

3/9

Apache Spark necesita un cluster manager y un sistema de almacenamiento distribuido.

Para gestionar el clúster, existen las siguientes opciones:

1. Spark Standalone (Nativo).


2. Apache Mesos.
3. Hadoop YARN.

Por otro lado, para el almacenamiento distribuido, existen varias interfaces disponibles:

1. Hadoop Distributed File System (HDFS).


2. Cassandra.
3. Amazon S3.
4. MapR File System (MapR-FS).
5. OpenStack Swift.
6. Kudu.

Anterior 1 2 3 Siguiente

3/9
Spark Core.

4/9

Ventajas Spark

Las mayores ventajas de Spark serían:

1. Procesamiento de los resultados parciales en memoria.


2. Código libre (Open Source).
3. Shell interactiva.
4. Tolerancia a fallos.
5. Extendible para streaming mediante módulos, Machine Learning.
6. Multi-lenguaje.
7. Mucho más rápido que Hadoop MapReduce (Hasta 100 veces).

Open Source

Anterior 1 2 3 4 Siguiente
Spark Core.

5/9

Componentes Spark

Spark está basado en un núcleo o componente principal (Core) y sobre este Core hay varios
componentes que extienden su funcionalidad tales como:

1. Spark SQL: Los datos están estructurados y podemos acceder a ellos e integrar
Spark con Hive, JDBC, ODBC y herramientas de BI.

2. Spark Streaming: Soporta el procesamiento de un sistema de empaquetamiento


de pequeños lotes casi a tiempo real.

3. Spark GraphX: API para la computación de grafos de forma paralela.

4. Spark MLlib: Biblioteca donde están alojados algoritmos clásicos de machine


learning que están listos para ser ejecutados sobre Spark.

Componentes Spark

Anterior 1 2 3 4 5 Siguiente

5/9
Spark Core.

6/9

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
operaciones en paralelo sobre un RDD.

Cada partición hace referencia a un subconjunto de los datos y se asigna a cada nodo para que,
paralelamente, pueda utilizar estos datos y operar con ellos.

Transmisión de datos

Anterior 1 2 3 4 5 6 Siguiente
6/9
Flume.

3/5

Conceptos (1/2)

Flume maneja los siguientes conceptos:

1. Evento

Payload de bytes que Flume representa como unidad de datos y puede ser
transportado desde el origen hacia un punto de destino final.

2. Flujo

3. Cliente

4. Agente

Anterior 1 2 3 Siguiente
3/5
Flume.

3/5

Conceptos (1/2)

Flume maneja los siguientes conceptos:

1. Evento

2. Flujo

Movimiento entre punto de origen y destino final de los eventos.

3. Cliente

4. Agente

Anterior 1 2 3 Siguiente

3/5
Flume.

3/5

Conceptos (1/2)

Flume maneja los siguientes conceptos:

1. Evento

2. Flujo

3. Cliente

Implementación que trabaja en el origen de los eventos y realiza la entrega a un


agente Flume. Ej: Log4J appender.

4. Agente

Anterior 1 2 3 Siguiente
3/5
Flume.

3/5

Conceptos (1/2)

Flume maneja los siguientes conceptos:

1. Evento

2. Flujo

3. Cliente

4. Agente

Proceso que tiene los componentes Flume como Fuentes (Source), Canales
(Channels) y Sumideros (Sink). Es capaz de obtener, guardar y reenviar eventos
al siguiente destino.

Anterior 1 2 3 Siguiente

3/5
Flume.

4/5

Conceptos (2/2)

1. Fuente (Source)

Implementación que es capaz de consumir eventos que se le entregan a través de


un mecanismo. La fuente, al recibir un evento, lo entrega a 1 o más canales.

2. Canal (Channel)

3. Sumidero (Sink)

Anterior 1 2 3 4 Siguiente
4/5
Flume.
4/5

Conceptos (2/2)

1. Fuente (Source)

2. Canal (Channel)

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 permanecen hasta que son eliminados por un sumidero
(Sink).

3. Sumidero (Sink)

Anterior 1 2 3 4 Siguiente

4/5
Flume.
4/5

Conceptos (2/2)

1. Fuente (Source)

2. Canal (Channel)

3. Sumidero (Sink)

Implementación que es capaz de eliminar eventos de un canal y enviarlos al


siguiente agente del flujo o hasta el destino final. Si el sumidero envía el evento
hasta el destino final se conoce como sumidero terminal.

Anterior 1 2 3 4 Siguiente

4/5
Flume.

5/5

La relación de estos conceptos puede verse reflejada en la siguiente imagen:

Relacion elementos flume

Anterior 1 2 3 4 5

5/5
Spark Core.

6/9

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
operaciones en paralelo sobre un RDD.

Cada partición hace referencia a un subconjunto de los datos y se asigna a cada nodo para que,
paralelamente, pueda utilizar estos datos y operar con ellos.

Transmisión de datos

Anterior 1 2 3 4 5 6 Siguiente
6/9
Spark Core.

7/9

Vamos a crear un contador de palabras con Spark.

Supongamos que tenemos un archivo de texto con un texto escrito en el.

Abriremos la consola de spark utilizando el comando spark-shell:

Primero tenemos que leer el archivo de entrada. El siguiente comando es utilizado para leer un
archivo de una localización dada.

Nuestro objetivo es contar las palabras de un archivo. Crearemos un mapa plano separando cada
linea en palabras flatMap(line ⇒ line.split(“”) 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:

scala> val counts = inputfile.flatMap(line => line.split(" ")).map(word => (word,


1)).reduceByKey(_+_);

Anterior 1 2 3 4 5 6 7 Siguiente
7/9
Spark Core.

8/9

Después de ejecutar el comando no tendremos ninguna salida ya que esto no es una acción
sino una transformación.

Ahora aplicaremos la acción para almacenar la transformación en un directorio llamado output:

scala> counts.saveAsTextFile("output”)

Para ver la salida nos iremos a ese directorio y veremos que nos ha creado 3 archivos.

Si realizamos un cat de algún archivo veremos la cuenta de palabras:

Anterior 1 2 3 4 5 6 7 8 Siguiente

8/9
Spark Core.

9/9

Conclusion

Spark, desde sus inicios, fue diseñado y desarrollado para poner solución a muchos problemas
que Hadoop representaba. Es rápido y eficaz.

Cada vez es más utilizado y el número de contribuidores también crece.

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
universo del Big Data.

Big data

Ejercicio

Relaciona los elementos de la columna derecha con la columna izquierda


(Introducir números en las casillas de la columna derecha)

La base de la arquitectura 1 El Resilient Distributed


para Apache Spark está DataSet (RDD).
en
Los programas distribuidos
Los RDDs de Spark son 2 que permiten la restricción
un conjunto de trabajo de la memoria compartida
(Working Set) para distribuida.

Spark, desde sus inicios, Muchos problemas que


3
Hadoop representaba. Es
fue diseñado y
rápido y eficaz.
desarrollado para poner
solución a

¡Correcto! ×

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.

Comprobar Reintentar Mostrar solución

Anterior 1 2 3 4 5 6 7 8 9

9/9
Spark 2.0.

1/4

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
incluyo unos 2500 parches de 300 contribuidores.

Las principales novedades de Apache Spark 2.0 son:

1. Unificaron los dataframe y los dataset.


2. Una nueva configuración api para SparkSession.
3. Más simple.
4. Añadieron un módulo para usar datos CSV.
5. Mejoraron la administración de memoria en los procesos.

Estos cambios solo modificaron el funcionamiento interno del programa y dieron soporte a más
tipos de datos, a la hora de trabajar con el programa se trabaja de la misma forma.

1 Siguiente
1/4
Spark 2.0.

2/4

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 en la generación de código en tiempo de ejecución.

La estimación de mejora de la velocidad de Apache Spark 2.0 frente a Apache Spark 1.0 y sus
versiones sucesivas es de entre 5 y 10 veces mayor.

Las APIs se unifican en una única API

La comunidad de desarrolladores reclamaban a los administradores que dieran un salto y


permitieran, además de procesar los datos en tiempo real, que se pudiera combinar este
procesamiento con otro tipo de análisis de información.

En esta versión 2.0 de Spark, escuchando a los desarrolladores, está disponible una API que
permite a los programadores el desarrollo de aplicaciones que mezclen componentes en tiempo
real, interactivos y por lotes.

Para poder trabajar con esta API de Spark 2.0 es necesario que se configure un almacén de
datos con funciones ETL.

Gracias a ellos, se podrá analizar los sitios web mediante consultas interactivas de una sesión
determinada.

En esta versión, quedan unificadas en una única biblioteca las APIs DataFrame y Datasets.

Anterior 1 2 Siguiente
Spark 2.0.

3/4

Spark como compilador

Spark 2.0 es 10 veces más rápido que Spark 1.6, en gran parte porque los desarrolladores han
hecho una limpieza bastante grande de tareas que son prescindibles.

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
importante para la mejora de la velocidad.

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
eliminan llamar a funciones virtuales.

Anterior 1 2 3 Siguiente
3/4
4/4

Ejercicio

Arrastra la solución a la derecha (respuesta simple)


_______________ 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.

?
Flume

Apache Spark 2.0


Apache Spark

arrastrar aquí

¡Correcto! ×

Destacar brevemente que 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 incluyo unos 2500 parches de 300 contribuidores.

Comprobar Reintentar Mostrar solución

Anterior 1 2 3 4

4/4
Recuerda

RECUERDA
 Nutch es una extensión de Lucene que permite
construir un motor de búsquedas web.

 Pig, Hive, Sqoop, Flume y Spark Core son frameworks


que nos ofrecen herramientas y facilidades para
trabajar sobre Hadoop.

 Spark 2.0 presenta grandes mejorías a Spark Core.


Recuerda

RECUERDA
 Hadoop nace en el momento en que Google necesita
urgentemente una solución con la que pueda continu
procesando datos al ritmo que el mercado le demand

 Hadoop corre sobre Linux.

 Hadoop está escrito en Java.

 Lucene es un proyecto Java orientado a la búsqueda e


indexación de texto.

También podría gustarte