1、源码更改场景:如果使用 0.8 版本 Kafka 并配套 1.6 版本 Flume,由于 Flume 1.6 版本没有Taildir Source 组件,因此,需要将 Flume 1.7 中的 Taildir Source 组件源码编译打包后,放入Flume1.6 安装目录的 lib文件目录下。1.6想要移植1.7的Taildir Source功能。
而Taildir Source源码中,主要是利用 inode+文件名 来进行文件唯一性判定,一旦文件改名,TaildirSource会将它当成新文件重新读取,因此会导致数据的重复读取。
2、更改部分:更改ReliableTaildirSource.java类,对其中的updateTailFiles和loadPostionFile函数进行修改。
参考博客:https://blog.csdn.net/qq_28652401/article/details/84312322