我想了解flume ng将如何处理文件名冲突方面的这种情况。asume我有几个相同配置的flume代理示例,客户端将它们用作负载平衡组。a1.sinks.k1.hdfs.path=/flume/events/pathflume代理将如何生成文件名以使它们在代理之间唯一?它是否会以某种方式将代理名称附加到它上面(名称看起来像数字,所以很难理解)?
pcrecxhr1#
Flume不能自动解决这个问题。默认情况下,hdfs sink创建名称等于当前时间戳(以毫秒为单位)的新文件,因此如果同时创建两个文件,则可能会发生冲突。一种解决方法是在不同的接收器中手动设置不同的文件前缀:
a1.sinks.k1.hdfs.filePrefix = agentX
也可以在前缀定义中使用事件头。例如,如果使用host interceptor,它会将代理主机名的值添加到事件“host”头中,则可以执行以下操作:
a1.sinks.k1.hdfs.filePrefix = ${host}
如果您需要完全自动地生成唯一的文件名,您可以开发自己的拦截器,它将向事件添加uuid头。参见此处的示例。
1条答案
按热度按时间pcrecxhr1#
Flume不能自动解决这个问题。默认情况下,hdfs sink创建名称等于当前时间戳(以毫秒为单位)的新文件,因此如果同时创建两个文件,则可能会发生冲突。
一种解决方法是在不同的接收器中手动设置不同的文件前缀:
也可以在前缀定义中使用事件头。例如,如果使用host interceptor,它会将代理主机名的值添加到事件“host”头中,则可以执行以下操作:
如果您需要完全自动地生成唯一的文件名,您可以开发自己的拦截器,它将向事件添加uuid头。参见此处的示例。