flume

flume简介

是Apache软件基金顶级项目,一个分布式、可信任的弹性系统,用于高效收集、汇聚和移动
大规模日志信息从多种不同的数据源到一个集中的数据存储中心。

主要功能

– 支持在日志系统中定制各类数据发送方,用于收集数据
– Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力
- 支持多种数据源

特点

• Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中
• 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
• 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数
  据,比如facebook,twitter,电商网站如亚马逊,flipkart等
• 支持各种接入资源数据的类型以及接出数据类型
• 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
• 可以被水平扩展


flume核心

外部架构


• 数据发生器(如:facebook,twitter)产生的数据被被单个的运行在数据发生器所在服务器上的agent所收集,
  之后数据收容器从各个agent上汇集数据并将采集到的数据存入到HDFS或者HBase中

  flume开发,主要是编写conf文件,每个conf都有自己的功能

事件(Flume Event)

• Flume使用Event对象来作为传递数据的格式,是内部数据传输的最基本单元
• 由两部分组成:转载数据的字节数组+可选头部


• Header 是 key/value 形式的,可以用来制造路由决策或携带其他结构化信息(如事件的时间戳
或事件来源的服务器主机名)。你可以把它想象成和 HTTP 头一样提供相同的功能——通过该方
法来传输正文之外的额外信息。Flume提供的不同source会给其生成的event添加不同的header
• Body是一个字节数组,包含了实际的内容,

代理(Flume Agent)

• Flume内部有一个或者多个Agent
• 每一个Agent是一个独立的守护进程(JVM)
• 从客户端哪儿接收收集,或者从其他的Agent哪儿接收,然后迅速的将获取的数据传给下一个目的节点Agent


• Agent主要由source、channel、sink三个组件组成。

Agent Source

• 一个Flume源
• 负责一个外部源(数据发生器),如一个web服务器传递给他的事件
• 该外部源将它的事件以Flume可以识别的格式发送到Flume中
• 当一个Flume源接收到一个事件时,其将通过一个或者多个通道存储该事件

Agent Channel

• 通道:采用被动存储的形式,即通道会缓存该事件直到该事件被sink组件处理
• 所以Channel是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存
起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个
完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source
和sink链接
• 可以通过参数设置event的最大个数
• Flume通常选择FileChannel,而不使用Memory Channel
– Memory Channel:内存存储事务,吞吐率极高,但存在丢数据风险,把数据写到内存,只要agent出问题,数据就会丢失
– File Channel:本地磁盘的事务实现模式,保证数据不会丢失(WAL实现),把数据写到磁盘,性能相对差一些(用的较多)
    WAL:write ahead logging 预写
    先写执行操作,再写数据,当数据写失败,(之前留下了执行操作)再执行一遍操作

Agent Sink

• Sink会将事件从Channel中移除,并将事件放置到外部数据介质上
    例如:通过Flume HDFS Sink将数据放置到HDFS中,或者放置到下一个Flume的Source,等到
         下一个Flume处理。
    对于缓存在通道中的事件,Source和Sink采用异步处理的方式
• Sink成功取出Event后,将Event从Channel中移除
• Sink必须作用于一个确切的Channel
• 不同类型的Sink:
    存储Event到最终目的的终端:HDFS、Hbase
    自动消耗:Null Sink
    用于Agent之间通信:Avro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值