java—多个flume ng hdfs接收器写入同一路径

b1uwtaje  于 2021-06-03  发布在  Flume
关注(0)|答案(1)|浏览(648)

我想了解flume ng将如何处理文件名冲突方面的这种情况。asume我有几个相同配置的flume代理示例,客户端将它们用作负载平衡组。
a1.sinks.k1.hdfs.path=/flume/events/path
flume代理将如何生成文件名以使它们在代理之间唯一?它是否会以某种方式将代理名称附加到它上面(名称看起来像数字,所以很难理解)?

pcrecxhr

pcrecxhr1#

Flume不能自动解决这个问题。默认情况下,hdfs sink创建名称等于当前时间戳(以毫秒为单位)的新文件,因此如果同时创建两个文件,则可能会发生冲突。
一种解决方法是在不同的接收器中手动设置不同的文件前缀:

a1.sinks.k1.hdfs.filePrefix = agentX

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

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

如果您需要完全自动地生成唯一的文件名,您可以开发自己的拦截器,它将向事件添加uuid头。参见此处的示例。

相关问题