分布式日志收集框架Flume--

本文详细介绍了Flume,一个用于高效收集、聚合和移动大规模日志数据的分布式服务。内容涵盖Flume的工作原理、核心组件、常见应用场景、架构设计及实战案例,旨在帮助读者理解如何利用Flume进行日志收集。
摘要由CSDN通过智能技术生成


业务现状:公司有Hadoop集群;同时拥有大量日志数据;你想要把大量日志数据放入Hadoop中进行分析。

  • WebServer/ApplicationServer分散在各个机器上
  • 想大数据平台Hadoop进行统计分析
  • 日志如何收集到Hadoop平台上
  • 解决方案及存在的问题
    在这里插入图片描述
    如何解决我们的数据从其他的server上移动到Hadoop之上???
     shell cp hadoop集群的机器上, hadoop fs -put … /
    缺点:
    1、无法做监控
    2、必须间隔时间;时效性不好;不是实时的
    3、网络传输对于io开销大
    4、如何做负载均衡等等

关于日志收集

关于服务器日志

  • 服务器日志是大数据系统中最主要的数据来源之一
  • 服务器日志可能包含的信息:
    • 访问信息
    • 系统信息
    • 其他业务信息
  • 基于服务器日志的应用:
    • 业务仪表盘:PV,UV等
    • 线上查错:错误日志查询
    • 系统监控:调用链,接口访问统计等
    • 其他数据应用
  • 服务器日志的特点:
    • 不间断,流式产生
    • 数据量大,信息量大
    • 源头分散

日志采集系统的一般架构

在这里插入图片描述

日志采集系统的设计要求

  • 系统可用性:采集系统自身的健壮性
  • 可扩展性:可以随着应用系统的规模及数据量的增加而线性扩展
  • 可靠性:不会丢失数据
  • 灵活性:支持多种数据源;支持多种处理方式;支持多种采集目
    的地;支持对数据的预处理

Flume概述

官方文档:学习建议多多参考官方文档
http://flume.apache.org/FlumeUserGuide.html

  • Flume官网: http://flume.apache.org/
  • Flume是由Cloudera提供的一个分布式、高可靠、高可用的服务用于分布式的海量日志的高效收集、聚合、移动系统
  • Flume设计目标
    • 可靠性
    • 扩展性
    • 管理性
  • 业界同类产品对比
    • (***)Flume: Cloudera/Apache Java
    • Scribe: Facebook C/C++ 不再维护
    • Chukwa: Yahoo/Apache Java 不再维护
    • Kafka:(有人可能会说这个框架)这是个消息队列;和flume不是一类
    • Fluentd: Ruby
    • (***)Logstash: ELK(ElasticSearch,Kibana)
  • Flume发展史
    • Cloudera 0.9.2 Flume-OG
    • flume-728 Flume-NG ==> Apache
    • 2012.7 1.0
    • 2015.5 1.6 (*** + )
    • 2016.10 1.7
    • 2017.10 1.8
      Flume是一种分布式、可靠和可用的服务,用于有效地收集、聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有健壮性和容错性,具有可调的可靠性机制和许多故障转移和恢复机制。它使用一个简单的可扩展数据模型,支持在线分析应用程序。
      在这里插入图片描述

版本

  1. Flume OG(original generation, 2009年7月):分布式日志收集系统,
    有Master概念,依赖于Zookeeper,分为agent,collector,
    storage三种角色
  2. Flume NG(next generation, 2011年10月):代码重构,功能精简,
    去掉master,collector角色,专注数据的收集与传递

Flume架构及核心组件

Flume 工作原理解析

在这里插入图片描述

工作流程

在这里插入图片描述

核心组件

在这里插入图片描述
Flume Flow:

  • Flow:数据采集流程
  • Event:消息处理的最小单位,带有一个可选的消息头(head存储不同web消息的元数据ip:interceptor)
  • Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
  • Source:以event为单位接收信息,并确保信息被推送(push)到channel
  • Channel:缓存信息,确保信息在被sink处理前不会丢失,相当于一个小型消息队列
  • Sink:从channel中拉取(pull)并处理信息
  • Interceptor:event拦截器,可以修改或丢弃event

处理流程:
source以event为单位从数据源接收信息,然后保存到一个或多个channel中
(可以经过一个或多个interceptor的预处理),sink从channel中拉取并处理
信息(保存,丢弃或传递到下一个agent),然后通知channel删除信息

Source

在这里插入图片描述

Channel

在这里插入图片描述

Sink

在这里插入图片描述

架构一:顺序流

为了在多个Agent或跃点source之间传输数据,前一个代理的sink和当前source需要是avro类型,接收器指向源的主机名(或IP地址)和端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值