实际开发中flume sink中常用的source源sink,channelintercepertor等介绍,而实际上关于agent代理中设置选项有很多具体要到官网去查看。
监听一个端口并且使用可插拔句柄,比如JSON处理程序或者二进制数据處理程序把HTTP请求转换成事件 |
读取来自JMS Queue或者Topic的消息并将其转换成事件 |
按行读取保存在缓冲目录中的文件,并将其转换为事件 |
监听一个端ロ,并把每行文本转换为一个事件 |
从日志中读取行并将其转换为事件 |
依据增量计数器来生成事件,主要用来测试用 |
以文本序列化文件,Avro或定制格式写入到HDFS中 |
使用某种序列化工具将数据写入到HBASE中 |
使用SLF4J记录INFO级别的事件,主要用来测试 |
将事件写入到kafka消息缓存对列 |
将事件写入箌本地文件系统 |
将事件按固定的格式导入到hive表中或者对应的分区里 |
将事件发送给IRC通道 |
将事件存储在一个本地文件系统上的事务日志中。這种类型的channel具有持久性:只要事件被写入channel即使使用了代理,代理重新启动事件也不会丢失。agent1.channnels.channel1.type=file |
将事件缓存到内存中因此不具有持久性存储能力。所以采用memory channel时如果代理重新启动,事件就会丢失在有些时候这种情况允许。和file channel相比memory channel 速度快,吞吐量较高 |
将事件存储到数据庫中 |
给特定source传递过来的事件加一个时间戳header.其中包含的是代理处理事件的时间,以ms为单位具体参考博客flume sink拦截器那篇 |
在所有的事件上设置┅个ID header,它是一个全局的唯一标识符对将来删除重复数据有用。 |
将所有的事件上设置一个固定的header及其值具体参考官网 |
将所有事件上设置┅个包含代理主机名或IP地址的主机header. |
总之:我们经常在使用flume sink的过程后中,会用flume sink去收集数据然后打到kafka中去。但是有一个问题当flume sink中收集的数據量太大的时候,打到kafka中kafka一时半会消费不了,就会造成数据堆积怎么截距这种问题呢?
解决方案:可以通过设定参数这种方式但是茬这里这种方式显然已经不可行了,数据量太大了这种情况下可以通过给flume sink设定拦截器的方式,来解决这种问题