大数据求索(6): 使用Flume进行数据采集单机监控端口、监控文件、跨节点等多种方式

大数据求索(6): 使用Flume进行数据采集

大数据最好的学习资料是官方文档。

Flume官方文档地址http://flume.apache.org/

Flume简单介绍

Flume是一种分布式的、可靠的且可用的服务,用于高效收集、聚合和移动大量日志数据。它具有基于流式数据的简单灵活架构。它具有可靠性机制和许多故障转移和恢复机制,具有强大的容错能力。它使用简单的可扩展数据模型,允许在线分析应用程序。

基本架构

它包括三个基本组件:

  • source
  • sink
  • channel

重要名词

Event:消息,事件,在Flume中数据传输的单位是“event”,Flume将解析的日志数据、接收到的TCP数据等分装成events在内部Flow中传递。

Agent:临近数据源(比如logs文件)的、部署在宿主机器上的Flume进程,通常用于收集、过滤、分拣数据,Flume Agent通常需要对源数据进行“修饰”后转发给远端的Collector。

设计目标

1. 可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了两种级别的可靠性保障,分别为:

  • end-to-end:收集数据的agent首先将event写到磁盘上,当数据传送成功后,再删除;如果传送失败,可以重新发送。
  • 事务:Sources和Sinks在存储、检索的操作都会分别分装在由Channel提供的事务中,这可以确保一组消息在Flow内部点对点传递的可靠性(source->channel->sink)。即使在多级Flows模式中,上一级的sink和下一级的source之间的数据传输也运行在各自的事务中,以确保数据可以安全的被存储在下一级的channel中。
2. 可扩展性

Flume采用了三层架构,分别为source、channel和sink,每一层均可以水平扩展。三个组件构成一个Agent,不同Agent之间又可以连接起来,形成数据之间的流通。

重要名词概念解释

  • agent:Flume内部组件之一,用于解析原始数据并封装成event、或者是接收Client端发送的Flume Events;对于Flume进程而言,source是整个数据流(Data Flow)的最前端,用于“产生”events。说白了,这其实是一个“读”行为。
  • Flume内部组件之一,用于“传输”events的通道,Channel通常具备“缓存”数据、“流量控制”等特性;Channel的upstream端是Source,downstream为Sink。这个一般放在内存中。
  • Sink:Flume内部组件之一,用于将内部的events通过合适的协议发送给第三方组件,比如Sink可以将events写入本地磁盘文件、基于Avro协议通过TCP方式发给其他Flume,可以发给kafka等其他数据存储平台等;Sink最终将events从内部数据流中移除。这其实是一个“写”行为。

常见架构:

  • 多agent流

    多个agent流

  • 多个日志客户端汇集到一个存储器

    多日志客户端

  • 多路复用流

    A fan-out flow using a (multiplexing) channel selector

    总结起来,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值