[Flume] 02 -flume-ng、核心概念、Source/Channel/Sink类型

Flume 1.6.0

关键词:
flume-ng、核心概念、Source/Channel/Sink类型

0、Flume-og和Flume-ng分别是什么鬼?

Cloudera:由于Hadoop(开源)深受客户欢迎,很多公司就推出了各自版本的Hadoop,也有一些公司围绕Hadoop开发产品。而Cloudera是Hadoop生态系统中,规模最大、知名度最高的公司。它出售基于Hadoop的软件、也发布自家版本的Hadoop产品(如 Cloudera Hadoop,简称 CDH),帮助订阅客户管理数据。

Cloudera开发的分布式日志收集系统Flume,可以实时地将分布在不同节点、机器上的日志收集到存储系统中。

  • Flume的初始发行版本统称Flume-og(original generation),属于Cloudera;

随着Flume功能扩展,Flume-og代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点,尤其是Flume-og的最后一个发行版本0.94.0日志传输不稳定现象严重。为了解决这些问题,Cloudera对Flume进行了里程碑式的改动:重构核心组件、核心配置、代码架构。

  • 重构后的版本统称为Flume-ng(next generation),也就是说,之后的版本都可以叫Flume-ng。也就是 Flume 1.x版本

同时,Apache将Flume纳入旗下,也叫Apache Flume。
注意:ng是完全不兼容og的,ng更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡。

Flume-ng架构图:
在这里插入图片描述

总结:它们都只是一个称呼,重点是现在用Flume-ng

1、flume-ng压缩包(不是源码)结构

源码可查看GitHub-Apache Flume

[root@master apache-flume-1.6.0-bin]# pwd
/usr/local/src/apache-flume-1.6.0-bin
[root@master apache-flume-1.6.0-bin]# tree -Ld 1
.
├── bin
│   ├── flume-ng ----flume-ng启动shell脚本
│   ├── flume-ng.cmd
│   └── flume-ng.ps1
├── conf -----配置文件
│   ├── flume-avro.conf
│   ├── flume-conf.properties.template
│   ├── flume-env.ps1.template
│   ├── flume-env.sh
│   ├── flume-env.sh.template
│   ├── flume-exec.conf
│   ├── flume-netcat.conf
│   └── log4j.properties
├── docs ------文档
├── lib ------各种jar包
└── tools

5 directories

2、几个核心概念

在这里插入图片描述

  • Event:一个数据单元,带有一个可选的消息头。是Flume数据传输的基本单元
  • Flow:Event从源点到达目的点的迁移的抽象
  • Client:操作位于源点处的Event,将其发送到Agent
  • Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
    • Source:用来消费传递到该组件的Event
    • Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
    • Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)
    • Interceptor:Source读取event发送到Sink时,在event header中加入一些有用信息、或对event的内容进行过滤,完成初步的数据清洗

4、Source/Channel/Sink-数据类型

source类型说明channel类型说明sink类型说明
Avro Source支持Avro协议(实际上是Avro RPC),内置支持Memory ChannelEvent数据存储在内存中HDFS Sink数据写入HDFS
Thrift Source支持Thrift协议,内置支持JDBC ChannelEvent数据存储在持久化存储中,当前Flume Channel内置支持DerbyLogger Sink数据写入日志文件
Exec Source基于Unix的command在标准输出上生产数据,如tail -fFile ChannelEvent数据存储在磁盘文件中Avro Sink数据被转换成Avro Event,然后发送到配置的RPC端口上
JMS Source从JMS系统(消息、主题)中读取数据Spillable Memory ChannelEvent数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件Thrift Sink数据被转换成Thrift Event,然后发送到配置的RPC端口上
Spooling Directory Source监控指定目录内数据变更Pseudo Transaction Channel测试用途IRC Sink数据在IRC上进行回放
Twitter 1% firehose Source通过API持续下载Twitter数据,试验性质Custom Channel自定义Channel实现File Roll Sink存储数据到本地文件系统
Netcat Source监控某个端口,将流经端口的每一个文本行数据作为Event输入Null Sink丢弃到所有数据
Sequence Generator Source序列生成器数据源,生产序列数据HBase Sink数据写入HBase数据库
Syslog Sources读取syslog数据,产生Event,支持UDP和TCP两种协议Morphline Solr Sink数据发送到Solr搜索服务器(集群)
HTTP Source基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式ElasticSearch Sink数据发送到Elastic Search搜索服务器(集群)
Legacy Sources兼容老的Flume og中Source(0.9.x版本)Kite Dataset Sink写数据到Kite Dataset,试验性质的
Kafka Source读取Kafka数据Custom Sink自定义Sink实现

Apache Flume 官网
Apache Flume GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值