Flume 读取RabbitMq消息队列消息,并将消息写入kafka

首先是关于flume的基础介绍

组件名称    

功能介绍

Agent代理

使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。

Client客户端

生产数据,运行在一个独立的线程。

Source源

从Client收集数据,传递给Channel。

Sink接收器

从Channel收集数据,进行相关操作,运行在一个独立线程。

Channel通道

连接 sources 和 sinks ,这个有点像一个队列。

Events事件

传输的基本数据负载。

目前来说flume是支持多种source

其中是支持读取jms消息队列消息,网上并没有找到关于读取rabbitmq的教程

虽然flume并不支持读取rabbitMq,所以需要对flume进行二次开发

这里主要就是flume怎么从rabbitMq读取数据

这里从git上找到了一个关于flume从rabbitMq读取数据的插件

  下载地址是:https://github.com/gmr/rabbitmq-flume-plugin

上面有一些英文的描述,大家可以看下

环境介绍

centOS 7.3   jdk1.8   cdh5.14.0

1.用 mvn 打包该项目,会生成两个JAR包

 

 

2.因为我这边使用的以cdh方式安装集成flume的,所以把这两个jar  扔到  /usr/lib   下面

  如果是普通的安装方式需要把这两个jar包复制到 flume安装目录的lib下面

 

 

3.进入cdh管理页面配置Agent

 

下面是详细的配置,我这边是直接把消息写入kafka集群里 的

tier1.sources  = source1

tier1.channels = channel1

tier1.sinks    = sink1

tier1.sources.source1.type     = com.aweber.flume.source.rabbitmq.RabbitMQSource

tier1.sources.source1.bind     = 127.0.0.1

tier1.sources.source1.port     = 5672

tier1.sources.source1.virtual-host = /

tier1.sources.source1.username = guest

tier1.sources.source1.password = guest

tier1.sources.source1.queue = test

tier1.sources.source1.prefetchCount = 10

tier1.sources.source1.channels = channel1

tier1.sources.source1.threads = 2

tier1.sources.source1.interceptors = i1

tier1.sources.source1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder

tier1.sources.source1.interceptors.i1.preserveExisting = true

tier1.channels.channel1.type   = memory

tier1.sinks.sink1.channel      = channel1

tier1.sinks.sink1.type = org.apache.flume.sink.kafka.KafkaSink 

tier1.sinks.sink1.topic = flume_out 

tier1.sinks.sink1.brokerList = 127.0.0.1:9092,127.0.0.1:9093,27.0.0.1:9094

tier1.sinks.sink1.requiredAcks = 1 

tier1.sinks.sink11.batchSize = 20 

配置完成更新配置重新启动Agent

 

 

 

这个是接收到rabbitMq消息

 

 

大功告成,如果配置中有疑问的可以留言,我看到后会回复

转载于:https://www.cnblogs.com/yihec/p/8969107.html

要使用Flume读取RabbitMQ并将数据写入HDFS,可以按照以下步骤进行: 1. 安装FlumeRabbitMQ。 2. 配置RabbitMQ,创建一个Exchange和一个Queue,将Exchange和Queue绑定在一起。 3. 在Flume的配置文件中,配置RabbitMQ Source和HDFS Sink。 示例配置文件如下: ``` agent.sources = rabbitmqSource agent.channels = memoryChannel agent.sinks = hdfsSink # 配置RabbitMQ Source agent.sources.rabbitmqSource.type = com.cloudera.flume.source.rabbitmq.RabbitMQSource agent.sources.rabbitmqSource.uri = amqp://<username>:<password>@<rabbitmq-host>:<rabbitmq-port>/ agent.sources.rabbitmqSource.exchange = <exchange-name> agent.sources.rabbitmqSource.queue = <queue-name> agent.sources.rabbitmqSource.batchSize = 100 # 配置Memory Channel agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 1000 # 配置HDFS Sink agent.sinks.hdfsSink.type = hdfs agent.sinks.hdfsSink.hdfs.path = hdfs://<namenode>:<port>/<path> agent.sinks.hdfsSink.hdfs.fileType = DataStream agent.sinks.hdfsSink.hdfs.writeFormat = Text agent.sinks.hdfsSink.hdfs.rollInterval = 300 agent.sinks.hdfsSink.hdfs.rollSize = 0 agent.sinks.hdfsSink.hdfs.rollCount = 100 agent.sinks.hdfsSink.channel = memoryChannel ``` 其中,<username>、<password>、<rabbitmq-host>、<rabbitmq-port>、<exchange-name>、<queue-name>、<namenode>、<port>和<path>需要替换为实际的值。 4. 启动Flume Agent,使用以下命令启动: ``` $FLUME_HOME/bin/flume-ng agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/flume.conf --name agent -Dflume.root.logger=INFO,console ``` 其中,$FLUME_HOME是Flume的安装目录。 5. Flume将开始从RabbitMQ读取数据并将其写入HDFS。 注意:在实际生产环境中,需要根据实际需求对Flume的配置进行优化和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值