Flume介绍安装
一Flume 概念
Flume是一个分布式的高可用的海量日志收集聚合传输系统;Flume传输数据的基本单元是event,这里面封装的就是传输的数据;Flume核心是Agent,agent是一个java进程,主要进行日志收集聚合和传输。它包含三个组件:
Source:数据的源头,我们从哪儿收集日志
Channel:是一个暂时存储传输的数据的event的一个临时的地方。
Sink:就是event的消费者,它将Channel的数据pull出来之后,写入拿到HDFS,HBase或者传给Kafka之类的
架构图如下:
流程图如下:
二Event 理解
Event是Flume数据传输的基本单元,也就是说Flume会把传输的数据封装在一个事件之中。
Event由headers和 body组成,headers是一个map,body是一个字节数组。一般body才是我们真正需要传输的数据,header的数据更多是传递的一些内部用的参数。
在source端封装event的时候,通过header识别不同的event,然后在sink的时候,我们就可以通过header中的key来将不同的event输出到对应的目标源
三 安装Flume
3.1解压
tar-zxf flume-ng-1.5.0-cdh5.3.6.tar.gz -C /opt/cdh-5.3.6/
3.2修改配置flume-env.sh
先根据flume提供的一个模板文件,进行重命名,然后修改:
cpflume-env.sh.template flume-env.sh
exportJAVA_HOME=/opt/modules/jdk1.7.0_67
3.3放Hadoop的一些jar包到lib目录下,因为默认flume是没有集成
commons-configuration-1.6.jar
hadoop-auth-2.5.0-cdh5.3.6.jar
hadoop-common-2.5.0-cdh5.3.6.jar
hadoop-hdfs-2.5.0-cdh5.3.6.jar
放到 $FLUME_HOME/lib
3.4如果HDFS 使用了HA,那么我们还还需要把core-site.xml和 hdfs-site.xml放到conf目录,那么就可以读到里面的一些配置了
四 配置文件定义agent的步骤
在conf目录下,提供了一个默认的配置模板flume-conf.properties.
Template我么rename 它为flume-conf.properties,然后进行配置。
4.1定义agent的SourceChannel Sink三各组件
agent.sources= src1
agent.channels= channel1
agent.sinks= sink1
4.2 定义src1
agent.sources.src1.type= netcat
agent.sources.src1.bind= hadoop09-linux
agent.sources.src1.port= 44444
4.3定义channel
agent.channels.channel1.type= memory
agent.channels.channel1.capacity= 1000
agent.channels.channel1.transactionCapacity= 100
4.4定义 sink1
agent.sinks.sink1.type= logger
4.5绑定source 和 sink 到 channel
agent.sources.src1.channels= channel1
agent.sinks.sink1.channel= channel1
五 flume-ng 参数介绍
命令选项
agent: 运行一个agent
avro-client:运行一个avroflume 客户端
全局选项
--conf:使用conf目录里的配置文件
--classpath添加classpath
-D设置java系统变量
Agent选项:
--name:agent的名字
--conf-file:指定配置文件
--zkConnString:指定使用zookeeper连接
--zkBasePath:指定一个基本路径在zookeeper
Avro客户端选项:
--rpcProps:rpc客户端带有连接属性的文件
--host:events发送到哪一个主机
--port:avro source的端口
--dirname:avro source stream目录
--filename:avro source stream 文件
六 启动测试
/opt/cdh-5.3.6/flume-1.5.0-cdh5.3.6/bin/flume-ngagent -c
../conf-n agent --file-name ../conf/flume-conf.properties
telnethadoop09-linux 44444
然后发送数据
如果在flume控制台收到说明成功了
然后退出telnet
Ctrl+]进入telnet 命令行模式,然后输入q