Lectura - Integracion de Datos
Lectura - Integracion de Datos
Lectura - Integracion de Datos
Integracin de Datos
1/01/2016
Tecnologas Big Data
Tecnologas Big
tienen un ciclo de vida as como el anlisis
mismo que impone distintos requisitos de
procesamiento.
Captulo VI
Tecnologas Big Data
Las empresas que adoptan una moderna arquitectura de datos con Hadoop
deben reconciliar las realidades de la administracin de datos cuando traen datos
existentes y nuevos de diferentes plataformas bajo administracin.
A medida que Hadoop se despliega en entornos de datos y procesamiento
corporativos, el movimiento de datos y el linaje deben ser administrados de
manera centralizada y exhaustiva para proporcionar a la seguridad, gobernanza
de datos y equipos de administracin la supervisin necesaria para asegurar el
cumplimiento de los estndares corporativos de administracin de datos.
Hortonworks ofrece el Movimiento de Datos HDP y la Suite de Integracin (DMI
Suite) para proporcionar una gestin integral del movimiento de datos dentro y
fuera de Hadoop.
El Movimiento de Datos e Integracin de HDP (DMI Suite) aprovecha los siguientes proyectos de Apache:
Apache Falcon: Capa de gestin y abstraccin para simplificar y gestionar el movimiento de datos
en Hadoop
Apache Oozie: Workflow de Operaciones empresarial
Apache Sqoop: Transferencias de datos a granel entre sistemas Hadoop y RDBMS
Apache Flume: Servicio confiable y distribuido para recopilar, agregar y mover grandes cantidades
de datos de transmisin (Streaming)
Apache Kafla y Storm
Adems, el DMI Suite integra otras API de Apache para simplificar la creacin de procesos complejos,
validar la entrada del usuario y proporcionar administracin y monitoreo integrados.
Ms all de los componentes subyacentes, el DMI Suite proporciona potentes interfaces de usuario que
simplifican y agilizan la creacin y administracin de procesos complejos.
En Hortonworks Data Platform (HDP), la gestin general del ciclo de vida de los
datos en la plataforma se logra a travs de Apache Falcon. Falcon proporciona un
sistema de gestin de datos de extremo a extremo para la plataforma Hadoop.
Tambin es una parte esencial de la gestin de datos.
1. Falcon Access
Hay tres mtodos para acceder a Falcon:
Cada entidad se define por separado y luego se vinculan entre s para formar una
tubera de datos. Falcon proporciona polticas predefinidas para la replicacin de
datos, la retencin, el manejo tardo de datos, el reintento y la replicacin. Estas
polticas de ejemplo se personalizan fcilmente para satisfacer sus necesidades.
Estas entidades pueden ser reutilizadas muchas veces para definir polticas de
administracin de datos para trabajos de Oozie, trabajos de Spark, scripts Pig y
consultas de Hive. Por ejemplo, las polticas de gestin de datos de Falcon se
convierten en trabajos de coordinador de Oozie:
La funcionalidad de auditora y linaje es parte del gobierno de datos y no se trata en esta documentacin. Consulte la
Gua de gobierno de datos para obtener informacin sobre auditora y linaje.
Versiones
HDP 2.5.3: Soporta Falcon con Hive, pero vea todos los comentarios que
siguen para algunas limitaciones
Dimensionamiento
El ancho de banda del enlace entre clsteres debe ser un mnimo de 1 Gbps
Los conjuntos de datos deben ser 10 TB o menos por almacn de datos
Esto facilita la integracin de nuevos flujos de trabajo / tuberas, con soporte para
el manejo de datos tardos y las polticas de reintento. Le permite definir
fcilmente la relacin entre varios datos y elementos de procesamiento e
integrarlos con metastore / catlogo como Hive / HCatalog. Finalmente, tambin
le permite capturar informacin de linaje para feeds y procesos. En este tutorial,
vamos a crear un clster de Falcon mediante:
Tutorial:
1. CREATE A FALCON CLUSTER
Ingesta de Datos
Apache Sqoop
Sqoop es una herramienta diseada para transferir datos entre Hadoop y bases
de datos relacionales o unidades centrales.
Puede utilizar Sqoop para importar datos de un sistema de gestin de bases de
datos relacionales (RDBMS) como MySQL u Oracle o una unidad central en el
sistema de archivos distribuido Hadoop (HDFS) e inclusive con una Mainframe, el
proceso transforma los datos en MapReduce hacia hadoop y luego puedes
exportar los datos de nuevo en un RDBMS.
Argumentos de la funcin
Debe proporcionar los argumentos genricos -conf, -D y as sucesivamente
despus del nombre de la herramienta pero antes de cualquier argumento
especfico de la herramienta (como --connect). Tenga en cuenta que los
argumentos genricos de Hadoop son precedidos por un solo carcter de guin
(-), mientras que las herramientas especficas
Los argumentos comienzan con dos guiones (-), a menos que sean argumentos de
un solo carcter como -P
Common arguments:
Sqoop utiliza una arquitectura basada en conectores que admite plugins que
proporcionan conectividad a sistemas externos.
Utilizando conectores especializados que funcionan con controladores JDBC,
Sqoop se conecta con sistemas externos que han optimizado las instalaciones de
importacin y exportacin.
Los conectores tambin permiten que Sqoop se conecte con sistemas externos
que no admiten JDBC nativo.
Los conectores son componentes de complemento basados en la estructura de
extensin Sqoop y se pueden agregar a cualquier instalacin existente de Sqoop.
Puede ser necesario descargar e instalar controladores JDBC para que algunos
conectores funcionen correctamente. Puede obtener controladores JDBC desde la
distribucin del cliente para el sistema operativo del sistema externo o desde el
fabricante de su sistema externo. Para instalar, copie el controlador JDBC en el
directorio $ SQOOP_HOME/lib de la instalacin de Sqoop.
MySQL connector: Instructions for using this connector are available in the Apache
Sqoop documentation for MySQL JDBC Connector.
Netezza connector: See Section 3, Netezza Connector and the Apache Sqoop
documentation for Netezza Connector for more information.
Oracle JDBC connector: Instructions for using this connector are available in the
Apache Sqoop documentation for Data Connector for Oracle and Hadoop.
PostgreSQL connector: Instructions for using this connector are in the Apache
Sqoop documentation for PostgreSQL Connector.
Microsoft SQL Server connector: Instructions for using this connector are in the
Apache Sqoop documentation for Microsoft SQL Connector.
import
connect
Los archivos de opciones permiten especificar una nica opcin en varias lneas
utilizando el carcter de barra invertida al final de las lneas intermedias.
Tambin se admiten comentarios dentro de los archivos de opciones que
comienzan con el carcter de hash #.
##
import
Luis Antonio Chavez Olaya
Lder Tcnico de Gestin de Proyectos de Inteligencia de Negocios y Big Data
# Connect parameter
Tecnologas and value
Big DataPgina 15
Pgina 15
Tecnologas Big Data
Sqoop est diseado para importar tablas desde una base de datos a HDFS. Para
ello, debe especificar una cadena de conexin que describa cmo conectarse a la
base de datos.
La cadena de conexin es similar a una URL y se comunica a Sqoop con el
argumento --connect. Esto describe el servidor y la base de datos para
conectarse, tambin puede especificar el puerto. Por ejemplo:
Advertencia
Sqoop leer todo el contenido del archivo de contraseas y lo usar como una
contrasea.
Esto incluir cualquier carcter de espacio en blanco como los nuevos caracteres
de lnea que se agregan de forma predeterminada por la mayora de los editores
de texto. Debe asegurarse de que el archivo de contraseas slo contiene
caracteres que pertenecen a su contrasea.
Driver
Segn la documentacin de cada driver se debe utilizar la cadena de conexin,
Por ejemplo, para conectarse a una base de datos SQL Server, primero descargar
el controlador de microsoft.com e instalarlo en su path de lib para Sqoop.
A continuacin, ejecute Sqoop. Por ejemplo:
$ sqoop import --driver com.microsoft.jdbc.sqlserver.SQLServerDriver \
--connect <connect-string> ...
$ sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities
La importacin de una tabla completa es uno de los casos de uso ms comunes
con sqoop. El resultado de este comando ser un archivo CSV separado por
comas donde cada fila se almacenar en una sola lnea.
Espcecifica un Directorio.
--target-dir
--warehouse-dir
Utilice el parmetro --target-dir para especificar el directorio en HDFS donde
Sqoop debera importar sus datos. Por ejemplo, utilice el comando siguiente para
importar las ciudades de tabla en el directorio / etl / input / cities:
$ sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \--table cities \
--target-dir /etl/input/cities
Para especificar el directorio padre para todos los trabajos de Sqoop, utilice el
parmetro warehouse-dir
$ sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \--table cities \
--warehouse-dir /etl/input/
/user/jarcec/cities.
$ sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--as-sequencefile
Avro puede ser habilitado especificando el parmetro --as-avrodatafile :
$ sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--as-avrodatafile
Los formatos binarios tienen algunos beneficios sobre los de los archivos de texto.
En primer lugar, los formatos binarios son natural para almacenar valores binarios
como imgenes o documentos PDF. Tambin son ms adecuados para almacenar
datos de texto si los propios datos contienen caracteres que se utilizan de otra
manera como separadores en el archivo de texto. Junto con estos beneficios, hay
un inconveniente: para acceder a los datos binarios, es necesario implementar
funcionalidades adicionales o cargar bibliotecas especiales en su aplicacin.
base de datos admitida. Fuera de la caja, Sqoop tiene Soporte slo para MySQL y
PostgreSQL
Otra limitacin del modo directo es que no se admiten todos los parmetros.
Como las utilidades nativas normalmente producen salida de texto, los formatos
binarios como SequenceFile o Avro no funcionarn. Adems, los parmetros que
personalizan los caracteres de escape, la asignacin de tipos, los delimitadores de
columnas y filas o la cadena de sustitucin NULL pueden no ser compatibles en
todos los casos.
Importacin Incremental
Qu pasa si necesita mantener los datos importados en Hadoop en
sincronizacin con la tabla de origen en el lado de la base de datos relacional?
Mientras que usted podra obtener una nueva copia todos los das reimportando
todos los datos, que no sera ptimo. La cantidad de tiempo necesario para
importar los datos aumentara proporcionalmente a la cantidad de datos
adicionales aadidos a la tabla diariamente. Esto pondra una carga de
rendimiento innecesaria en su base de datos. Por qu reimportar datos que ya se
han importado? Para transferir deltas de datos, Sqoop ofrece la posibilidad de
realizar importaciones incrementales: append y lastmodified.
Sqoop importa filas donde la columna de la verificacin tiene un valor mayor que
el valor especificado en --last-value.
Puede aprovechar el metastore Sqoop incorporado que le permite guardar todos los parmetros
para su posterior reutilizacin. Puede crear un trabajo de importacin incremental simple con el
siguiente comando
El metastore Sqoop es una parte importante de Sqoop que te permite conservar tus definiciones
de jobs y ejecutarlas fcilmente en cualquier momento. Cada job guardado tiene un nombre lgico
que se utiliza para referenciar.
Y finalmente, tambin puede ver el contenido de las definiciones de trabajo guardadas utilizando
el parmetro --show, por ejemplo:
$ sqoop export \
--connect jdbc:mysql://localhost/company \
--username twheeler --password bigsecret \
--export-dir /mydata/recommender_output \
--table product_recommendations
La exportacin funciona de manera similar a la importacin, excepto los datos de
transferencias de exportacin en la otra direccin.
El parmetro --update-key se utiliza para instruir a Sqoop para actualizar las filas
existentes en lugar de insertar nuevas.
Este parmetro requiere una lista de columnas separadas por comas que debe
utilizarse para identificar de forma exclusiva una fila.
Se generar una consulta UPDATE con la clusula WHERE que incluir estas
columnas. Todas las otras columnas de la tabla se utilizarn en la parte SET de la
consulta. Por ejemplo, para una tabla que contiene cuatro columnas (c1, c2, c3 y
c4), llamar a Sqoop con la clave --update c2, c4 generar la siguiente consulta de
actualizacin:
$ sqoop export \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--table cities \
--update-key id \
--update-mode allowinsert
La capacidad de insertar de forma condicional una nueva fila o actualizar una ya
existente es una funcin de base de datos avanzada conocida como UPSERT. Esta
caracterstica no est disponible en todos los sistemas de bases de datos ni es
compatible con todos los conectores Sqoop.
Cada base de datos implementa la funcin Upsert un poco diferente. Con Oracle,
Sqoop utiliza una instruccin MERGE que especifica una condicin completa para
distinguir si se debe realizar una operacin de insercin o actualizacin. Con
MySQL, Sqoop utiliza una clusula ON DUPLICATE KEY UPDATE que no acepta
ninguna condicin especificada por el usuario; Decide si actualizar o insertar
basado en la clave nica de la tabla.
Esto, por supuesto, requiere una tabla de salida vaca, por lo que debe truncar
antes de ejecutar la exportacin. Si no puede hacerlo ya que sus aplicaciones
utilizan activamente la tabla, puede exportar los datos temporalmente a una tabla
diferente y, a continuacin, intercambiar las dos tablas una vez que la exportacin
de Sqoop tenga xito.
Despus de que su tabla ha sido importada en HDFS o se omite este paso, Sqoop
generar una secuencia de comandos de Hive que contiene una operacin CREATE
TABLE de definicin de sus columnas utilizando los tipos de Hive y una declaracin
LOAD DATA INPATH para mover los archivos de datos en el directorio de almacn de
Hive.
Cada tabla debe tener una clave principal de una sola columna o de --
autoreset-to-one-mapper opcin debe ser utilizada.
Apache Flume
Apache Flume es un servicio distribuido, confiable y disponible para recopilar,
agregar y mover de forma eficiente grandes cantidades de datos de Streaming en
el (HDFS).
Componentes
o Memoria
o Archivo
o Kafka
Flume proporciona una capacidad para crear flujos de mltiples saltos. Con
esto queremos decir que hay mltiples agentes de flujo que forman una
cadena conjunta para transferir datos desde el Sistema Fuente al Sistema
de Destino. Esta capacidad nos permite crear flujos complejos donde los
datos de mltiples Agentes de Flujo se consolidan mediante salto
intermedio de Agentes de Flujo y luego se almacenan en el Sistema de
Destino.
Configuracin de un Agente
La configuracin del agente de flujo se almacena en un archivo de configuracin
local. Este es un archivo de texto que sigue el formato de archivo de propiedades
de Java.
Las configuraciones para uno o ms agentes se pueden especificar en el mismo
archivo de configuracin.
El archivo de configuracin incluye las propiedades de cada fuente, canal y
resumidero en un agente y cmo se conectan entre s para formar flujos de datos.
Cada componente (fuente, sumidero o canal) del flujo tiene un nombre, un tipo y
un conjunto de propiedades que son especficos para el tipo y la instancia.
Por ejemplo, una fuente Avro necesita un nombre de host (o direccin IP) y un
nmero de puerto para recibir datos. Un canal de memoria puede tener un
tamao mximo de cola ("capacidad"), y un sumidero HDFS necesita conocer el
URI del sistema de archivos, la ruta para crear archivos, la frecuencia de rotacin
de archivos ("hdfs.rollInterval"), etc. Todos estos atributos de un componente
Debe establecerse en el archivo de propiedades del agente Flume de alojamiento.
# Describir el fregadero
a1.sinks.k1.type = registrador
Esta configuracin define un solo agente denominado a1. A1 tiene una fuente que
escucha los datos del puerto 44444, un canal que almacena datos de eventos en
memoria y un receptor que registra datos de eventos en la consola.
El archivo de configuracin nombra los distintos componentes, a continuacin,
describe sus tipos y parmetros de configuracin. Un archivo de configuracin
dado puede definir varios agentes nombrados; Cuando se lanza un proceso de
Flume determinado, se pasa un indicador que indica qu agente se ha de
manifestar.
Consolidacin
Esto puede lograrse en Flume configurando un nmero de agentes de primer nivel con un
fregadero avro, todos apuntando a una fuente avro de agente nico (nuevamente podra usar
las fuentes / sumideros de ahorro / clientes en tal escenario). Esta fuente en el agente de
segundo nivel consolida los eventos recibidos en un nico canal que es consumido por un
receptor hasta su destino final.
Multiplexar el flujo
Flume admite la multiplexin del flujo de eventos a uno o ms destinos. Esto se logra
definiendo un multiplexor de flujo que puede replicar o enrutar selectivamente un evento a
uno o ms canales.
El ejemplo anterior muestra una fuente del agente "foo" que ventila el flujo a tres canales
diferentes. Este ventilador puede ser replicado o multiplexado. En caso de replicar el flujo,
cada evento se enva a los tres canales. Para el caso de multiplexacin, un evento se
entrega a un subconjunto de canales disponibles cuando el atributo de un evento coincide
con un valor preconfigurado. Por ejemplo, si un atributo de evento llamado "txnType" se
establece en "cliente", entonces debera ir a channel1 y channel3, si es "vendor" entonces
debera ir a channel2, de lo contrario channel3. La asignacin se puede establecer en el
archivo de configuracin del agente.
Para definir el flujo dentro de un solo agente, es necesario vincular las fuentes y los
sumideros a travs de un canal. Necesita enumerar las fuentes, los sumideros y los canales
del agente dado y, a continuacin, apunte la fuente y el sumidero a un canal. Una instancia
de origen puede especificar varios canales, pero una instancia de receptor slo puede
especificar un canal. El formato es el siguiente:
# Lista de las fuentes, sumideros y canales para el agente
<Agente> .sources = <Fuente>
<Agente> .sinks = <Sink>
<Agente> .channels = <Channel1> <Canal 2>
Por ejemplo, un agente denominado agent_foo est leyendo datos de un cliente externo de
avro y envindolos a HDFS a travs de un canal de memoria. El archivo de configuracin
weblog.config podra verse as:
# Lista de las fuentes, sumideros y canales para el agente
agent_foo.sources = avro-appserver-src-1
agent_foo.sinks = hdfs-sink-1
agent_foo.channels = mem-channel-1
Esto har que los eventos fluyan de Avro-Appsrv-Source a hdfs-Cluster1-sink a travs del
canal de memoria mem-channel-1. Cuando el agente se inicia con el weblog.config como su
archivo de configuracin, instanciar ese flujo.
Despus de definir el flujo, debe establecer las propiedades de cada fuente, receptor y
canal. Esto se realiza en la misma moda de espacio de nombres jerrquico donde se
establece el tipo de componente y otros valores para las propiedades especficas de cada
componente:
# properties for sources
<Agent>.sources.<Source>.<someProperty> = <someValue>
El tipo (type) de propiedad debe ser establecido para cada componente de Flume para
entender qu tipo de objeto que necesita ser.
Cada fuente, receptor y tipo de canal tiene su propio conjunto de propiedades necesarias
para que funcione como se pretende, todos esos necesitan ser fijados.
En el ejemplo anterior, tenemos un flujo de Avro-Appsrv-Source a hdfs-Cluster1-sink a travs
del canal de memoria mem-channel-1. He aqu un ejemplo que muestra la configuracin de
cada uno de esos componentes:
agent_foo.sources = avro-AppSrv-source
agent_foo.sinks = hdfs-Cluster1-sink
agent_foo.channels = mem-channel-1
# properties of avro-AppSrv-source
agent_foo.sources.avro-AppSrv-source.type = avro
agent_foo.sources.avro-AppSrv-source.bind = localhost
agent_foo.sources.avro-AppSrv-source.port = 10000
# properties of mem-channel-1
agent_foo.channels.mem-channel-1.type = memory
agent_foo.channels.mem-channel-1.capacity = 1000
agent_foo.channels.mem-channel-1.transactionCapacity = 100
# properties of hdfs-Cluster1-sink
agent_foo.sinks.hdfs-Cluster1-sink.type = hdfs
agent_foo.sinks.hdfs-Cluster1-sink.hdfs.path = hdfs://namenode/flume/webdata
#...
Flume Sources
Avro Fuente
Escucha en el puerto Avro y recibe eventos de flujos externos de clientes Avro. Cuando el Flume agente se
empareja con el built-in Avro Sink en otro (hop anterior), puede crear topologas de coleccin en niveles. Las
propiedades requeridas estn en negrita
Channels
selector.type
selector.*
interceptors.*
Set this to true to enable SSL encryption. You must also specify a keystore
ssl false
and a keystore-password.
keystore This is the path to a Java keystore file. Required for SSL.
keystore-type JKS The type of the Java keystore. This can be JKS or PKCS12.
keystore-password The password for the Java keystore. Either this or the keystore-password-file
keystore-password- The location of the file which stores the password to the keystore. Either this
file or the keystore-password setting is required for SSL.
Format of the password file. This can be AES if password file was created
keystore-password-
TEXT using flue-ng password command. TEXT indicates the password is in
file-type
clear text.
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141
Thrift Source
Escucha en el puerto Thrift y recibe eventos de flujos externos de clientes Thrift. Cuando se empareja con el
ThriftSink incorporado en otro (salto anterior), el agente Flume, puede crear topologas de coleccin en
niveles. Las propiedades requeridas estn en negrita
channels
selector.type
selector.*
interceptors.*
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = thrift
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141
Exec Source
Exec fuente ejecuta un comando Unix dado en la puesta en marcha y espera que el proceso para producir
continuamente datos de salida estndar (stderr simplemente se descarta, a menos que la propiedad logStdErr
se establece en true). Si el proceso sale por cualquier razn, la fuente tambin sale y no producir ms
datos. Esto significa configuraciones tales como gato [nombre tubera] o cola -
F [archivo] se va a producir los resultados deseados donde como fecha probablemente no - los dos
primeros comandos producir flujos de datos en tanto que la ltima produce un evento nico y salidas.
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /var/log/secure
a1.sources.r1.channels = c1
Property
Default Description
Name
channels
Property
Default Description
Name
type The component type name, needs to be exec
command The command to execute
A shell invocation used to run the command. e.g. /bin/sh -c.
shell Required only for commands relying on shell features like
wildcards, back ticks, pipes etc.
restartThrottle 10000 Amount of time (in millis) to wait before attempting a restart
restart false Whether the executed cmd should be restarted if it dies
logStdErr false Whether the commands stderr should be logged
The max number of lines to read and send to the channel at a
batchSize 20
time
selector.type replicating replicating or multiplexing
selector.* Depends on the selector.type value
interceptors Space-separated list of interceptors
interceptors.*
Apache Kafka
Apache Kafka soporta una amplia gama de casos de uso como un sistema de
mensajera de uso general para escenarios en los que es importante el alto
rendimiento, la entrega fiable y la escalabilidad horizontal.
Kafka trabaja en combinacin con Apache Storm, Apache HBase y Apache Spark
para el anlisis en tiempo real y la renderizacin de datos en Streaming, los casos
de uso comn incluyen:
Topics
Productores
Consumidores
Brokers y Clusters
Performance
Las particiones de los topics proporcionan paralelismo dentro de un tipoc. Adems, como las
escrituras en una particin son secuenciales, el nmero de bsquedas de disco duro se
minimiza. Esto reduce la latencia y aumenta el rendimiento.
Los brokers de Kafka escalan y se desempean bien en parte porque los corredores no son
responsables de mantener un registro de los mensajes que se han consumido. El
consumidor es responsable de ese El mensaje.
En los sistemas de mensajera tradicionales como JMS, el Broker tiene esta responsabilidad,
lo que limita severamente la capacidad del sistema para escalar a medida que aumenta el
nmero de consumidores. El diseo de Kafka elimina el potencial de contrapresin cuando
los consumidores procesan mensajes a diferentes velocidades.
Para los consumidores Kafka, el seguimiento de los mensajes que se han consumido es
simplemente una cuestin de seguimiento del offset (compensacin) - el identificador
secuencial que identifica de forma nica un mensaje dentro de una particin. Debido a que
Kafka retiene todos los mensajes en el disco (durante una cantidad configurable de tiempo),
los consumidores pueden rebobinar o saltar a cualquier punto de una particin simplemente
proporcionando un valor de compensacin.
Arquitectura de KAFKA
Apache Storm
Storm es potente para escenarios que requieren anlisis continuos, predicciones en tiempo
real y monitoreo continuo de operaciones. Eliminando la necesidad de disponer de silos
dedicados, las empresas que utilizan Storm se benefician de ahorros de costes (al acceder a
los mismos conjuntos de datos que otros motores y aplicaciones del mismo cluster) con
niveles de seguridad, gobernanza de datos y operaciones (empleando los mismos recursos
informticos gestionados) por Yarn en Hadoop
Storm posee una topologa computacional de nodos que determina cmo las tuplas se
procesan, transforman, agregan, almacenan o vuelven a emitir a otros nodos de la topologa
para su procesamiento posterior.
Una tupla puede contener objetos de cualquier tipo.
Algunos Casos de Uso:
Mantenimiento predictivo
Web Fallos de aplicacin, Contenido personalizado
Problemas operativos
Brokers y Clusters
Spouts: Fuentes de stream en un clculo (por ejemplo, una API de Twitter, Log), se
puede trabajar alrededor de un Spout constantemente y ajustarlo a sua necesidades.
Bolt - Un servidor Kafka que gestiona la persistencia y la replicacin de los datos del
mensaje (es decir, el registro de confirmacin).
Los usuarios de Storm definen topologas sobre cmo procesar los datos cuando se emiten
desde una fuente, Cuando los datos entran, se procesa y los resultados se pasan a otros
Bolts o se almacenan en Hadoop.
TOPOLOGAS DE STORM
Hay dos tipos de nodos en un clster de Tormenta: el nodo maestro y los nodos de trabajo. El
nodo maestro ejecuta un daemon llamado "Nimbus" que es similar al "JobTracker" de
Hadoop. Nimbus es responsable de distribuir el cdigo alrededor del clster, asignar tareas a
las mquinas y supervisar las fallas.
Cada nodo de trabajo ejecuta un daemon llamado "Supervisor". Escucha el trabajo asignado
a su mquina y inicia y detiene los procesos de trabajo segn lo dictado por Nimbus. Cada
proceso de trabajo ejecuta un subconjunto de una topologa; Una topologa en ejecucin
consiste en muchos procesos de trabajo extendidos a travs de muchas mquinas.
KAFKA Y STORM
Una refinera de petrleo toma petrleo crudo, lo destila, lo procesa y lo refina en productos
terminados tiles, como el gas que compramos en la bomba.
Podemos pensar en Storm con Kafka como una refinera similar, pero los datos son la
entrada. Una refinera de datos en tiempo real convierte los datos de flujo en bruto en
productos de datos terminados, permitiendo nuevos casos de uso y modelos de negocio para
la empresa.
Estos son algunos usos tpicos para este proceso de procesamiento de tuberas:
Una topologa es una grfica de un clculo que contiene una red de nodos llamada "Spouts" y "Bolts".
En una topologa Storm, Spout es la fuente de datos Arroyos y un Bolt tiene la lgica de negocio para analizar y
procesar esos flujos.
A medida que los eventos fluyen a travs de estas etapas, el sistema puede
realizar un seguimiento del linaje de datos que permite el desglose de los eventos
agregados a sus componentes y puede utilizarse para el anlisis forense.
Apache NIFI
Puesto simplemente NiFi fue construido para automatizar el flujo de datos entre
sistemas.
Este espacio problemtico ha existido desde que las empresas tenan ms de un
sistema, donde algunos de los sistemas creaban datos y algunos de los sistemas
consuman datos. Los problemas y patrones de solucin que surgieron han sido
discutidos y articulados extensivamente.
A lo largo de los aos, el flujo de datos ha sido uno de esos males necesarios en
una arquitectura. Ahora bien, hay una serie de movimientos activos y en rpida
evolucin haciendo el flujo de datos mucho ms interesante y mucho ms vital
para el xito de una empresa determinada. estos incluyen cosas como SOA
service oriented architecture [ soa ] , el surgimiento de la api 2, internet de las
cosas , y big data
Servidor web
El propsito del servidor web es alojar el API de control y comando basado en
HTTP de NiFi.
Controlador de flujo
El controlador de flujo es el cerebro de la operacin. Proporciona subprocesos
para que las extensiones se ejecuten y administre la programacin de
cundo las extensiones reciben recursos para ejecutarse.
Extensiones
Hay varios tipos de extensiones de NiFi que se describen en otros
documentos. El punto clave aqu es que las extensiones operan y se ejecutan
dentro de la JVM.
Depsito FlowFile
El Repositorio de Flujo de Flujo es donde NiFi realiza un seguimiento del
estado de lo que sabe acerca de un Flujo dado que est actualmente activo.
El mtodo predeterminado es un registro persistente de escritura previa
situado en una particin de disco especificada.
Contenido Repositorio
El repositorio de contenido es donde viven los bytes de contenido real de un
determinado FlowFile. La implementacin del repositorio es enchufable. El
enfoque predeterminado es un mecanismo bastante simple, que almacena
bloques de datos en el sistema de archivos. Se puede especificar ms de una
ubicacin de almacenamiento del sistema de archivos para obtener
diferentes particiones fsicas activadas para reducir la contencin en
cualquier volumen individual.
Repositorio de Proveniencia
El repositorio de procedencias es donde se almacenan todos los datos de
eventos de procedencia. La construccin del repositorio se puede conectar
con la implementacin predeterminada para utilizar uno o ms volmenes de
disco fsico. Dentro de cada ubicacin, los datos del evento se indexan y se
pueden buscar como la metadata que es.