Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

Módulo

Infraestructura
Big Data
Unidad 02
Herramientas de
obtencion de datos:
Sqoop, Flume y NiFi

Autor: Fernando Agudo


Módulo
Infraestructura
Big Data
Unidad 02
Herramientas de
obtención de datos:
Sqoop, Flume y Nifi
2. HERRAMIENTAS DE OBTENCIÓN DE DATOS: SQOOP, FLUME Y NIFI................ 05
2.1. ¿QUÉ ES APACHE SQOOP?.............................................................................. 05
2.1.1. ¿CÓMO FUNCIONA?............................................................................... 05
2.1.2. SINTAXIS BÁSICA..................................................................................... 06
2.1.3. IMPORTACIONES..................................................................................... 07
2.1.4. FORMATO DE FICHERO Y COMPRESIÓN.................................................. 08
2.1.5. IMPORTACIÓN INCREMENTAL.................................................................. 08
2.1.6. EXPORTACIÓN A RDBMS......................................................................... 09
2.1.7. IMPORTANDO TABLAS PARCIALMENTE.................................................... 09
2.1.8. USANDO CONSULTAS EN LA IMPORTACIÓN ........................................... 09
2.2. RENDIMIENTO DE SQOOP............................................................................... 10
2.2.1. CONECTIVIDAD A BASE DE DATOS.......................................................... 10
2.2.2. CONTROL DE PARALELISMO.................................................................... 10
2.2.3. LIMITACIONES SQOOP............................................................................. 10
2.3. SQOOP 2. ARQUITECTURA.............................................................................. 11
2.3.1. EJERCICIO: IMPORTACIÓN DE DATOS CON SQOOP................................. 11
2.4. ¿QUÉ ES FLUME?............................................................................................ 22
2.4.1. ESTRUCTURA DE FLUME. COMPONENTES............................................... 23
2.4.2. COMPONENTES....................................................................................... 23
2.4.3. FLUJO DE DATOS .................................................................................... 24
2.4.4. SOURCE................................................................................................... 24
2.4.5. SINKS....................................................................................................... 24
2.4.6. CHANNELS.............................................................................................. 25
2.4.7. FICHERO DE CONFIGURACIÓN................................................................ 25
2.5. OTROS COMPONENTES................................................................................... 27
2.5.1. EL CHANNEL SELECTOR........................................................................... 27
2.5.2. CHANNEL SELECTOR REPLICATING.......................................................... 27
2.5.3. CHANNEL SELECTOR MULTIPLEXING........................................................ 28
2.6. INTERCEPTORES.............................................................................................. 29
2.6.1. PERSONALIZACIÓN DEL FLUJO DE DATOS................................................ 29
2.6.2. SOURCE PERSONALIZADO....................................................................... 29
2.6.3. FUNCIONAMIENTO.................................................................................. 29
2.6.4. CONFIGURACIÓN.................................................................................... 30
2.6.5. SERIALIZADORES DE EVENTOS................................................................. 31
2.6.6. COMPONENTES A MEDIDA...................................................................... 31
CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi

2. Herramientas de obtención de
2.7. ¿QUÉ ES NIFI?................................................................................................. 32
2.7.1. TERMINOLOGÍA....................................................................................... 32

datos: Sqoop, Flume y NiFi


2.7.2. INTERFAZ DE USUARIO DE NIFI................................................................. 34
2.7.3. CONSTRUYENDO UN DATAFLOW............................................................ 34
2.7.4. CREACIÓN DE UN FLUJO DE DATOS........................................................ 39

“Sqoop es un proyecto de código libre desarrollado inicialmente por


Cloudera. El nombre es la contracción de SQL-to-Hadoop. Sqoop
intercambia datos entre una base de datos y HDFS.”

2.1. ¿Qué es Apache Sqoop?


Proyecto de código libre de Apache desarrollado inicialmente por Cloudera. El nombre
es la contracción de SQL-to-Hadoop. Sqoop intercambia datos entre una base de datos y
HDFS. Puede importar todas las tablas, una sola tabla, o una parte de una tabla a HDFS.
Los datos importados utilizando un delimitador de texto, SequenceFile o Avro. Sqoop
permite la exportación de HDFS a base de datos.

2.1.1. ¿Cómo funciona?


Sqoop es una aplicación cliente que importa datos usando solo la fase map de un Job. Una
importación básica tiene tres pasos:

• Examinar los detalles de la tabla.

• Crear y ejecutar el job en el clúster.

• Recuperar los registros de la tabla y escribirlos en HDFS.

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.

Sqoop empieza examinando la tabla a importar:

• Determina la clave primaria, si es posible.

• Ejecuta una consulta para conocer los registros a importar.

• Divide el resultado de la consulta en el número de mappers.

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.

Importación de una base datos

• La opción import-all-tables importa una base de datos entera.


2.1.2. Sintaxis básica
• Almacenado en un directorio HDFS donde los ficheros se encuentran separados
Sqoop es una utilidad de línea de comandos con múltiples subcomandos, llamados tools: por comas.

• 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 sintaxis básica de invocación es:

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

2.1.4. Formato de fichero y compresión 2.1.6. Exportación a RDBMS


En relación al formato del fichero se puede utilizar Avro o SequenceFile (por defecto si no El comando export permite insertar en batch un directorio de HDFS a un sistema de base
se indica nada se almacena en formato de texto): de datos relacional. La tabla relacional destino tiene que existir con anterioridad.

• 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).

• Incluir cláusulas where a la importación.

2.1.8. Usando consultas en la importación

2.1.5. Importación Incremental


Sqoop ofrece un mecanismo que permite recuperar sólo los nuevos datos en el caso de
una reimportación de datos. Para ello, se debe añadir:

• 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. Rendimiento de Sqoop 2.3. Sqoop 2. Arquitectura

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

2.2.3. Limitaciones Sqoop


Sqoop es estable y ha sido usado con éxito en producción muchos años, pero tiene sus
limitaciones:

• Requiere conectividad entre el RDBMS y el cliente.

• Requiere conectividad del clúster con el cliente.

• Requiere que el usuario especifique el usuario y password del RDBMS.

• Dificultad en la integración de la interfaz de línea de comandos con aplicaciones


externas.
2.3.1. Ejercicio: Importación de datos con Sqoop
• Problemas con base de datos NoSQL.
En este ejercicio realizaremos una Importación de datos con Sqoop.
►Vídeo: Demo introducción Sqoop1
1. Realizar la importación a HDFS de los datos almacenados en una base de datos Mysql
siguiendo las siguientes instrucciones:

1 Ver vídeo en la sección Material de Estudio de tu Área de Contenido

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:

5. Visualizamos la información de la partición que se ha creado:

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:

10. Buscamos en HDFS la información que se ha importado de la tabla orders y podemos


observar que se han creado 4 particiones:

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. ¿Qué es Flume?


Apache Flume es un sistema de alto rendimiento que permite la extracción de datos. El
nombre proviene del caso de uso original que permitía ingestar datis en casi tiempo real. 2.4.1. Estructura de Flume. Componentes
Ahora es usado para recoger cualquier evento de datos en streaming. Permite agregación
de datos de múltiples orígenes dentro de HDFS. Proporciona escalabilidad horizontal, Un evento es la unidad fundamental de datos en Flume. Consiste en un body (carga útil)
extensibilidad y confiabilidad. y en una colección de cabeceras (metadatos). Las cabeceras consisten en pares nombre-
valor y son principalmente usadas para direccionar la salida.

2.4.2. Componentes
Source: Recibe los eventos de un actor externo, el cual los genera.

Sink: Envía un evento al destinatario.

Channel: Buffer de eventos del source que se mantiene hasta que es consumido por el
sink.

Agent: Proceso Java que configura y define el source, channel y 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

2.4.3. Flujo de datos 2.4.6. Channels


El diagrama ilustra como un syslog almacena los datos en HDFS: • Memory: Almacena los eventos en la memoria RAM de la máquina es extremada-
mente rápido, pero no es confiable (memoria es volátil).
1. El mensaje es registrado en el servidor donde está ejecutando el demonio de syslog.
• File: Almacena los eventos en el disco local de la máquina, es más lento que la
2. El agente flume configurado con el origen de datos de syslog recibe los eventos. RAM, pero más confiable (los datos son escritos en disco).
3. El origen inserta los eventos en el canal, donde son almacenados en memoria. • JDBC: Almacena los eventos en una tabla de la base de datos usando JDBC, es
más lento que el file channel.
4. El sink consume los datos desde el canal y los escribe en HDFS
A pesar de que lo anterior es lo más común, también podemos encontrar disponibles más
sources, sinks o channels en la librería de Flume. Todo ello está disponible en la web de
Apache Flume.

2.4.7. Fichero de configuración


El agente de Flume es configurado a través de un fichero de propiedades de Java. Múlti-
ples agentes pueden ser configurados con un mismo fichero. El fichero de configuración
2.4.4. Source usa una referencia jerárquica: cada componente tiene asignado un id definido por el usua-
rio y es usado en los nombres de las propiedades adicionales.
• Syslog: Captura mensajes de un demonio syslog de UNIX usando la red.

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

• Spooldir: Extrae los eventos de un fichero localizado en un directorio (local) espe-


cífico.

• HTTP Source: Recibe eventos desde peticiones HTTP.

2.4.5. Sinks
• Null: Descarta todos los eventos (equivalente a /dev/null).

• Logger: Registro de eventos a nivel INFO usando SLF4J.


Las propiedades varían según el tipo del componente (source, channel, y sink). Algunos
• IRC: Envía eventos a un canal específico de comunicación entre usuarios. de ellos disponen de subtipos (por ejemplo, netcat source o syslog source).

• HDFS: Escribe los eventos a un fichero en un directorio específico en HDFS.

• HBaseSink: Almacena los eventos en HBase.

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

2.5. Otros componentes

2.5.1. El channel selector


El channel selector permite a un source conectarse a múltiples canales.

Además, se pueden configurar otros elementos de la salida:

• Usar una propiedad de la cabecera para el directorio del sink.

• Añadir un códec de compresión para los datos.

• Añadir sufijos a los ficheros.

• Cambiar el tipo de ficheros utilizado.


Flume provee dos mecanismos diferentes:

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

• Multiplexación: elección del canal según el valor de una propiedad incluida en la


cabecera del evento.

El procedimiento típico de ejecución es por línea de comandos. El argumento –name debe


coincidir con el nombre del agente definido en el fichero de configuración. Se debe de
configurar el nivel del log para visualizar los mensajes por pantalla.

2.5.2. Channel Selector Replicating


Replica los eventos en todos los canales. Podemos seleccionar canales como opcionales,
de tal forma que no fallen si no se produce la replicación. Es decir, si los eventos enviados
a un canal opcional dan error, el agente flume sigue funcionando correctamente.

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

2.5.3. Channel Selector Multiplexing 2.6. Interceptores


Permite multiplexar los eventos en distintos canales según una propiedad de la cabecera
del evento y permite utilizar canales por defecto para no perder eventos, si no se produce 2.6.1. Personalización del flujo de datos
el mapping. Flume proporciona un conjunto de sources, sinks y channels, aunque es posible realizar
nuestras propias implementaciones. Se puede personalizar el flujo de datos de flume y
se puede inspeccionar, modificar o transformar un evento de datos. Además, se puede
controlar el formato del mensaje escrito en el destino. Ejemplo de estos elementos son los
llamados interceptores o serializadores de eventos.

2.6.2. Source Personalizado


Para implementar source personalizados se debe implementar la interfaz Source. Aunque
típicamente se extiende de una clase abstracta base, disponemos de dos como son polling
y event-driven sources.

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.

• No todos los sinks soportan serializadores. 2.6.3. Funcionamiento


• Por ejemplo, especificar un serializador para un sink HDFS. Los interceptores permiten la inspección y modificación de eventos en el momento de
procesamiento.
• En este caso sería Text, pero si necesitamos un formato Avro se puede indicar
(avro_event). • Utilizado para filtrar o transformar eventos.

• Son ejecutados cuando los datos se encuentran entre el source y el channel.

• Múltiples interceptores pueden ser concatenados en una secuencia.

• El coordinador se denomina Channel Processor.

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.5. Serializadores de Eventos


Los serializadores de evento controlan el formato de salida de los datos del evento. Está
asociado al sink en el fichero de configuración y no todos los sinks soportan serializado-
res. Por ejemplo, especificar un serializador para un sink HDFS y en este caso indicamos
formato Avro por defecto sería Text.

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.

• Además, se puede procesar en batch con el método intercept(List<Event>).

• También, se tiene que crear una clase que implemente Interceptor.Builder.

• Normalmente implementado como clase estática interna.

• Requiere un constructor por defecto sin parámetros.

• Debe instanciar, configurar y recuperar tu interceptor.

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.

• Controller Service(Servicio de Sevicio): Los servicios de controlador son puntos


de extensión que, después de ser agregados y configurados por un DFM en la in-
http://nifi.apache.org/ terfaz de usuario, se iniciarán cuando NiFi se inicie y proporcionarán información
para que la utilicen otros componentes como procesadores u otros servicios de
2.7.1. Terminología controlador.
• DataFlow Manager(DFM): usuario de NiFi que tiene permisos para agregar, eli- • Reporting Task (Informes): son informes estadísticos que reportan sobre lo que
minar y modificar componentes de un flujo de datos de NiFi. está sucediendo en la instancia de NiFi.
• FlowFile: FlowFile representa una sola pieza de datos en NiFi y se compone de dos • Funnel(Embudo) : componente de NiFi que se utiliza para combinar los datos de
componentes: varias conexiones en una sola conexión.
• Contenido de FlowFile: son datos representados por FlowFile. • Process Group (Grupo de Procesadores): NiFi permite que varios componentes,
como procesadores, se agrupen en un grupo de procesos.
• Atributos de FlowFile : son características que brindan información o contexto
sobre los datos y están formados por pares clave-valor • Port(puerto): por medio de los puertos los flujos de datos que se construyen utili-
zando uno o más grupos de procesos se conectan a otros componentes del flujo de
• Atributos estándar de los FlowFiles::
datos. Un DFM puede agregar cualquier cantidad de puertos de entrada y puertos
• uuid: Un identificador universalmente único. de salida a un grupo de procesos.

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

2.7.2. Interfaz de usuario de NiFi


La interfaz de usuario de NiFi proporciona mecanismos para crear flujos de datos au-
tomatizados, así como para visualizar, editar, monitorear y administrar esos flujos
de datos. La siguiente dirección web predeterminada será donde se inicia la interfaz:
http://<hostname>:8080/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í.

Agregar componentes al lienzo

Componentes de la barra herramientas:

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

Puerto de entrada: transfieren datos a un grupo de procesos. Estos puertos deben


tener nombres únicos. Grupo de procesos remotos: aparecen y se comportan de manera similar a los
grupos de procesos y hace referencia a una instancia remota de NiFi. En vez de ponerle
un nombre se indica la URL de la instancia remota de NiFi. Si la NiFi remota es una ins-
tancia en clúster, es recomendable agregar dos o más URL de nodos de clúster para que
Puerto de salida: transfieren datos desde un grupo de procesos a destinos fuera
se pueda realizar una conexión inicial incluso si uno de los nodos no está disponible. Se
del grupo de procesos. Estos puertos deben tener nombres únicos.
pueden especificar varias URL en formato separado por comas.

Grupo de procesos: se utilizan para agrupar lógicamente un conjunto de compo-


nentes para que el flujo de datos sea más fácil de entender y mantener que se anida dentro
de ese grupo principal.

Las opciones disponibles varían según los privilegios que se le asignen.

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.

2.7.4. Creación de un Flujo de datos


Este flujo de datos consta de 2 procesadores con su respectiva configuración:

Paso 1.- Arrastrar los siguientes procesadores al lienzo: GenerateFlowFile y LogAttri-


bute.

GenerateFlowFile: Este procesador crea FlowFiles con datos aleatorios o contenido per-
sonalizado. Es útil para pruebas de carga, configuración y simulación.

Etiqueta: las etiquetas se utilizan para proporcionar documentación a partes de un


flujo de datos. El texto de la etiqueta se puede agregar haciendo clic derecho en la etique-
ta y seleccionando Configure.

Versiones de componentes: tiene acceso a información sobre la versión de sus proce-


sadores, Servicios de controlador y Tareas de generación de informes. Esto es especial-
mente útil cuando está trabajando dentro de un entorno en clúster con varias instancias
de NiFi que ejecutan diferentes versiones de un componente o si ha actualizado a una
versión más nueva de un procesador. LogAtrribute : emite atributos del FlowFile en el nivel de registro especificado.

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

Componentes en el lienzo: Paso 3.- Configuración de procesador LogAttribute:

Seleccionar en terminar relaciones automáticamente la casilla de success. Con esto ter-


minará el FlowFiles después que este procesador lo haya procesado con éxito.

Además seleccionar en Nivel de Boletin en Información (Bulletin Level) la opción INFO


para que cuando el flujo de datos se esté ejecutando este procesador mostrará el icono el
boletín y con esto el usuario puede pasar el mouse sobre el boletín y ver los atributos que
el procesador está registrando.
Paso 2.- Configuración de procesador GenerateFlowFile:

En la pestaña Programación (Scheduler), establezca Programación de ejecución (Run


Schedule) en: 5 segundos.

En la pestaña Propiedades (properties), establezca Tamaño de archivo (file size) en: 10 KB

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:

• La configuración del componente debe ser válida.

• Todas las relaciones definidas para el componente deben estar conectadas a otro
componente o terminar automáticamente.

• El componente debe detenerse.

• El componente debe estar habilitado.

• El componente no debe tener tareas activas.

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.

Se puede observar el boletín en color gris.

En el menú principal se puede seleccionar el Resumen (Summary) para poder informa-


ción sobre todos los componentes existentes en el lienzo:

44 45
CEUPE Módulo. Infraestructura Big Data
Centro Europeo de Postgrado Unidad 02. Herramientas de obtención de datos: Sqoop, Flume y NiFi

Paso 5.- Visualización de la procedencia de los datos - Linaje del dato

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:

Se accede al detalle de la proveniencia del dato seleccionando el icono de la izquierda

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

También podría gustarte