Flume 数据采集 概述: Flume 是一个数据采集工具,主要可以理解为对日志数据或者其他数据的采集。可以对例如日志数据进行采集传输到我们想要传输的地方,比如从本地文件系统采集数据到HDFS的HIVE目录下获取HDFS的其他目录,提供HIVE进行数据分析。 Flume运行方式为Agent Flume,如果有多个数据源,并且文件系统,则需要启动多个Agent Flume 进行数据采集。 组成: Flume有三大组件:Source,Channel,Sink, Source:指定采集数据源,类型:spooldir(本地系统),MySql, Source 不仅仅可以定义数据源信息,还可以定义检索文件类型,或者自定义文件获取方式 Channel:通道,通过Channel连接Source和Sink,中间作缓冲,提供适配,类型:Memery,File,JDBC Channel 还可以指定文件缓存大小 Sink:指定数据输出目标系统,类型:HDFS,Hive,HBase 如果Sink输出为HDFS,Hive,则还可以指定文件大小,文件前后缀,文件读写周期等。 安装: 1. 解压Flume安装包 2. 配置系统配置文件 flume-site.xml(FADOOP_HOME,HDFS_HOME,ZooKeeper_HOME),之所以分开是因为Flume是Cloudra提供的,他把HDFS与MapReduce分开了,他提供了整合了的HADDOOP 大数据平台运行框架,更加方便部署。也有可能需要指定HBASE,HIVE等。 3. 配置数据采集业务配置文件 ***.xml 4. 启动Flume 运行机制:Flume通过Agent 方式运行数据采集,可以部署在多台机器,主要根据数据源存储形态来具体决定,如果数据源为多个文件系统,则需要运行多套Agent来采集,如果数据源为Mysql,则一个Agent就够了。Flume通过配置文件定义数据的采集-Source阶段,数据缓存-Channel阶段,及数据发送-Sink阶段。首先Source读取数据文件到Channel,Channel缓存起来,达到触发条件(触发条件自己定义或者默认)则会发动到Sink端进行保存,Sink端对发送的数据也定义定,包括存储文件大小,名称,前后缀等。 重点: 业务配置文件 ***.xml : 一个xml文件里面可以定制多套 FCS流程,即在定义时可以同时存在几套FCS流程在XML文件中,我们在启动Flume时需要指定FCS流程的名称来区分 多级Agent:我们可以指定多个Agent进行关联操作,即一个Agent的Sink输出为另一个Agent的Source输入。 比如Agent1为Agent2 提供输入,则Agent1 输出类型为:Avro Source,Qgent1的输入类型可以为任何允许的输出,Agent2的 输入类型为 :Avro SinK,Agent2的输出类型为允许的任何输出。 Flume是基于事务的,可以保证数据的传输时发送与接受的一致性。 Sample:
#先配置单通道,定义source,channel,sink,它们分别都可以配置多份,比如n个channel和n个sink
#a1 是该agent的名字,在启动的时候需要指定agent的名字
a1.sources=r1
a1.channels=c1
a1.sinks=s1
##############配置source###################
#source的类型
a1.sources.r1.type=spooldir
#spooldir类型的source监控的目录
a1.sources.r1.spoolDir=/home/hadoop/data/flume
#0.0.0.0表示本机
a1.sources.r1.bind=0.0.0.0
#使用的端口
a1.sources.r1.port=44445
#指定sink类型
a1.sinks.s1.type=logger
#指定channel类型
a1.channels.c1.type=memory
#buffer可以保存多少个event
a1.channels.c1.capacity=1000
#事务一次可以处理多少个event
a1.channels.c1.transactionCapacity=100
#三个核心组件的绑定
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1