Apache Flume: transferencia de datos en Hadoop
Big Data,como sabemos, es una colección de grandes conjuntos de datos que no se pueden procesar mediante técnicas informáticas tradicionales. Big Data, cuando se analiza, da resultados valiosos.Hadoop es un marco de código abierto que permite almacenar y procesar Big Data en un entorno distribuido a través de grupos de computadoras utilizando modelos de programación simples.
Transmisión / registro de datos
Generalmente, la mayoría de los datos que se van a analizar serán producidos por varias fuentes de datos como servidores de aplicaciones, sitios de redes sociales, servidores en la nube y servidores empresariales. Estos datos estarán en forma delog files y events.
Log file - En general, un archivo de registro es un fileque enumera eventos / acciones que ocurren en un sistema operativo. Por ejemplo, los servidores web enumeran todas las solicitudes realizadas al servidor en los archivos de registro.
Al recolectar dichos datos de registro, podemos obtener información sobre:
- el rendimiento de la aplicación y localizar varios fallos de software y hardware.
- el comportamiento del usuario y obtener mejores conocimientos empresariales.
El método tradicional de transferir datos al sistema HDFS es utilizar el putmando. Veamos cómo usar elput mando.
Comando put HDFS
El principal desafío en el manejo de los datos de registro es mover estos registros producidos por múltiples servidores al entorno de Hadoop.
Hadoop File System Shellproporciona comandos para insertar datos en Hadoop y leerlos. Puede insertar datos en Hadoop usando elput comando como se muestra a continuación.
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
Problema con el comando put
Podemos usar el putcomando de Hadoop para transferir datos de estas fuentes a HDFS. Pero adolece de los siguientes inconvenientes:
Utilizando put comando, podemos transferir only one file at a timemientras que los generadores de datos generan datos a una velocidad mucho mayor. Dado que el análisis realizado en datos más antiguos es menos preciso, necesitamos tener una solución para transferir datos en tiempo real.
Si usamos putcomando, los datos deben ser empaquetados y deben estar listos para la carga. Dado que los servidores web generan datos de forma continua, es una tarea muy difícil.
Lo que necesitamos aquí es una solución que pueda superar los inconvenientes de put Ordene y transfiera la "transmisión de datos" de los generadores de datos a las tiendas centralizadas (especialmente HDFS) con menos demora.
Problema con HDFS
En HDFS, el archivo existe como una entrada de directorio y la longitud del archivo se considerará cero hasta que se cierre. Por ejemplo, si una fuente está escribiendo datos en HDFS y la red se interrumpió en medio de la operación (sin cerrar el archivo), los datos escritos en el archivo se perderán.
Por lo tanto, necesitamos un sistema confiable, configurable y fácil de mantener para transferir los datos de registro a HDFS.
Note- En el sistema de archivos POSIX, siempre que accedemos a un archivo (por ejemplo, realizando una operación de escritura), otros programas aún pueden leer este archivo (al menos la parte guardada del archivo). Esto se debe a que el archivo existe en el disco antes de que se cierre.
Soluciones Disponibles
Para enviar datos de transmisión (archivos de registro, eventos, etc.) desde varias fuentes a HDFS, tenemos las siguientes herramientas disponibles a nuestra disposición:
Escriba de Facebook
Scribe es una herramienta inmensamente popular que se utiliza para agregar y transmitir datos de registro. Está diseñado para escalar a una gran cantidad de nodos y ser resistente a fallas de red y nodos.
Apache Kafka
Kafka ha sido desarrollado por Apache Software Foundation. Es un corredor de mensajes de código abierto. Con Kafka, podemos manejar feeds con alto rendimiento y baja latencia.
Apache Flume
Apache Flume es una herramienta / servicio / mecanismo de ingestión de datos para recopilar, agregar y transportar grandes cantidades de datos de transmisión, como datos de registro, eventos (etc.) desde varios servidores web a un almacén de datos centralizado.
Es una herramienta altamente confiable, distribuida y configurable que está diseñada principalmente para transferir datos de transmisión desde varias fuentes a HDFS.
En este tutorial, discutiremos en detalle cómo usar Flume con algunos ejemplos.