Что касается архитектуры агента Flume, состоит в минималистской форме по источнику отвечает за получение или опроса для событий, и преобразования в событие Flume, которые ставятся в a канал. Затем, sink принимает эти события, чтобы сохранить данные где-то, или отправить данные другому агенту. Все эти компоненты (источник, канал, приемник, т. Е. Агент) работают на одном компьютере. Вместо этого могут быть распределены различные агенты.
Считается, что для вашего сценария требуется отдельный агент на основе JMS source, канала, обычно Memory Channel и HDFS sink.
Источник JMS, как указано в документации, был протестирован только для ActiveMQ, но shoukd работает для любой другой системы queue. Документация также дает пример:
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.
Спасибо !!! для подробного ответа..Что я понял, мне нужен только один ломовой агент, вероятно, на оконечном узле Hadoop, не нужно иметь flume agent на сервере MQ. Исправить меня, если я ошибаюсь –
Да, только один агент в краю Hadoop. – frb