• Flume理论


    Flume定义

    1.Flume是什么?

    • Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统
    分布式的海量日志采集、聚合和传输的系统
    分布式的海量日志采集、聚合和传输的系统
    分布式的海量日志采集、聚合和传输的系统
    
    日志日志日志!!!重要的事情说三遍
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.定义

    • Flume基于流式架构,灵活简单
    • 适用于实时推送事件,尤其是在数据流是持续的且量级很大的情况

    Flume组成架构

    1.简单架构图

    在这里插入图片描述

    2.详细架构图

    在这里插入图片描述

    3.讲解

    • Agent
    Agent是一个JVM进程
    	以事件的形式将数据从源头送至目的,是Flume数据传输的基本单元
    3个部分组成:SourceChannelSink
    
    • 1
    • 2
    • 3
    • Source
    Source负责接收数据到Flume Agent的组件
    	Source组件可以处理各种类型、各种格式的日志数据
    		日志数据!!!!!
    	包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy
    
    • 1
    • 2
    • 3
    • 4
    • Channel
    Channel是位于SourceSink之间的缓冲区
    	类似于生产者消费者模式,方式写数据过快而读数据过慢
    Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作
    	1.Memory Channel
    		基于内存,关机或重启或程序死亡,机器宕机等情况会导致数据丢失
    		在不需要关心数据丢失的情景下适用
    	2.File Channel
    		基于磁盘,以上情况都不会导致数据丢失,但大量的IO也是系统的瓶颈
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • Sink
    Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent
    Sink是完全事务性的
    	在从Channel批量删除数据之前,每个SinkChannel启动一个事务
    	批量事件一旦成功写出到存储系统或下一个Flume AgentSink就利用Channel提交事务
    	事务一旦被提交,该Channel从自己的内部缓冲区删除事件
    Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、nullHBase、solr、自定义
    常用Sink
    	1.Logger Sink:记录INFO级别的日志,一般用于调试
    	2.File Roll Sink:在本地文件系统中存储事件,每隔指定时长生成文件保存这段事件内收集到的日志信息
    	3.Avro Sink:实现多级流,扇出流(1对多)扇入流(多对1)的基础,实现多个flume节点的连接
    		若要实现扇出,需要配置多个channel与sink,如果只配置一个channel,会被多个sink互斥消耗掉
    		Hadoop创始人Doug Cutting创建的一种语言无关的数据序列化和RPC框架
    		RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
    	4.HDFS Sink
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • Event
    传输单元,Flume数据传输的基本单元
    以事件的形式将数据从源头送至目的地
    
    • 1
    • 2

    Agent内部原理

    1.图解

    在这里插入图片描述

    2.Channel选择器有两种类型

    • Replicating Channel Selector(默认):将source发过来的event发往所有Channel
    • Multiplexing Channel Selector:可配置source发过来的event发往哪些Channel

    Flume拓扑图

    1.Flume Agent连接

    在这里插入图片描述

    2.单source,多channel、sink

    在这里插入图片描述

    3. Flume Agent聚合

    在这里插入图片描述

    4.Flume负载均衡

    在这里插入图片描述

  • 相关阅读:
    getBoundingClientRect、offset、page、client、screen相关API及释义合集
    面向对象——实现类的基本操作
    计数与期望
    满地坑!细数List的10个坑
    有效预警6要素:亿级调用量的阿里云弹性计算SRE实践
    智能化小区管理系统(JSP+java+springmvc+mysql+MyBatis)
    红队内网攻防渗透:内网渗透之内网对抗:隧道技术篇&防火墙组策略&FRP&NPS&Chisel&Socks代理&端口映射&C2上线
    TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频
    Windows安装git
    代码越写越乱?那是因为你没用责任链
  • 原文地址:https://blog.csdn.net/weixin_51699336/article/details/125488236