Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A1 - Mod2 - Unid2 - Herramientas de Obtención de Datos - Sqoop, Flume NiFi
A1 - Mod2 - Unid2 - Herramientas de Obtención de Datos - Sqoop, Flume NiFi
Infraestructura
Big Data
Unidad 02
Herramientas de
obtencion de datos:
Sqoop, Flume y NiFi
2. Herramientas de obtención de
2.7. ¿QUÉ ES NIFI?................................................................................................. 32
2.7.1. TERMINOLOGÍA....................................................................................... 32
05
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
2.1.3. Importaciones
Importaciones se realizan usando un Map-only.
Además, se genera un código fuente en Java por cada una de las tablas que se va impor-
tar. Lo compila y usa durante el proceso de importación. El fichero se mantiene, aunque
puede ser eliminado.
• Entre ellos se encuentra, import, export, listar el contenido de base de datos u • Los datos son almacenados en subdirectorios con el nombre de cada una de las ta-
otros. blas. El directorio de HDFS se establece mediante la propiedad --warehouse-dir,
siendo opcional dicha propiedad
• Con sqoop help [tool-name] nos permite obtener ayuda de los diferentes coman-
dos.
La opción import importa una sola tabla. Por defecto el delimitador de campos es la coma,
Un ejemplo es el listado de tablas de una base de datos en MySQL:
pero se puede cambiar con la propiedad --fields-terminated-by ‘caracter’.
06 07
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
• Avro: --as-avrodatafile.
• SequenceFile: --as-sequencefile.
Por otro lado, permite comprimir los datos utilizando diferentes códecs, snappy o BZip2.
Para ello se tiene que añadir -z y usar:
2.1.7. Importando tablas parcialmente
• Snappy: --compresion-codec org.apache.hadoop.io.compress.SnappyCodec
Otra opción que permite es:
• BZip2: --compresion-codec org.apache.hadoop.io.compress.BZip2Codec
• Seleccionar determinadas columnas de una tabla (--columns).
• El modo append (--incremental append ) Por otro lado, se puede utilizar una consulta SQL para el proceso de importación. Para
• La columna sobre la cual aplicarla (--check-column) este tipo de consultas es obligatorio añadir WHERE $CONDITIONS. Usar –split-by para
identificar el campo que permita determinar la división de los mappers.
• El último valor recuperado anteriormente (--last-value)
08 09
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
2.2.1. Conectividad a base de datos Sqoop 2 es la versión de nueva generación de Sqoop está diseñado para solucionar el
problema de ‘sólo cliente’, ya que está diseñado mediante arquitectura cliente-servidor. El
Genérica (JDBC): Compatible con cualquier base de datos. La sobrecarga impuesta por API se ha simplificado para desarrollar otros conectores de Sqoop.
JDBC puede limitar el rendimiento.
El cliente necesita sólo conectarse al servidor Sqoop. La conexión a la base de datos está
Método directo: Se puede mejorar el rendimiento a través del uso de herramientas espe- configurada en el servidor por el sistema administrador y para los usuarios finales no es
cíficas de la base de datos. Solo soportado en MySQL y Postgres (--direct) y no todas las necesario que dispongan de credenciales a la base de datos.
opciones de Sqoop soportan este método.
Cuenta además con auditorías centralizadas y mejor manejo de recursos. El servidor
2.2.2. Control de paralelismo Sqoop es accesible desde línea de comandos, API REST e interfaz web.
Por defecto, Sqoop importa los datos usando cuatro tareas Map. Aumentar este número
produce un aumento en la velocidad y cada map añade carga al servidor de base de datos.
Para cambiar este comportamiento se usa la opción -m.
Sqoop asume que todas las tablas tienen una clave primaria numérica parcialmente dis-
tribuida. Esa columna será utilizada para dividir los mappers y se puede usar una diferen-
te usando --split-by
10 11
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
3. Ejecutamos el comando sqoop para realizar la importación. Nos traemos toda la tabla
completa de categories aplicando paralelismo:
2. Revisar las tablas que se van a importar según los siguientes criterios:
Se puede observar que se han importado con éxito 58 registros de la tabla categories de
Mysql
12 13
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
4. Buscamos en HDFS la información que se ha importado de la tabla categories: 7. A continuación, importaremos de la tabla categories de Mysql solo cuando category_
id > 58 y que se verifque que la agregación sea incrementalmente:
6. Podemos revisar la estructura de la tabla categories en Mysql para saber los campos
que queramos utilizar si queremos realizar una importación filtrando por un campo :
14 15
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Una vez importado visualizamos la información en la partición creada: 9. La importación será incremental y que cumpla la condición que order_id > 50:
8. Queremos importar la tabla orders, pero sólo trayéndonos algunos campos de la ta-
bla. Para ello tenemos que seleccionar cual queremos. Previamente visualizamos la
descripción en Mysql para estar seguro que campos selecionar y su nombre correcto
de cada uno de ellos:
16 17
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Se puede confirmar que se han importado 68883 registros de la tabla orders con las con- 11. Elegimos una partición para visualizar su contenido por pantalla (filtro more):
diciones incluidas en la importación:
12. Se quiere en este punto, importar la tabla customers a un directorio que le indique-
mos (/tmp/sqoop). Para eso primero ver si existe el directorio y en caso que no exis-
tiese crearlo:
18 19
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
13. Verifiquemos antes de importar los campos que queremos elegir de la tabla:
15. Podemos comprobar que se han importado con éxito 12435 registros de la tabla cus-
tomers de mysql:
14. La importación será solo de los campos customer_fname, customer_lname y custo- 16. Verifiquemos que la información se importado en el directorio indicado /tmp/sqoop
mer_street al directorio destino /tmp/sqoop : y seleccionamos una partición para ver los 3 campos seleccionados con información
de cada uno de ellos:
20 21
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Flume recoge datos usando agentes configurables que pueden recibir datos de múltiples
orígenes, incluyendo otros afentes. En despliegues de alto rendimiento usan múltiples ni-
veles para la escalabilidad y la confiabilidad. Flume soporta la inspección y modificación
de datos al vuelo.
2.4.2. Componentes
Source: Recibe los eventos de un actor externo, el cual los genera.
Channel: Buffer de eventos del source que se mantiene hasta que es consumido por el
sink.
22 23
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
• Netcat: Captura cualquier dato escrito a un socket desde un puerto TCP arbitrario.
• Exec: Ejecuta un programa UNIX y lee los eventos desde la salida estándar.
2.4.5. Sinks
• Null: Descarta todos los eventos (equivalente a /dev/null).
24 25
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
• Replicación: replicación de los eventos en todos los canales, es decir, todos los
eventos son almacenados en todos los canales asociados. Utilizado por defecto.
26 27
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Los serializadores de evento controlan el formato de salida de los datos del evento. El polling source es preguntado periódicamente para la obtención de los datos y el
event-driven source envía los eventos en bloques, sin necesidad de que sean pedidos
• El serializador está asociado al sink en el fichero de configuración. por el agente.
28 29
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
2.6.4. Configuración
Flume dispone de una serie de interceptores, como: 2.6.6. Componentes a medida
• Timestamp: añade en la cabecera la fecha de cada uno de los eventos. Interfaz Channel, aunque típicamente se extiende de la clase abstracta AbstractChannel
para implementar un sink personalizado se debe implementar la interfaz Sink, aunque
• Host: añade en la cabecera el nombre la máquina. típicamente se extiende de la clase abstracta AbstractSink.
• Regex Filterting: filtra los eventos donde el cuerpo del evento cumple el patrón. Es mucho más común tener que implementar interceptores.
• Regex Extractor: extrae los grupos definidos en una expresión regular sobre el • Todos los interceptores implementan la interfaz Interceptor.
body del evento, añadiéndolos a la cabecera.
• Cada evento es incluido en el método intercept(Event).
Para configurar el interceptor personalizado, se realiza de manera análoga a un intercep-
tor por defecto. Lo que varía es el valor del atributo type. • Inspecciona, modifica o filtra el evento.
30 31
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
2.7. ¿Qué es NiFi? • Relationship(Relación) : cada procesador tiene cero o más relaciones y estas re-
laciones se nombran para indicar el resultado de procesar un FlowFile. Cuando
Apache NiFi es un sistema de flujo de datos que incluye gráficos de enrutamiento de un procesador ha terminado de procesar un FlowFile lo enrutará a una de las re-
datos, transformación y lógica. NiFi tiene una interfaz de usuario basada en web para el laciones. Luego, un DFM puede conectar cada una de estas relaciones con otros
diseño, control, retroalimentación y monitoreo de flujos de datos.. Es altamente configura- componentes para especificar dónde debe ir el FlowFile a continuación en cada
ble y proporciona el detalle para todos los datos recibidos, bifurcados, unidos, clonados, resultado de procesamiento.
modificados, enviados y abandonados al alcanzar su estado final configurado.
• Connection(Conexión): un DFM crea un flujo de datos automatizado y conectan-
do los componentes a través de Conexiones. Cada conexión consta de una o más
relaciones. Cuando un FlowFile se transfiere a una relación en particular, se agrega
a la cola FlowFile que pertenece a la conexión asociada.
• filename: un nombre de archivo legible que se puede usar al almacenar los • Remote Process Group (Grupo de Procesadores Remotos): los grupos de pro-
datos en el disco o en un servicio externo cesos remotos suelen ser la forma más fácil de lograr esto si se transfieren datos a
otra instancia de NiFi.
• Path: la ruta es un un valor estructurado jerárquicamente que se puede utilizar al
almacenar datos en el disco o en un servicio externo para que los datos no se alma- • Bulletin(Boletin): Proporcionan una cantidad significativa de monitoreo y retroa-
cenen en un solo directorio limentación sobre el estado actual de la aplicación, estadísticas continuas y el es-
tado actual proporcionado para cada componente.
• Processor(Procesador): el procesador es el componente NiFi que se utiliza para
escuchar los datos entrantes, extraer y publicar datos de fuentes externas y enru- • Template(plantilla): NiFi permite que los DFM seleccionen todo o una parte del
tar, transformar o extraer información de FlowFiles. flujo de datos para crear una plantilla para luego darle un nombre, así varios com-
ponentes pueden combinarse para formar un bloque de construcción más grande
a partir del cual crear un flujo de datos. Se pueden exportar como XML e importar
a otra instancia de NiFi.
32 33
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
• flow.xml.gz: Archivo donde se escribe online todo lo que se usa en el lienzo sobre
NiFi User Interface. Este archivo se encuentra en la ruta nifi/confdirectorio de Procesador: es responsable de la entrada, salida, enrutamiento y manipulación de
forma predeterminada. Se puede utilizar este archivo para revertir la configuración datos. Cuando se arrastra al lienzo se presenta un cuadro de diálogo para elegir el tipo de
del flujo y para ello se debe detener NiFi y reemplazarlo con una copia de seguri- Procesador:
dad deseada, luego reinicie NiFi.
Cuando un DFM navega a la interfaz de usuario por primera vez, se proporciona un lienzo
en blanco en el que se puede construir un flujo de datos:
Luego de elegir el procesador, haciendo click derecho se dispondrán opciones según los
2.7.3. Construyendo un DataFlow privilegios que le asignen.
Para construir un DataFlow arrastre los componentes desde la barra de herramientas al
lienzo, configure los componentes y conecte los componentes entre sí.
34 35
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
36 37
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Embudo: se utilizan para combinar los datos de muchas conexiones en una sola
conexión. Ahorra espacio al dibujando solo una conexión en el lienzo en vez de crear mu-
chas conexiones con el mismo destino. Las conexiones se configuran con FlowFile Priori-
tizers y brinda la capacidad de priorizar todos los datos en una única conexión.
Plantilla: se pueden crear plantillas a partir de secciones del flujo o se pueden im-
portar desde otros flujos de datos. Estas plantillas proporcionan bloques de construcción
más grandes para crear un flujo complejo rápidamente.
GenerateFlowFile: Este procesador crea FlowFiles con datos aleatorios o contenido per-
sonalizado. Es útil para pruebas de carga, configuración y simulación.
38 39
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Paso 4.- Luego de configurar los procesadores relacionarlos arrastrando la flecha existen-
te en el procesador GenerateFlowFile hasta el procesador LogATtribute. Dar adicionar
en la pantalla que se mostrará de creación de conexión.
40 41
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Paso 5.- Ahora necesitamos iniciar el Flujo de Datos. Para esto debe cumplir las siguien-
tes condiciones:
• Todas las relaciones definidas para el componente deben estar conectadas a otro
componente o terminar automáticamente.
Los componentes se pueden iniciar seleccionando todos los componentes para iniciar y
luego haciendo clic en el botón “Inicio” ( ) en la paleta Operar(Operate) o haciendo clic
con el botón derecho en un solo componente y eligiendo Iniciar en el menú contextual.
Para visualizar de donde provienen los datos se selecciona View data provenance:
42 43
CEUPE Módulo. Infraestructura Big Data CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
NIFI mantienen un nivel muy detallado sobre cada dato que ingesta almacenarlos en el Revisión del historial de la cola de conexión entre procesadores:
repositorio de procedencia de NIFI:
Indicador de boletín: cuando un procesador registra que ha ocurrido algún evento, ge-
nera un boletín para notificar a quienes están monitoreando NiFi a través de la interfaz
de usuario.
44 45
CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi
Para determinar qué sucedió con un objeto de datos en particular (FlowFile). La página
de procedencia de datos de NiFi (Data Provenance) proporciona esa información. Debido
a que NiFi registra e indexa los detalles de la procedencia de los datos a medida que los
objetos fluyen a través del sistema, los usuarios pueden realizar búsquedas, solucionar
problemas y evaluar cosas como el cumplimiento y la optimización del flujo de datos en
tiempo real. NiFi por defecto actualiza esta información cada cinco minutos, pero eso es
configurable. Desde el menú global se puede acceder a Data Provenance:
CEUPE
Centro Europeo de Postgrado
La manera gráfica de poder acceder al detalle es por medio de la selección del icono del
Web
linaje por el que se podrá ver su evolución y el estado de un evento en el tiempo en www.ceupe.com
cada una de sus etapas anteriores en el flujo de datos.
E-mail
[email protected]
46