首页 > 代码库 > Flume简介与使用(一)

Flume简介与使用(一)

Flume简介与使用(一)

Flume简介

  Flume是一个分布式的、可靠的、实用的服务——从不同的数据源高效的采集、整合、移动海量数据。

  技术分享

  分布式:可以多台机器同时运行采集数据,不同Agent的之前通过网络传输数据

  可靠的:Flume会将采集的数据缓存在Channel里,当Sink确认数据被接收了后才会从Channel里删除

  实用的:Flume的使用是非常简单可用的,易于扩展,只需要修改配置文件的选项,就可以定制不同的Source、Channel、Sink,这得益于其精妙的设计

  Agent是Flume的一个JVM进程,其中包含Source、Channel、Sink三个组件,要采集的数据经过定制化的Source缓存到Channel,Channel是一个队列,Source向里面插入数据,Sink从里面取数据,当Sink确认数据被下一跳Agent或者DB等接收后会将数据从Channel删除。

  Flume最巧妙的地方就是其模块化的设计。在实际的应用中要采集的数据可能会来自同的数据源,可以是命令的屏幕输出、应用程序的日志、网络流量等等,用户可以定制不同的Source来分别采集。同样也可以根据不同需求定制自己的Channel和Sink。下表是Flume1.6.0支持的部分组件类型

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读取syslog数据,产生Event,支持UDP和TCP两种协议
HTTP Source基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式
Legacy Sources兼容老的Flume OG中Source(0.9.x版本)

 

 

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

 

 

Sink类型 说明
Kafka Sink把数据写入Kafka topic
Hive Sink把数据写入Hive数据库或分区
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安装

  这篇先介绍如何安装Flume,以及如何设置配置文件,后面再介绍如何编程采集日志。

  一、Flume1.6.0版本求JVM1.6及以上版本,安装好JDK(自带JVM)后,去Flume官网下载二进制格式的压缩包并解压。

  二、进入conf目录下:cp flume-conf.properties.template myFlumeConf.properties

  三、根据自己需要修改里面的配置,官网上有很多配置的定义。     

    配置好的属性文件跟下面的类似:

技术分享

  四、启动Flume

    在Flume目录下运行:

    bin/flume-ng agent --conf conf --conf-file conf/trafficXXX.properties --name agent1 -Dflume.root.logger=INFO,console

    其中--conf指定配置文件路径,--conf-file指定配置文件,--name指定配置文件里的要启动agent名字(一个配置文件里可以有多个agent的定义),-Dflume.root.logger指定Flume运行时输出的日志的级别和地方。

 

Flume简介与使用(一)