博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flume
阅读量:7035 次
发布时间:2019-06-28

本文共 3257 字,大约阅读时间需要 10 分钟。

hot3.png

Flume是一个高可用,高可靠,分布式海量日志采集、聚合和传输系统。

数据(日志信息)分布在N台机器上,想要把它们汇聚在一起来处理。

Flume支持在日志系统中定制各类数据发送方,用于收集数据;

同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。

Flume OG(original generation)和 Flume NG(next generation)是Flume的两个版本 NG在OG的基础之上,进行了里程碑式的改动:重构核心组件、核心配置以及代码架构。

21195449_5yYW.png

Flume 的核心是把数据从数据源收集过来,再送到目的地。

为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。 

Flume 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。

Event 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组,并可携带 headers 信息。

Event 代表着一个数据流的最小完整单元,从外部数据源来,向外部的目的地去。 

Flume 运行的核心是 Agent。它是一个完整的数据收集工具,含有三个核心组件,分别是 SourceChannel、Sink。

Source 可以接收外部源发送过来的数据。不同的 Source,可以接受不同的数据格式。比如有目录池(spooling directory)数据源,可以监控指定文件夹中的新文件变化,如果目录中有文件产生,就会立刻读取其内容。 

Channel 是一个存储地,接收 Source 的输出,直到有 Sink 消费掉 Channel 中的数据。

Channel 中的数据直到进入到下一个Channel中或者进入终端才会被删除。

Sink 写入失败后,可以自动重启,不会造成数据丢失,因此很可靠。 

Sink 会消费 Channel 中的数据,然后送给外部源或者其他 Source。如数据可以写入到 HDFS 或者 HBase 中。

记录一下Flume中的核心概念:

Agent Agent中包含多个sources和sinks。
Client 生产数据,运行在一个独立的线程。
Source 从Client收集数据,传递给Channel。用来消费传递到该组件的Event。
Sink 从Channel收集数据,将Event传递到Flow Pipeline中的下一个Agent
Channel 中转Event临时存储,保存Source传递过来Event,连接 sources 和 sinks 。
Events 一个数据单元,带有一个可选的消息头。可以是日志记录、 avro 对象等。

Agent是Flume中最小的运行单位,一个Agent中由Source、Sink和Channel三个组件构成。

如下图所示:

26134308_jF5E.png

Event是Flume中基本数据单位,Event中包含有传输数据及数据头数据包

Flume 命令行参数:

global options:  --conf,-c 
      use configs in 
 directory  --classpath,-C 
   append to the classpath  --dryrun,-d           do not actually start Flume, just print the command  --plugins-path 
 colon-separated list of plugins.d directories. See the                        plugins.d section in the user guide for more details.                        Default: $FLUME_HOME/plugins.d  -Dproperty=value      sets a Java system property value  -Xproperty=value      sets a Java -X optionagent options:  --conf-file,-f 
 specify a config file (required)  --name,-n 
      the name of this agent (required)  --help,-h             display help textavro-client options:  --rpcProps,-P 
   RPC client properties file with server connection params  --host,-H 
       hostname to which events will be sent  --port,-p 
       port of the avro source  --dirname 
        directory to stream to avro source  --filename,-F 
   text file to stream to avro source (default: std input)  --headerFile,-R 
 File containing event headers as key/value pairs on each new line  --help,-h              display help text  Either --rpcProps or both --host and --port must be specified.

使用flume-ng脚本启动Flume Agent 运行配置文件中指定的source和sink  启动命令类似于:

bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

配置文件示例:

# example.conf: A single-node Flume configuration# agent组件名称a1.sources = r1a1.sinks = k1a1.channels = c1# source 配置a1.sources.r1.type = netcata1.sources.r1.bind = localhosta1.sources.r1.port = 44444# sink 配置a1.sinks.k1.type = logger# 使用内存中Buffer Event Channela1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# 绑定 source 和 sink 到channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1

参考资料:

[0]  Flume NG:Flume 发展史上的第一次革命

[1]  Flume NG 简介及配置实战

转载于:https://my.oschina.net/darionyaphet/blog/406460

你可能感兴趣的文章
linux下xargs命令用法详解
查看>>
修改eclips多余的workspace空间
查看>>
面试常问的内容——路由技术
查看>>
相对和绝对路径、cd命令、创建删除目录、rm命令
查看>>
OC伪拷贝,浅拷贝,深拷贝快速理解
查看>>
shell编程之批量修改文件名笔记小结<二>
查看>>
AccountManagerCallback<V>
查看>>
为什么入门首选C言语
查看>>
我的友情链接
查看>>
海航60亿美元拿下英迈,有望进阶世界100强!
查看>>
分析软件工程师必备技能
查看>>
ubuntu 命令详解及使用技巧
查看>>
爱创课堂每日一题八十七天-Sass、LESS是什么?大家为什么要使用他们?
查看>>
深入分析 Java 中的中文编码问题
查看>>
第1章 方法的概述及基本使用
查看>>
Java的新项目学成在线笔记-day2(二)
查看>>
Linux学习—LVM快照功能
查看>>
全球问题—废旧电子废弃物的回收
查看>>
out of box拖拽上传功能关闭,系统property设置
查看>>
网络分流器|基于复合存储的100GbpsDPI技术
查看>>