我测试过Apache Flume将文件从本地传输到HDFS。但是如果来自多个服务器的源文件(将文件从不同服务器本地传输到HDFS),我可以只运行一个Flume实例并将更多代理添加到flume-conf.properties中吗?
如果可以,我如何在flume-conf.properties中编辑以下参数:
agent1.sources.spooldirSource1.spoolDir = ?(server1/path)
agent2.sources.spooldirSource2.spoolDir = ?(server2/path)
而且,我怎么能跑水槽?
./flume-ng agent -n agent -c conf -f apache-flume-1.4.0-bin/conf/flume-conf.properties
只能跑一个水槽。两个以上呢?
答案 0 :(得分:3)
根据需要添加多个源,但将它们配置为使用相同的通道 - 然后使用相同的源。所以它就像(注意这个片段不完整):
agent1.sources.spooldirSource1.spooldir = server1/path
agent1.sources.spooldirSource1.channel = myMemoryChannel
agent1.sources.spooldirSource2.spooldir = server2/path
agent1.sources.spooldirSource2.channel = myMemoryChannel
答案 1 :(得分:0)
对于两个源使用相同的通道不是一个好习惯,您可以轻松地为该通道(对于MemoryChannel)获取outOfMemory,在这种情况下。 最好为每个来源(对于同一座席)使用一个频道
a1.sources = r1 r2
a1.sinks = k1 k2
a1.channels = c1 c2
然后将源r1链接到通道c1,将源r2链接到通道c2