因为flume的spooldir不支持子目录文件的递归检测,并且业务需要,所以修改了源码,重新编译


代码修改参考自:http://blog.csdn.net/yangbutao/article/details/8835563

不过在1.4中已经不是修改SpoolingFileLineReader类了,而是apache-flume-1.4.0-src\flume-ng-core\src\main\java\org\apache\flume\client\avro\ReliableSpoolingFileEventReader.java

并且变量directory应该改为spoolDirectory


 1     /*
* @author admln
*
* @date 2015年4月8日 上午9:37:20
*/
private void listDirFiles(List<File> files, File dir, FileFilter filter) {
File[] childs = dir.listFiles(filter);
for (int i = 0; i < childs.length; i++) {
if (childs[i].isFile()) {
files.add(childs[i]);
} else {
if (childs[i].isDirectory()) {
listDirFiles(files, childs[i], filter);
}
}
}
} /**
* Find and open the oldest file in the chosen directory. If two or more
* files are equally old, the file name with lower lexicographical value is
* returned. If the directory is empty, this will return an absent option.
*/
private Optional<FileInfo> getNextFile() {
/* Filter to exclude finished or hidden files */
FileFilter filter = new FileFilter() {
       public boolean accept(File pathName) {
          if ((pathName.getName().endsWith(completedSuffix))
            || (pathName.getName().startsWith("."))) {
            return false;
          }
      return true;
     }
};
// List<File> candidateFiles = Arrays.asList(spoolDirectory.listFiles(filter));
List<File> candidateFiles = new ArrayList<File>();
listDirFiles(candidateFiles, spoolDirectory, filter);

很多没必要的版本就不改,如果少包或者版本不对,即使编译通过了,使用的时候也会报java.lang.Error: Unresolved compilation problem,就要修改重新编译


重新编译的时候可以参考:http://www.iteblog.com/archives/1032
编译命令:

mvn install -Phadoop- -DskipTests -Dtar

会下很多各种jar包,很浪费时间


已经编译好的:http://pan.baidu.com/s/1eQxUDxC    5x9l


还有个比较简单的一点的办法,因为改的flume-ng-core里面的代码,而flume-ng-core是flume-ng的一个子项目,所以直接在flume-ng-core里面执行单独编译,得到target/flume-ng-core-1.4.0.jar,然后替换现有flume-bin/lib/里面的flume-ng-core-1.4.0.jar,也可以实现想要的功能。这个编译基本上不会有什么问题。

现成的:http://pan.baidu.com/s/1CVR3K  989v


在1.5.0中的doc说已经支持子目录的递归读取了但是只有patch,没集成到代码中,也没有kafka sink,所以个人觉得干脆改CDH的flume算了,加上递归,本身有kafka sink

http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.5.0-cdh5.2.5.tar.gz


Flume-ng-1.4.0 spooling source的方式增加了对目录的递归检测的支持的更多相关文章

  1. 【转】Flume(NG)架构设计要点及配置实践

    Flume(NG)架构设计要点及配置实践   Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Fl ...

  2. Flume NG 简介及配置实战

    Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 clo ...

  3. Flume NG高可用集群搭建详解

    .Flume NG简述 Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持 Failover和负载均 ...

  4. FLUME NG的基本架构

    Flume简介 Flume 是一个cloudera提供的 高可用高可靠,分布式的海量日志收集聚合传输系统.原名是 Flume OG (original generation),但随着 FLume 功能 ...

  5. Flume NG Getting Started(Flume NG 新手入门指南)

    Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...

  6. 高可用Hadoop平台-Flume NG实战图解篇

    1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...

  7. Flume NG简介及配置

    Flume下载地址:http://apache.fayea.com/flume/ 常用的分布式日志收集系统: Apache Flume. Facebook Scribe. Apache Chukwa ...

  8. flume ng系列之——flume安装

    flume版本:1.5.0 1.下载安装包: http://www.apache.org/dyn/closer.cgi/flume/1.5.0/apache-flume-1.5.0-bin.tar.g ...

  9. Flume OG 与 Flume NG 的区别

    1.Flume OG:Flume original generation 即Flume 0.9.x版本    Flume NG:Flume next generation ,即Flume 1.x版本 ...

随机推荐

  1. Quora的技术探索(转)

    原文:http://www.cnblogs.com/xiekeli/archive/2012/04/27/2473808.html 关于问答类的应用,最早接触的是stackoverflow和知乎 ,而 ...

  2. HDU 2101 A + B Problem Too 分类: ACM 2015-06-16 23:57 18人阅读 评论(0) 收藏

    A + B Problem Too Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. oracel 导入导出

    一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...

  4. C++11无限制的unions

    [C++11无限制的unions] 在标准 C++ 中,并非任意的类型都能做为 union 的成员.比方说,带有 non-trivial 构造函数的类型就不能是 union 的成员.在新的标准里,移除 ...

  5. USB -- BULK_ONLY和UFI协议

    2 BULK_ONLY和UFI协议 Bulk—Only协议是USB组织针对大容量存储设备制定的一种块存储类协议,目前已经普遍应用于各种移动存储设备. USB设备分为5大类,即显示器.通信设备.音频设备 ...

  6. HDU 5438 Ponds (DFS,并查集)

    题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和. 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然 ...

  7. .java 文件中只能定义一个public class 且与文件名相同

  8. 图说Java —— 理解Java机制最受欢迎的8幅图

    原文链接:  Top 8 Diagrams for Understanding Java 翻译人员: 铁锚 翻译时间: 2013年10月29日 世间总是一图胜过千万言! 下面的8幅图来自于 Progr ...

  9. Java安装程序制作

    对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre.jre版本.jre在哪里下载.如何用jre启动 Java应用等等.不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接 ...

  10. Redis基本操作-20150608

    Redis基本操作-20150608 [http://my.oschina.net/u/241255/blog/206991]   Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存 ...