flume优点
1.存储数据到任何*数据库
2.进入数据速率大于写出速率,可以起到缓存作用,保证流的平稳
3.提供文本式路由
4.支持事务
5.可靠、容错、可伸缩、可定制、可管理
put的缺点
1.put命令一次只能put一个文件,不能满足文件告诉被生成的场景,需要实时传输数据
2.put命令操作文件时是固定的,不能是持续累加的
3.需要传递流动数据到hdfs,延迟很低
flume架构:水槽
1. flume event
header + payload(byte array)
2. flume agent
是独立的守护进程,从client(source)接收数据,转发给sink或者agent
3. flume三个组件
[source]
从数据生成器几首数据,以flume event形式传递给一个或多个channel
[channel]
临时存放source传递过来的event数据,缓存到sink消费为止,是source和sink之间的桥梁
[sink]
存储数据到hdfs/hbase,从channel提取数据(event),分发到目的地,sink的目的地可以是另个agent,也可以是*存储
注意:一个agent可以有多个source,sink和channel
[interceptor]
拦截器,在source和channel监控数据
[channel选择器]
在多通道情况下,采用哪个通道来传递数据,有两种类型通道选择器
Default channel selectors:
通道中复制每个事件
Multiplexing channel selectors:
通过判断event的heard信息,决定通道来发送数据
[sink processor]
沉槽处理器,从sink组中选择一个特定的sink进行调用,可以为sink创建容灾路径或者在多个sink之间实现负载军坑
[collector]
在agent后方运行
[multi-hop]
多级跳转,从sink到agent
[fan-out]
从一个source到多个channel
[fan-in]
从多个source到一个channel
错误处理
涉及两个事务,sender端和receiver端
sender端只有在接收到receiver的提交信号才提交事务