Flume之Source全面解析

2018-12-08 01:58 

网上关于Flume的解析已经非常非常多了,本文重在于介绍使用Flume过程中常用的诸多Source。

详细介绍如下,另附官网链接:flume官网

(1)Avro source:

flume第一种数据来源,可以监听IP和端口,并不一定是本机的IP,可以监听其他机器的IP和port,用于获取数据,需要指定type,bind,以及port,其他都可以使用默认配置,而且可以配置拦截哪些IP的请求,对其不进行监听;模板配置如下:

(2)Thrift Source

官网上介绍与Avro Source相差无几,但是不支持IP过滤,具模板配置如下:

(3)Exec Source

根据官网的介绍,可以运行指定的Unix命令,然后该命令会一直执行,读取文件,作为flume数据的来源;需要配置相应的channel,type,以及运行的命令;官网介绍说,本方式不保证数据一定能够输送到channel,如果出现问题,则数据可能丢失;在这种条件下,建议使用Spooling Directory等其他手段,保证数据传输;模板配置如下:

(4)JMS Source

本方式会从JMS消息队列的目的地,比如一个队列或者一个topic中读取数据,按道理来说,应该能够与各种JSM日志提供者对接,但实际上只测试过与ActiveMQ的对接,所以使用必须谨慎;同时,还需要在plugins.d即插件目录下放置相应的jar包;具体配置模板如下:

此来源一般用的较少,局限性比较强。

(5)Spooling Directory Source

本来源在离线数据中常用,以官网的介绍,其允许用户把文件放到磁盘上所谓Spooling的目录,然后监控指定目录下,一旦出现新的文件,就会解析新文件的内容,传输到定义的sink中,传输过程中的解析逻辑可以自行指定,如果文件读取完毕之后,文件会重命名,或者可选择删除;官网介绍,其可靠性较强,而且即使flume重启,也不会丢失数据,为了保证可靠性,只能是不可变的,唯一命名的文件可以放在目录下,日常来说,我们可以通过log4j来定义日志名称,这样基本不会重名,而且日志文件生成之后,一般来说都不会更改,所以离线数据处理,很适合使用本Source;模板配置如下:

其中配置的spoolDir就是监控的目录。

(6)Taildir Source

监控指定的多个文件,一旦文件内有新写入的数据,就会将其写入到指定的sink内,本来源可靠性高,不会丢失数据,建议使用;但目前不适用于Windows系统;其不会对于跟踪的文件有任何处理,不会重命名也不会删除,不会做任何修改,这点比Spooling Source有优势;目前不支持读取二进制文件,支持一行一行的读取文本文件;模板配置如下:

在实时数据处理中,可以用该方式取代Exec方式,因为本方式可靠性高。

(6)Twitter 1% firehose Source

测试性功能,本次不加以介绍。

(7)Kafka Source

支持从Kafka指定的topic中读取数据,模板配置如下:

(8)NetCat TCP Source

监听指定的端口,把传入的每一行文本都作为event传入sink中,可以通过nc -k -l [host] [port]来作为外部数据来源,flume可以通过此种来源进行监听;模板配置如下:

余下还有数种source,在此不加叙述,在一般的业务处理中所用较少;感兴趣的读者,可以参考官网学习。

发表评论

您必须 登录 才能发表留言!