几个Flume-ng hdfs接收器写入相同的路径

时间:2013-04-15 20:08:53

标签: java logging hdfs flume

我想了解flume-ng如何在文件名冲突方面处理这种情况。 我有几个同样配置的flume代理的实例,客户端将它们用作负载平衡组。

  

a1.sinks.k1.hdfs.path = / flume / events / path

水槽代理如何生成文件名以使其在代理中独一无二?它是否以某种方式将代理名称附加到它(名称看起来像数字,所以很难弄明白)?

1 个答案:

答案 0 :(得分:2)

Flume无法自动解决此问题。默认情况下,HDFS接收器会创建名称等于当前时间戳(以毫秒为单位)的新文件,因此如果在同一时刻创建了两个文件,则可能会发生冲突。

解决此问题的一种方法是在不同的接收器中手动设置不同的文件前缀:

a1.sinks.k1.hdfs.filePrefix = agentX

您也可以在前缀定义中使用事件标头。例如,如果使用host interceptor,它将事件“host”标头添加到代理程序主机名的值,则可以执行以下操作:

a1.sinks.k1.hdfs.filePrefix = ${host}

如果您需要完全自动生成唯一的文件名,您可以开发自己的拦截器,这将为事件添加UUID标头。请参阅示例here