Flume大数据日志拉取

Flume

Flume简介

Flume概述

  • Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据
  • 同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力

Flume使用场景

  • 线上数据一般主要是落地(存储到磁盘)或者通过socket传输给另外一个系统

Flume的体系架构

  • 比较核心的组件

    • Client:Client生产数据,运行在一个独立的线程。
    • Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
    • Flow: Event从源点到达目的点的迁移的抽象。
    • Agent: 一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。)
    • Source: 数据收集组件。(source从Client收集数据,传递给Channel)
    • Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个消息队列。)
    • Sink: 从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话(Sink从Channel收集数据,运行在一个独立线程。)
  • Flume的采集的大致流程

    • 如图

Flume的组件详解

  • Agent结构

    • Flume 运行的核心是 Agent。Flume以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具

    • 含有三个核心组件

      • source

        • (数据输入的方式,以及数据输入的方式<参数>)
        • source是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(event) 里,然后将事件推入Channel中
      • channel

        • (用来缓存source递过来的数据,并形成一个个event时间,等待sink来拿)
        • Channel是连接Source和Sink的组件,大家可以将它看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件
      • sink

        • (数据输出的方式,将channel整理好的一个个event,传送到指定地方)
        • Sink从Channel中取出事件,然后将数据发到别处,可以向文件系统、数据库、 hadoop存数据,也可以是其他agent的Source

Flume特性

  • 复杂流动

    • Flume允许用户构建多跳流程,其中事件在到达最终目的地之前会通过多个代理传播
    • 它还允许扇入和扇出流,上下文路由和备份路由(故障转移)

Flume优点

  • 当收集数据的速度超过将写入数据的时候,Flume会在数据生产者和数据收容器间做出调整
  • Flume的管道是基于事务,保证了数据在传送和接收时的一致性
  • Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的
  • 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据
  • 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等

Flume执行流程

Flume事务

  • 推送事务流程

    • doPut: 把批数据写入到临时缓冲区putList
    • doCommit: 检查Channel容量是否足够,如果容量足够则把putList里的数据发送到Channel
    • doRollBack:如果Channel容量不够,则把数据回滚到putList
  • 拉取事务流程

    • doTake:把数据读取到临时缓冲区takeList
    • doCommit:检查数据是否发送成功,成功的话,则把event从takeList中移除
    • doRollBack:如何发送失败,则把takeList的数据回滚数据到Channel
  • 可靠

    • 只有当sink接收到,数据落地完成的信息之后,才会将数据从通道中删除
    • 数据传输的方式不是byte,而是一个个的event Flume使用事务性方法来确保事件的可靠传递
  • 可恢复

    • 当数据丢失了,只有从存储在磁盘的方式,才能将数据找回

Flume使用

监控端口数据

flume到flume

  • flume1

  • flume2

Exec Source

Spooling Source

TailDir

hdfs sink

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值