• Flume组件汇总 source、sink、channel


    一、Flume Source

    Source类型 说明
    Avro Source 支持Avro协议(实际上是Avro RPC),内置支持
    Thrift Source 支持Thrift协议,内置支持
    Exec Source 基于Unix的command在标准输出上生产数据
    JMS Source 从JMS系统(消息、主题)中读取数据,ActiveMQ已经测试过
    Spooling Directory Source 监控指定目录内数据变更
    Twitter 1% firehose Source 通过API持续下载Twitter数据,试验性质
    Netcat Source 监控某个端口,将流经端口的每一个文本行数据作为Event输入
    Sequence Generator Source 序列生成器数据源,生产序列数据

    Syslog Sources

    syslogtcp

    multiport_syslogtcp

    syslogudp

    读取syslog数据,产生Event,支持UDP和TCP两种协议
    HTTP Source 基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式
    Legacy Sources 兼容老的Flume OG中Source(0.9.x版本)
    Avro Legacy Source  
    Thrift Legacy Source  
    Scribe Source  
    Custom Source 自定义Source

    二、Flume Sink

    Sink类型 说明
    HDFS Sink 数据写入HDFS
    Logger Sink 数据写入日志文件
    Avro Sink 数据被转换成Avro Event,然后发送到配置的RPC端口上
    Thrift Sink 数据被转换成Thrift Event,然后发送到配置的RPC端口上
    IRC Sink 数据在IRC上进行回放
    File Roll Sink 存储数据到本地文件系统
    Null Sink 丢弃到所有数据
    HBase Sink 数据写入HBase数据库
    Morphline Solr Sink 数据发送到Solr搜索服务器(集群)
    ElasticSearch Sink 数据发送到Elastic Search搜索服务器(集群)
    Kite Dataset Sink 写数据到Kite Dataset,试验性质的
    Custom Sink 自定义Sink实现

    三、Flume Channel

    Channel类型 说明
    Memory Channel Event数据存储在内存中
    JDBC Channel Event数据存储在持久化存储中,当前Flume Channel内置支持Derby
    File Channel Event数据存储在磁盘文件中
    Spillable Memory Channel Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)
    Pseudo Transaction Channel 测试用途
    Custom Channel 自定义Channel实现

    Channel Selector

    Sink Processor

    Event Serializer

    Event Deserializers

    在source组件上指定,反序列化,将输入(文件、流)解析成event的方式,

    Deserializer类型 说明
    LINE 默认值,将文本输入的每行转换成一个event
    AVRO 读取avro文件,将其中的每条avro记录转换成一个event,每个event都附带着模式信息
    BlobDeserializer 将整个二进制大数据转换成一个evnt,通常一个BLOB就是一个文件,比如PDF、JPG

    比如:

    1
    2
    a1.sources=s1
    a1.sources.s1.deserializer=LINE

    注意:

       LINE有个设置每行字符个数的属性:deserializer.maxLineLength,默认是2048,大于这个字符数的行将被截断。

       BlobDeserializer有个设置文件大小的属性:deserializer.maxBlobLength默认是100000000(大约95M),大于这个值的文件将被拆分成多个文件。

    Event Serializers

    在sink组将上指定,序列化,将event对象转换成文件的方式。

    Serializer类型 说明
    TEXT(Body Text Serializer) 默认值,将event中body里的数据不做改变的转换成输出流,event的header将被忽略
    AVRO_EVENT(Avro Event Serializer) 将event转换成avro文件
    BlobDeserializer 将整个二进制大数据转换成一个evnt,通常一个BLOB就是一个文件,比如PDF、JPG

    Interceptor

    拦截器可以修改或删除event。

    拦截器可以组成拦截器链,中间用空格分隔,拦截器的配置顺序即是它们的执行顺序。

    Handler类型 说明
    Timestamp Interceptor 向event header中添加了timestamp变量,值是时间戳
    Host Interceptor 向event header中添加了host变量,可以通%{host}引用(比如在HDFS sink中的路径占位符)
    Static Interceptor 配置一个静态的值到event header里,多个静态值需要配多个static interceptor
    UUID Interceptor 向event header里添加变量id,值是随机生成的uuid,可以用这个唯一标识一个event
    Morphline Interceptor 使用morphline配置文件过滤event。
    Regex Filtering Interceptor 使用正则表达式过滤(include或exclude)event。
    Regex Extractor Interceptor 使用正则表达式来向header中添加key、value。

    配置实例:

    1
    2
    3
    4
    5
    6
    a1.sources=s1
    ...
    a1.sources.s1.interceptors=i1 i2
    a1.sources.s1.interceptors.i1.type=host
    a1.sources.s1.interceptors.i1.hostHeader=host
    a1.sources.s1.interceptors.i2.type=timestamp

    type可以是全限定类名或者是别名

  • 相关阅读:
    如何将网格式报表打印成其它样式
    拥有与实力不相称的脾气是种灾难——北漂18年(23)
    8.8.1 Optimizing Queries with EXPLAIN
    mysql 没有rowid 怎么实现根据rowid回表呢?
    secondary index
    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
    mysql 中key 指的是索引
    8.5.4 Optimizing InnoDB Redo Logging 优化InnoDB Redo 日志
    8.5.3 Optimizing InnoDB Read-Only Transactions 优化InnoDB 只读事务
    8.5.1 Optimizing Storage Layout for InnoDB Tables InnoDB表的存储布局优化
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/6284243.html
Copyright © 2020-2023  润新知