Los datos de registro con vertedero en hdfs

Algunos de los datos que acaba en el sistema de archivos distribuido Hadoop (HDFS) podría aterrizar allí a través de las operaciones de carga de base de datos u otros tipos de procesos por lotes, pero lo que si desea capturar los datos que fluye en los flujos de datos de alto rendimiento, tales como los datos de registro de aplicación? Apache Canal de flujo es la manera estándar actual para hacerlo fácil, eficiente y segura.

Apache Flume, otro proyecto de nivel superior de la Apache Software Foundation, es un sistema distribuido para agregar y mover grandes cantidades de transmisión de datos de diferentes fuentes a un almacén de datos centralizada.

Dicho de otra manera, Canal de flujo está diseñado para la ingestión continua de datos en HDFS. Los datos pueden ser de cualquier tipo de datos, pero Flume es particularmente bien adaptado a la manipulación de los datos de registro, tales como los datos de registro de los servidores web. Unidades de los datos que se llaman procesos Flume eventos- un ejemplo de un evento es una entrada de registro.

Para entender cómo funciona Canal de flujo dentro de un cluster Hadoop, es necesario saber que Flume se ejecuta como uno o más agentes, y que cada agente tiene tres componentes conectables: fuentes, canales y sumideros:

  • Fuentes recuperar los datos y enviarlo a los canales.

  • canales mantener las colas de datos y servir como conductos entre las fuentes y sumideros, que es útil cuando la velocidad de flujo entrante excede la velocidad de flujo saliente.

  • fregaderos datos de proceso que fue tomado de canales y lo entregan a un destino, como HDFS.

Video: CPCO7 - Innovacion - Cloudera: Una Alternativa para el análisis de datos no Estructurados

Un agente debe tener por lo menos una de cada componente para funcionar, y cada agente está contenido dentro de su propia instancia de la máquina virtual de Java (JVM).

Un evento que se graba en un canal por una fuente no se elimina de ese canal hasta que un fregadero lo elimina por medio de una transacción. Si se produce un fallo en la red, canales mantienen sus eventos en cola hasta los sumideros pueden escribirlos en el clúster. Un canal en memoria puede procesar eventos de forma rápida, pero es volátil y no se puede recuperar, mientras que un canal basado en archivos ofrece persistencia y puede ser recuperado en caso de fallo.

Cada agente puede tener varias fuentes, canales y sumideros, y aunque una fuente puede escribir en muchos canales, un fregadero puede adquirir datos de un solo canal.

Un agente es simplemente una JVM que ejecuta Canal de flujo, y los sumideros para cada nodo agente en el cluster Hadoop enviar datos a nodos colector, el que la agregación de los datos de muchos agentes antes de escribirla en HDFS, donde puede ser analizada por otras herramientas de Hadoop.

Los agentes pueden ser encadenados juntos para que el fregadero de un agente envía datos a la fuente de otro agente. Avro, marco de llamada y serialización a distancia de Apache, es la forma habitual de envío de datos a través de una red con vertedero, ya que sirve como una herramienta útil para la serialización eficiente o transformación de datos en un formato binario compacto.

En el contexto del Canal de flujo, la compatibilidad es importante: Un evento Avro requiere una fuente de Avro, por ejemplo, y un fregadero debe entregar eventos que sean apropiados al destino.

Lo que hace esta gran cadena de fuentes, canales y sumideros de trabajo es la configuración del agente Canal de flujo, que se almacena en un archivo de texto local que está estructurado como un archivo de propiedades Java. Puede configurar varios agentes en el mismo archivo. Mira a un archivo de ejemplo, que se denomina canal-agent.conf - que está establecido para configurar un agente llamado chamán:

# Identificar los componentes de agente de chamán: shaman.sources = netcat_s1shaman.sinks = hdfs_w1shaman.channels = en-mem_c1 # configurar la fuente de: shaman.sources.netcat_s1.type = netcatshaman.sources.netcat_s1.bind = localhostshaman.sources.netcat_s1. puerto = 44444 # Describir el fregadero: shaman.sinks.hdfs_w1.type = = hdfsshaman.sinks.hdfs_w1.hdfs.path hdfs: //shaman.sinks.hdfs_w1.hdfs.writeFormat = Textshaman.sinks.hdfs_w1.hdfs.fileType = DataStream # configure un canal que almacena eventos de en la memoria: shaman.channels.in-mem_c1.type = memoryshaman.channels.in-mem_c1.capacity = 20000shaman.channels.in-mem_c1.transactionCapacity = 100 # Enlazar la fuente y sumidero al canal: shaman.sources.netcat_s1.channels = = en-mem_c1shaman.sinks.hdfs_w1.channels en-mem_c1

El archivo de configuración incluye propiedades para cada fuente, el canal, y el fregadero en el agente y especifica cómo están conectados. En este ejemplo, agente chamán tiene una fuente que escucha los datos (mensajes a netcat) en el puerto 44444, un canal que amortigua los datos de eventos en la memoria, y un fregadero que registra datos de sucesos a la consola.

Video: Популярные Video – PostgreSQL и MySQL

Este archivo de configuración podría haber sido utilizado para definir varios agentes- aquí, está configurando un solo mantener las cosas simples.

Para iniciar el agente, utilice una secuencia de comandos shell llamado canal-ng, que se encuentra en el directorio bin de la distribución Flume. Desde la línea de comandos, ejecute el comando agente, que especifica la ruta de acceso al archivo de configuración y el nombre del agente.

El siguiente comando muestra se inicia el agente Canal de flujo:

aforador-ng agente -f / -n chamán

el registro del agente de canal de flujo debe tener entradas que verifican que la fuente, el canal, y el fregadero comenzaron con éxito.

A fin de probar la configuración, puede telnet al puerto 44444 desde otro terminal y enviar Canal de flujo de un evento mediante la introducción de una cadena de texto arbitraria. Si todo va bien, el Canal de flujo terminal de salida testamento original del evento en un mensaje de registro que usted debería ser capaz de ver en el registro del agente.

Artículos Relacionados