Flume的相关知识
-
产生背景:因为各种数据的格式不能统一,所以flume采集工具就产生了。比如csv,tsv,json,压缩数据等等
-
flume的组件:
- agent 用户代理 source获取数据包装成的数据就是events channel处理数据 sink存储数据
- event是flume数据传输的基本单元
-
完成数据收集需要在使用端有一个agent
-
flume的安装
-
下载安装包 下载地址
-
配置相关信息 /conf下的flume-env.sh 添加JAVA_HOME的路径
-
在$FLUME_HOME下创建agentconf文件夹
-
进入agentconf创建文件netcat-logger.properties
#定义这个agent中各个组件的名字 a1就是agent的名字 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 描述和配置source组件r1 a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 44444 # 描述和配置sink组件 a1.sinks.k1.type = logger # 描述和配置channel组件此处使用的是内存缓存的方式 a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 #描述和配置source channel sink之间的连接关系 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
-
启动命令 bin/flume-ng agent -c conf -f agentconf/netcat-logger.properties -n a1 -Dflume.root.logger=INFO,console
-
相同的节点 输入 telnet localhost 44444进行测试 查看是否可以接收到数据
-
-
采集目录到hdfs监测文件夹
- spooldir是用来检测文件夹的
- 只有新增文件了才会监听到否则不会被收集,即使是你修改了已经收集完成的文件也不会被再次收集。
- 如果你添加的文件格式是.COMPLETED也不会被收集
- 配置信息#定义这个agent中各个组件的名字 agent1.sources = source1 agent1.sinks = sink1 agent1.channels = channel1 # 描述和配置source组件r1 agent1.sources.source1.type = spooldir agent1.sources.source1.spoolDir = /home/hadoop/testlog/ agent1.sources.source1.fileHeader = false #配置拦截器 agent1.sources.source1.interceptors=i1 agent1.sources.source1.interceptors.i1.type=host agent1.sources.source1.interceptors.i1.hostHeader=hostname # 描述和配置sink组件 agent1.sinks.sink1.type = hdfs agent1.sinks.sink1.hdfs.path=hdfs://hadoop:9000/my_flume/%y-%m-%d/%H-%M agent1.sinks.sink1.hdfs.filePrefix=events agent1.sinks.sink1.hdfs.maxOpenFiles=5000 agent1.sinks.sink1.hdfs.batchSize=100 agent1.sinks.sink1.hdfs.fileType=DataStream agent1.sinks.sink1.hdfs.writeFormat=Text agent1.sinks.sink1.hdfs.rollSize=102400 agent1.sinks.sink1.hdfs.rollCount=1000000 agent1.sinks.sink1.hdfs.rollInterval=60 agent1.sinks.sink1.hdfs.round=true agent1.sinks.sink1.hdfs.roundValue=10 agent1.sinks.sink1.hdfs.roundUnit=minute agent1.sinks.sink1.hdfs.useLocalTimeStamp=true # 描述和配置channel组件此处使用的是内存缓存的方式 agent1.channels.channel1.type = memory agent1.channels.channel1.keep-alive=120 agent1.channels.channel1.capacity=500000 agent1.channels.channel1.transactionCapacity=600 #描述和配置source channel sink之间的连接关系 agent1.sources.source1.channels =channel1 agent1.sinks.sink1.channel =channel1
-
启动命令
bin/flume-ng agent -c conf -f agentconf/spooldir-hdfs.properties -n agent1 -Dflume.root.logger=INFO,console
-
收集文件的数据并采集到hdfs
-
配置信息
#定义这个agent中各个组件的名字 agent1.sources = source1 agent1.sinks = sink1 agent1.channels = channel1 # 描述和配置source组件r1 agent1.sources.source1.type = exec agent1.sources.source1.command=tail -f /home/hadoop/catalina.out agent1.sources.source1.channels=channel1 #配置拦截器 agent1.sources.source1.interceptors=i1 agent1.sources.source1.interceptors.i1.type=host agent1.sources.source1.interceptors.i1.hostHeader=hostname # 描述和配置sink组件 agent1.sinks.sink1.type = hdfs agent1.sinks.sink1.hdfs.path=hdfs://hadoop:9000/my_flume/%y-%m-%d/%H-%M agent1.sinks.sink1.hdfs.filePrefix=tomcat_ agent1.sinks.sink1.hdfs.maxOpenFiles=5000 agent1.sinks.sink1.hdfs.batchSize=100 agent1.sinks.sink1.hdfs.fileType=DataStream agent1.sinks.sink1.hdfs.writeFormat=Text agent1.sinks.sink1.hdfs.rollSize=102400 agent1.sinks.sink1.hdfs.rollCount=1000000 agent1.sinks.sink1.hdfs.rollInterval=60 agent1.sinks.sink1.hdfs.round=true agent1.sinks.sink1.hdfs.roundValue=10 agent1.sinks.sink1.hdfs.roundUnit=minute agent1.sinks.sink1.hdfs.useLocalTimeStamp=true # 描述和配置channel组件此处使用的是内存缓存的方式 agent1.channels.channel1.type = memory agent1.channels.channel1.keep-alive=120 agent1.channels.channel1.capacity=500000 agent1.channels.channel1.transactionCapacity=600 #描述和配置source channel sink之间的连接关系 agent1.sources.source1.channels =channel1 agent1.sinks.sink1.channel =channel1
-
启动命令
bin/flume-ng agent -c conf -f agentconf/taildir-hdfs.properties -n agent1 -Dflume.root.logger=INFO,console
-