首页 > 其他分享 >大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明

大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明

时间:2022-11-30 19:09:15浏览次数:79  
标签:Flume 代理 Source Sink 日志 Channel 分布式

业务现状分析

大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明_hdfs

问题:WebServer/Application Server分散在各个机器上,想用大数据平台Hadoop进行统计分析,日志如何收集到Hadoop平台上?

  1. shell脚本
    cp到hadoop集群的机器上,再通过hadoop的 fs -put 将日志传到HDFS上。
    问题1:容错如何做监控?如何server上传到hadoop集群上的时候某一台机器断掉了。
    问题2:高延时采用cp的方式执行的话,必须要指定一个间隔的时间,时效性不是太好。
    问题3:压缩原始日志一般情况下都是txt文本格式的,直接传输文本格式的日志IO开销大
    问题4:容错和负载均衡
    ====》所以有了flume的诞生
  2. flume :将日志从A到B移动数据
    configuration file
Flume概述

Flume是一种分布式,可靠且可用的服务,用于有效地收集聚合移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。比如从webserver(源端)-> flume ->hdfs(目的地)

它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。管理性

业界同类产品的对比

Flume:Cloudera捐献给Apache,使用java开发,使用简单
Scribe:Facebook开发,使用C/C++开发,负载均衡和容错不太好,使用简单,不再维护
Chukwa:yahoo开发转给Apache,java开发,负载均衡容错不太好,不再维护
Fluentd:ruby开发,支持跨平台
Logstash(收集、解析和转换日志 ):ELK(ElasticSearch,Logstash,Kibana)

Flume发展史

Clouera 0.9.2 Flume-OG
flume-728 Flume-NG => Apache
2012.7 1.0
2015.5 1.6 (推荐1.5版本以上)

Flume架构及核心组件官网地址 -> Documentation->Flume User Guide -> Configuarion

大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明_数据_02

核心组件

1.Source : 收集 —— 从什么地方采集数据

-> Flume Sources -> Avro Source,Thrift Source,Spooling Directory Source,Kafka Source,NetCat TCP Source,Exec Source,Custom Source(自定义source)

2.Channel : 聚集 —— 数据缓存池,临时存放数据

-> Flume Channels -> Memory Channel,File Channel,JDBC Channel,
Kafka Channel,Custom Channel(自定义channel)

3.Sink : 输出 —— 从channel中将数据读取出来送到目的地

-> Flume Sinks -> HDFS Sink,Hive Sink,Logger Sink,Avro Sink,ElasticSearchSink,HBaseSinks,Kafka Sink,Custom Sink(自定义sink)

架构

1.将一个agent的数据通过avro的方式串行传递给另一个agent

为了使数据跨多个代理或跃点流动,前一个代理的接收器和当前跃点的源必须是avro类型,接收器指向源的主机名(或IP地址)和端口。
大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明_其他_03

2.多个agent sink到同一个地方去

日志收集中的一种非常常见的情况是,大量的日志生成客户端将数据发送到连接到存储子系统的几个使用方代理。例如,从数百台Web服务器收集的日志发送到许多写入HDFS群集的代理。
在Flume中,可以通过为多个第一层代理配置一个avro接收器来实现这一点,它们均指向单个代理的avro源(同样,在这种情况下,您可以使用节俭的源/接收器/客户端)。第二层代理上的此源将接收到的事件合并到一个通道中,该通道由接收器消耗到其最终目的地。
大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明_其他_04

3.将同一个source通过不同的channel和sink,sink到不同的目的地

Flume支持将事件流复用到一个或多个目的地。这是通过定义一种流多路复用器来实现的,该流多路复用器可以将事件复制或选择性地路由到一个或多个通道。
上面的示例显示了来自代理“ foo”的源,将流分流到三个不同的通道。此扇出可以复制或多路复用。在复制流的情况下,每个事件都发送到所有三个通道。对于多路复用情况,当事件的属性与预配置的值匹配时,事件将传递到可用通道的子集。例如,如果将名为“ txnType”的事件属性设置为“ customer”,则它应转到channel1和channel3,如果它是“ vendor”,则应转到channel2,否则应到channel3。可以在代理的配置文件中设置映射。
大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明_hdfs_05

标签:Flume,代理,Source,Sink,日志,Channel,分布式
From: https://blog.51cto.com/u_12528551/5900170

相关文章

  • springboot日志之日志框架分类和选择
    导入:小张写日志写了一个统一的接口层:日志门面(日志的一个抽象层):logging-abstract.jar给项目中导入具体的日志实现就可以了。以前写的zhanglogging.jar,zhanglogging-good.jar......
  • springboot日志之slf4j使用原理
    1、如何在系统中使用slf4j?给系统里面导入slf4j的jar和logback的实现jar。日志方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里面的方法。importorg.slf4j.Logge......
  • springboot日志之其他日志框架统一转换为slf4j
    a(slf4j+logback):Spring(commons-logging)、Hibernate(jboss-logging)、Mybatis。。。怎么统一日志记录?即使是别的框架也一起统一使用slf4j进行输出。如何让系统中所有的日志都统......
  • springboot日志之切换日志框架
    1、可以按照slf4j的日志适配图进行相关的配置slf4j+log4j:打开依赖树,exclude掉不用的依赖导入适配包resources下添加log4j.properties2、切换为log4j2注释掉excludestarter-......
  • 单位自启动脚本 和日志处理等
     在/root/下建立2个文件,一个startup.sh 一个start文件(用于自启动)。vimstartup.sh#!/bin/bashjava-jar/root/www/warehouse.jar& vimstart#!/b......
  • 数据库的Undo日志与Redo日志
    Undo日志主要用来恢复到事务开始前的状态更新前写入日志旧值commit之后,前面的日志还需要吗?分情况1.单线程可以清理2.多线程需要等到所有并行线程提交后才能(检查......
  • SQL server 2016日志文件的清理
    SQL资源对象管理器1、sql库-->属性-->文件得到sql库的数据路径和日志路径,日志名称等;2、新建查询管理器:USEMASTERGOALTERDATABASEais20190925150901SETRECOVERY......
  • SpringCloud之Config分布式配置文件中心
    分布式系统面临的配置问题:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息......
  • 论项目中日志处理的正确操作(springboot案例)
    理论和日志的重要不需要重复,各位都明白,企业中甩锅 查询记录  必要的东西,直接贴上代码案例 maven<dependency><groupId>org.springframework.boot</groupI......
  • Mybatis源码分析(十七) - 源码包分析【日志模块】
    mybatis源码下载地址:​​https://github.com/mybatis/mybatis-3​​MyBatis源码导入过程:下载MyBatis的源码检查maven的版本,必须是3.25以上,建议使用maven的最新版本mybatis的......