【问题标题】:Using flume to read IBM MQ data使用 Flume 读取 IBM MQ 数据
【发布时间】:2023-03-21 19:53:01
【问题描述】:

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

查看了flume的JMS源,似乎它可以连接到IBM MQ,但我不明白“destinationType”和“destinationName”在所需属性列表中的含义。谁能解释一下?

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

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

有人可以帮助我了解如何将 MQ 与 Flume 集成

参考

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

谢谢, 查亚

【问题讨论】:

    标签: hadoop streaming ibm-mq flume


    【解决方案1】:

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

    话虽如此,您的方案似乎需要一个基于JMS source、一个频道(通常是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 是通道的名称,它的配置必须仍然完成;并且完全缺少接收器配置。通过添加即可轻松完成:

    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边缘节点上,不需要在MQ服务器上安装水槽代理如果我错了请纠正我
    • 是的,在 Hadoop 边缘只有一个代理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多