Flume
是分布式、可靠、可用性好,用于收集、聚合、移动大量数据。
基于流计算的简单灵活框架。
用于在线分析。
优点:
1. 可以和任意集中式存储进行集成
2. 输入数据的速度大于存储速度,flume会进行缓冲
3 flume提供上下文路由(数据流路线)
4. flume中的事务基于channel,提供了两个事务模型(sender、receiver)确保消息可靠发送。
5. 可靠 容错 可伸缩 可管理 可定制化
Hadoop Put命令的缺点:
1. Put一次只能传输一个文件,当文件增大速度大于传输速度,传输就不及时。
2. Put只能传输已写完的数据,不能传输持续写入过程中的数据。
HDFS的缺点
HDFS写入操作完成之前,文件大小是0,所以文件只能一次性整个写入。如果写入过程被中断,已写入的数据会丢失。
Flume agent
---------------------------------------------
1. 描述
在数据生成器运行的节点上运行单独的flume agent来收集数据,推送到hdfs。
2. Flume Event
事件是flume的传输单元。主要是byte[],可以含有一些header信息。在source和destination之间。
3. Flume Agent
每个agent是一个独立的java进程,从客户端(或agent)接收数据,然后转发到下一个destination(sink | agent)。
agent包含三个组件:
a. source [源头]
从事件生成器接收数据,已event事件的形式传给一个或多个channel。
b. channel [通道]
从source接收Flume agent,作为临时存放地,缓存到buffer中,直到sink将其消费掉。是source和sink之间的桥梁。
channel是事务的,可以和多个source或sink协同。
c. sink [沉槽]
存放数据到hdfs,从channel中消费event,并分发给destination。sink的destination也可以是另一个agent或hdfs。
注意:一个Flume的agent,可以有多个source、channel、sink。