zoukankan      html  css  js  c++  java
  • Flume概述

    @

    Flume定义

    Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。
    在这里插入图片描述

    Flume基础架构

    在这里插入图片描述

    Agent

    Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。
    Agent主要有3个部分组成,SourceChannelSink

    Source

    Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directorynetcat、sequence generator、syslog、http、legacy。

    Sink

    Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
    Sink组件目的地包括hdfsloggeravro、thrift、ipc、fileHBase、solr、自定义。

    Channel

    Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
    Flume自带两种Channel:Memory ChannelFile Channel

    • Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
    • File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

    Event

    传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由HeaderBody两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。
    在这里插入图片描述

    Flume的核心概念

    • source : 用户需要根据自己的数据源的类型,选择合适的source对象。
    • sink: 用户需要根据自己的数据存储的目的地的类型,选择合适的sink对象。
    • Interceptors(拦截器): 在source将event放入到channel之前,调用拦截器对event进行拦截和处理
    • Channel Selectors: 当一个source对接多个channel时,由 Channel Selectors选取channel将event存入。
    • sink processor: 当多个sink从一个channel取数据时,为了保证数据的顺序,由sink processor从多个sink中挑选一个sink,由这个sink开始。
  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/sunbr/p/13808653.html
Copyright © 2011-2022 走看看