在它里面自带了一个TailSource以及TailDirSource,这个Source是负责读取一个文件,并一行一行的发送到sink端,而在flume-ng 1.4.0里面没有自带TailSource,更别说TailDirSource了,虽然我们可以在flume-ng 1.4.0里面用exec的tail -F来一行一行的发送文件,但是还是不太好。而且公司最近flume需要升级,之前的程序用到了TailSource和TailDirSource,没办法只能再次开发了。在flume-ng里面开发一个source需要遵循一定的规则,我们可以通过以下两种方式来开发自己的source:

分布式:hadoop、hive、spark、shark、flume技术

public class TailSource extends AbstractSource implments EventDrivenSource, configurable {

  @Override

  public void configure(Context context) {

  }

  @Override

  public synchronized void start() {

    

  }

  @Override

  public synchronized void stop() {

  }

}

或者

public class TailSource extends AbstractSource implements Configurable, PollableSource {

  @Override

  public void configure(Context context) {

  }

  @Override

  public Status process() throws EventDelieryException {

    return null;

  }

  @Override

  public synchronized void start() {

  }

  @Override

  public synchronized void stop() {

  }

}

这两个类虽然继承关系不一样,但是都可以实现。下面的方法中多了一个process()方法,这个方法在PollableSourceRunner类中会被一个线程不断的调用。

关于如何具体开发TailSource,这个我就不介绍了。下面主要介绍一下如何使用我这个TailSource,在本文的后面会附上TailSource插件的下载地址,大家如有需要可以自行下载使用。TailSource支持waitTime、file、startFromEnd以及offset四个参数的配置。

waitTime:指的是隔多久读一次文件,程序是按照一块一块的读取文件内容到缓冲区,然后一行一行的解析;可以不配置,默认一秒读一次。

file:指的是需要读取的文件绝对路径,一定需要配置;

startFromEnd:是否从文件结尾处读取,默认为false;

offset:从offset偏移量开始读取,可以不配置,默认是从偏移量为0开始读。

目前版本的TailSource不支持正则表达式的配置。如你需要使用,可以按照下面的配置进行:

agent.sources = r1

agent.sources.r1.type = org.apache.flume.TailSource

agent.sources.r1.channels = channel

agent.sources.r1.waitTime = 100

agent.sources.r1.file = /export1/spark/apache-flume-1.4.0-bin/test

agent.sources.r1.startFromEnd = false

agent.sources.r1.offset = 0

然后就可以监听到test文件的变化,并放到channel里面。

日志依赖的jar包在maven中的配置如下:

<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-api</artifactId>

</dependency>

<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-log4j12</artifactId>

  <scope>test</scope>

</dependency>

flume里jar包在maven中的配置如下:

<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-api</artifactId>

</dependency>

<dependency>

  <groupId>org.apache.flume</groupId>

  <artifactId>flume-ng-sdk</artifactId>

</dependency>

<dependency>

  <groupId>org.apache.flume</groupId>

  <artifactId>flume-ng-core</artifactId>

</dependency>

<dependency>

  <groupId>org.apache.flume</groupId>

  <artifactId>flume-ng-configuration</artifactId>

</dependency>

flume ng之TailSource的更多相关文章

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

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

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

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

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

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

  4. Flume NG简介及配置

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

  5. 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 ...

  6. Flume NG 简介及配置实战

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

  7. Flume OG 与 Flume NG 的区别

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

  8. 【Flume NG用户指南】(1)设置

    作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details ...

  9. 【Flume NG用户指南】(2)构造

    作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details ...

随机推荐

  1. web处理jsp文件的三个阶段

    web处理jsp文件的三个阶段 翻译阶段(servlet) 编译阶段(class) 执行阶段(print页面标签) 推送html到浏览器

  2. cannot modify header information 关于实现widget页面跳转的问题

    查找网上解决此问题的方法多是一样的,不过今天又遇到了这样的问题.试过之后发现可行: 在C盘的WINDOWS或者你的PHP文件夹中找到php.ini 这个配置文件,然后查找一项:output_buffe ...

  3. logstash的性能测试

    logstash有简单的批量生成插件.generator.详情见官网:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-g ...

  4. JDBCTest

    package com.atguigu.spring.jdbc; import java.sql.SQLException; import java.util.ArrayList; import ja ...

  5. 转:Order&Shipping Transactions Status Summary

    详细内容: http://blog.csdn.net/pan_tian/article/details/7696528 WSH_DELIVERY_DETAILS.Release_Status can ...

  6. 夺命雷公狗—angularjs—19—angular-route

    ngRoute包括的内容 ng的路由机制是靠ngRoute提供的,通过hash和history两种方式实现了路由,可以检测浏览器是否支持history来灵活调用相应的方式.ng的路由(ngRoute) ...

  7. [Ubuntu] Install subversion1.8 on Ubuntu13.10

    Subversion1.8 is difference far away from subversion1.7, here is the steps to install subversion1.8. ...

  8. OpenGL笔试题

    简述FrameBuffer,RenderBuffer,Depth Buffer,Framebuffer attachment,Stencil buffer的关系 简述利用OpenGL执行图像叠加(大P ...

  9. SSAS维度上有多个表的注意事项

    在Sql Server Analysis Service中维度上有多张表(大于一张表)时,一定要注意将第二张表开始用到维度属性中的KeyColumns下的NullProcessing要设置为Unkno ...

  10. 一个Convert、TryParse数据转换的问题

    今天在进行数据转换的时候遇到一个问题,记录下,希望看到的童鞋有点用哦~ Convert.ToInt32(0.80155023553515) 结果为1 但是以下的做法,就不是想当然的结果咯~ int.T ...