Sobre la conexión entre flume y kafka

Antes de conectar flume y kafka, necesitamos saber por qué necesitan conectar estos dos sistemas:
1. En el entorno de producción, los registros a menudo se leen para su análisis, y esta es a menudo una fuente de datos múltiples, si la usa sola Sin duda es muy inconveniente si Kafka crea varios productores para usar flujos de archivos para escribir datos en el tema y luego para que los consumidores los consuman (la ventaja de su acoplamiento aquí es recopilar archivos de registro para que los utilicen múltiples sistemas).
2. Flume puede utilizar interceptores para procesar datos en tiempo real . Estos son muy útiles para el blindaje o el exceso de datos. Kafka necesita un sistema de procesamiento de flujo externo para hacerlo.
3. Si Flume está conectado directamente al marco de computación en tiempo real, cuando la velocidad de recopilación de datos es mayor que la velocidad de procesamiento de datos, es probable que ocurra la acumulación de datos o la pérdida de datos, y kafka se puede usar como una cola de búfer de mensajes, lo que puede almacenar datos durante un período de tiempo para reducir los picos .

Pasos para conectar flume y kafka:
1. Cree el archivo kafka.conf en el directorio / opt / module / flume / job de la máquina hadoop102.
Aquí, usamos netcat para Source, Memory Channel para Channel y Kafka para Sink. Sink Luego complete el siguiente contenido:
Preste atención a a1.sinks.k1.kafka.topic = xxx en Sink en la configuración, y escriba su propio tema en Kafka aquí. a1.sinks.k1.kafka.bootstrap.servers = xxx Aquí escriba el nombre de host de su clúster y 9092 es el número de puerto de Kafka.

#Name
a1.sources = r1
a1.channels = c1
a1.sinks = k1

#Source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444


#Channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100


#Sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = demo2
a1.sinks.k1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1


#Bind
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2. Una vez guardado el contenido anterior, iniciemos kafka y zookeeper en el clúster.
Tenga en cuenta que primero debe iniciar zk y
ejecutar bin / zhServer.sh en el directorio de instalación de kafka zk iniciar el
directorio de instalación de kafka ejecutar bin / kafka-server- start.sh- daemon config / server.properties

3. Inicie un consumidor en hadoop102 y
ejecútelo en el directorio de instalación de kafka. bin/kafka-consumer-consumer.sh --zookeeper hadoop102:2181 --topic demo2Aquí uso el tema demo2

Luego abra dos ventanas hadoop102 en Xshell, una para abrir flume, ejecute [root @ hadoop102 flume] # bin / flume-ng agent -c conf / -f job / kafka.conf -n en el directorio de instalación de flume a1

Luego ingrese el contenido en otra ventana [root @ hadoop102 ~] # nc localhost 44444

Luego le enviamos cualquier contenido y podemos ver que nuestros mensajes después del canal todavía se pueden recibir en Kafka.

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44080445/article/details/107425277
Recomendado
Clasificación