flume知识点总结
首先介绍一下在flume中常用的一个数据格式,以及使用该格式的优缺点:
从flume写数据到hdfs中的时候,使用二进制格式相对于使用纯文本来说是一种更好的选择,因为大多数二进制格式都有一些方法指明记录中损坏或者不完整等的问题。 二进制记录有助于检测他们并将这些不正确的记录进行忽略,例如flume中常用的二进制数据格式avro,这个格式是可以进行拆分的,并且可以检测文件中损坏或者不完整的记录。
flume agent 的内部原理:
每个flume agent 主要有三个组件组成,source,channel,sink;
source是从一些其他产生数据的应用中接受数据的活跃组件。有自己生产数据的source,不过这些source一般是用作测试目的,source可以用来监听一个或者多个网络端口,用于接受数据或者从本地文件系统中读取数据。每个source必须至少连接一个channel,基于一些标准,一个source可以写入几个channel中,复制事件到所有或某些channel中。
channel:channel一般来说是一个被动组件,channel的行为想一个队列,source写入到他们,sink从他们中进行数据读取。
sink:sink连续轮询各自的channel来读取和删除事件,sink将事件推送到下一阶段或者最终的目的地
flume 本身不限制agent中source、channel、sink的数量,因此flume可以接受事件,并可以通过配置将事件复制到多个目的地。
拦截器是一段代码,可以基于某些它完成的处理来读取事件或者删除和修改事件,基于某些标准,例如正则表达式,拦截器可以删除事件,为事件添加新的报头或者移除现有的报头等。每个source可以配置使用多个拦截器,按照配置中定义的顺序被调用,将拦截的结果传递给莲的下一个单元