java - 多个 Flume-ng hdfs 接收器写入同一路径

标签 java logging hdfs flume

我想了解flume-ng如何处理文件名冲突的这种情况。 假设我有几个配置相同的 Flume 代理实例,并且客户端将它们用作负载均衡组。

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

flume 代理如何生成文件名以使其在代理之间唯一?它是否以某种方式附加代理名称(名称看起来像数字,因此很难弄清楚)?

最佳答案

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

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

a1.sinks.k1.hdfs.filePrefix = agentX

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

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

如果您需要完全自动生成唯一的文件名,您可以开发自己的拦截器,它将向事件添加 UUID header 。查看示例here .

关于java - 多个 Flume-ng hdfs 接收器写入同一路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023887/

相关文章:

java - 无法让我的程序接受多个整数

python - 为什么我的 Kedro 日志文件一直为空?我错过了什么步骤吗?

amazon-web-services - 即使成功,如何获取 CodeDeploy 事件日志?

logging - Weblogic日志定制

java - 两个远程集群之间的 DistCp 容错

java - WebDriver 自动化验证电子邮件

java - Tomcat context.xml 的 Netbeans 问题

java - 对抛出异常的困惑

azure - 如何在hdfs中启用校验和值?

datetime - hdfs 文件时间戳