概述
在做埋点数据离线存储到odps中,用到了Flume。一边使用,一边学习了下Flume。其中感受到Flume确实易伸缩、易扩展。其中的组件都可以根据自己的业务特点方便的自定义使用。
Flume可进行大量日志数据采集、聚合和并转移到存储中,并提供数据在流转中的事务机制;
可适用场景:日志—>Flume—>实时计算(如MQ+Storm) 、日志—>Flume—>离线计算(如ODPS、HDFS、HBase)、日志—>Flume—>ElasticSearch等。
Flume架构
Flume主要分为 Source、Channel、Sink三个组件,他们包含在一个Agent中,一个Agent相当于一个独立的application。数据从源头经过Agent的这几个组件最后到达目的地。一个Flume 服务可同时运行多个Agent,大致架构可参照下图:
对照这个图,作一些说明;
- Event 一条日志数据在Flume中对应一个Event对象。不过给他添加了header属性,就是一个Map,放 一些额外信息,可以针对每条Event做特殊处理,比如Channel的选择。这些额外的键值对可以在Event从Source到Channel之间的interceptor(拦截器)中set。
- Source 负责日志流入,比如从文件、网络、MQ等数据源流入数据。
- Channel 负责数据聚合/暂存,以供Sink消费掉,事务机制主要在这里实现
- Sink 负责数据转移到存储,比如从Channel拿到日志后直接存储到ODPS、ElasticSearch等。
- 拦截器 如果配置了拦截器,则Event从Source 进入Channel前,经过拦截器链做过滤或其他处理;如识别不

Flume 是一个用于收集、聚合和转移大规模日志数据的系统,具备事务机制。文章介绍了Flume的架构,包括Event、Source、Channel、Sink和拦截器,并讨论了Flume的实际使用中遇到的问题,如数据格式错误和分区问题。文中还阐述了Flume的事务处理,特别是MemoryTransaction的PUT和Take事务流程。
最低0.47元/天 解锁文章
1967

被折叠的 条评论
为什么被折叠?



