使用flume读取ibmq数据

p4rjhz4m  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(546)

我想从ibmq读取数据并将其放入hdfs。
查看flume的jms源代码,它似乎可以连接到ibmq,但我不明白“destinationtype”和“destinationname”在所需属性列表中的含义。有人能解释一下吗?
另外,我应该如何配置我的flume代理
flumeagent1(在与mq相同的计算机上运行)读取mq数据---- flumeagent2(在hadoop集群上运行)写入hdfs,或者hadoop集群上只有一个代理就足够了
有人能帮助我理解mqs如何与flume集成吗
参考
https://flume.apache.org/flumeuserguide.html
谢谢,查亚

5ssjco0h

5ssjco0h1#

关于flume代理体系结构,它由负责接收或轮询事件并将事件转换为放入通道中的flume事件的源以其最简形式组成。然后,接收器接收这些事件以便将数据持久化到某个地方,或者将数据发送到另一个代理。所有这些组件(源、通道、接收器,即代理)都在同一台机器上运行。不同的代理可以被分发。
话虽如此,您的场景似乎需要基于jms源、通道(通常是内存通道)和hdfs接收器的单个代理。
如文档中所述,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` 是通道的名称,其配置必须仍然完成;而且完全没有接收器配置。可通过添加以下内容轻松完成:

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 只能取两个值: queue 或者 topic . 我认为重要的参数是 providerURL 以及 initialContextFactory 以及 connectionFactory ,它必须适用于ibm mq。

相关问题