hadoop - 使用 flume 读取 IBM MQ 数据

标签 hadoop streaming ibm-mq flume

我想从 IBM MQ 读取数据并将其放入 HDF。

查看了 flume 的 JMS 源,似乎它可以连接到 IBM MQ,但我不明白所需属性列表中的“destinationType”和“destinationName”是什么意思。有人可以解释一下吗?

此外,我应该如何配置我的水槽代理

flumeAgent1(跑在和MQ一样的机器上)读取MQ数据----flumeAgent2(跑在Hadoop集群上)写入Hdfs 或者在 Hadoop 集群上只有一个代理就足够了

谁能帮助我理解如何将 MQ 与 flume 集成

引用

https://flume.apache.org/FlumeUserGuide.html

谢谢, 查雅

最佳答案

关于 Flume 代理架构,它由一个 source 以极简形式组成,负责接收或轮询事件,并将事件转换为放在 中的 Flume 事件 channel 。然后,sink 获取这些事件,以便将数据保存在某处,或将数据发送给另一个代理。所有这些组件(源、 channel 、接收器,即代理)都在同一台机器上运行。相反,可以分发不同的代理。

话虽如此,您的方案似乎需要一个基于 JMS source 的代理, 一个 channel ,通常是 Memory Channel , 和一个 HDFS sink .

如文档中所述,JMS 源仅针对 ActiveMQ 进行了测试,但应该适用于任何其他队列系统。该文档还提供了一个示例:

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = jms
a1.sources.r1.channels = c1
a1.sources.r1.initialContextFactory = org.apache.activemq.jndi.ActiveMQInitialContextFactory
a1.sources.r1.connectionFactory = GenericConnectionFactory
a1.sources.r1.providerURL = tcp://mqserver:61616
a1.sources.r1.destinationName = BUSINESS_DATA
a1.sources.r1.destinationType = QUEUE

a1 是单个代理的名称。 c1 是 channel 的名称,它的配置仍然必须完成;并且完全缺少接收器配置。它可以通过添加轻松完成:

a1.sinks = k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = ...
a1.sinks.k1...
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1...

r1 是 JMS 源,可以看出,destinationName 只是要求一个字符串名称。 destinationType 只能取两个值:queuetopic。我认为重要的参数是 providerURLinitialContextFactoryconnectionFactory,必须针对 IBM MQ 进行适配。

关于hadoop - 使用 flume 读取 IBM MQ 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30096172/

相关文章:

hadoop - hive中如何获取表是动态分区还是静态分区

scala - 无法使用 Maven 项目从 Eclipse 通过 HiveContext 访问配置单元表

视频流网站开发

websphere - 如何使用MDB从队列中按顺序读取消息?

apache-spark - 如何在 Spark 中定义传入文件的文件命名约定

Java SSL Streaming - 拆分应用程序数据

java - 无法连接到 red5 应用程序

java - Websphere Mq 连接错误

c# - MQQueueManager 消息池

hadoop - 如何在hadoop集群上使用graphite collectd