Hadoop|Hadoop之Flume采集文件到hdfs


Flume采集本地文件到hdfs

  • 介绍
  • 配置文件
  • 启动agent
  • 遇见的问题

介绍 Flume是一个数据采集工具,可以很方便的将多种数据采集到Hadoop生态系统中。
安装十分便捷只需要下载解压到要采集的机器即可,重点是需要对flume的三大组件(source,channel,sink)的配置。
Hadoop|Hadoop之Flume采集文件到hdfs
文章图片

注:盗张官方的图
官方链接:Flume官方说明
配置文件 内容如下:
#定义三大组件的名称,myagent可以自己定义 myagent.sources = source1 myagent.sinks = sink1 myagent.channels = channel1# 配置source组件 myagent.sources.source1.type = spooldir # 定义source类型,文件目录 myagent.sources.source1.spoolDir = /home/gugu/testdata/ # 指定输入目录 myagent.sources.source1.fileSuffix=.FINISHED # 指定采集结束后添加的文件后缀 myagent.sources.source1.deserializer.maxLineLength=5120 # 单行最大字节数,如果超过将被截断# 配置sink组件 myagent.sinks.sink1.type = hdfs # sink的类型 myagent.sinks.sink1.hdfs.path =hdfs://master:9000/flume/test/log/%y-%m-%d/%H-%M # 输出的hdfs路径 myagent.sinks.sink1.hdfs.filePrefix = app_log # 生成文件的前缀(收集到的文件会被重命名成随机字符串) myagent.sinks.sink1.hdfs.fileSuffix = .log # 生成文件的后缀 myagent.sinks.sink1.hdfs.batchSize= 128 # 当文件达到多大时,刷新到hdfs,单位MB myagent.sinks.sink1.hdfs.fileType = DataStream # 输出到hdfs中文件类型,DataStream原始文件 myagent.sinks.sink1.hdfs.writeFormat =Text # 写到hdfs前的文件格式,需要设置为Text## roll:滚动切换:控制写文件的切换规则(如果不需要这个规则,设置为0) myagent.sinks.sink1.hdfs.rollSize = 512000 ## 按文件体积(字节)来切 myagent.sinks.sink1.hdfs.rollCount = 1000000 ## 按event条数切 myagent.sinks.sink1.hdfs.rollInterval = 60 ## 按时间间隔切换文件## 控制生成目录的规则 myagent.sinks.sink1.hdfs.round = true # 是否自动生成目录 myagent.sinks.sink1.hdfs.roundValue = https://www.it610.com/article/10 # 自动生成目录的时间值 myagent.sinks.sink1.hdfs.roundUnit = minute # 自动 生成目录的时间单位myagent.sinks.sink1.hdfs.useLocalTimeStamp = true # 是否使用本地的时间戳取时间# channel组件配置 myagent.channels.channel1.type = memory # channel将数据存储的位置一般为memory/File myagent.channels.channel1.capacity = 500000 ## event条数 myagent.channels.channel1.transactionCapacity = 100 ##flume事务控制所需要的缓存容量100条event,如果失败可以进行回滚# 绑定source、channel和sink之间的连接 myagent.sources.source1.channels = channel1 myagent.sinks.sink1.channel = channel1

启动agent
[gugu@master apache-flume-1.9.0-bin]$ bin/flume-ng agent -c conf/ -f conf/dir-hdfs.properties -n myagent -Dflume.root.logger=INFO,console 启动agent 配置文件路径 agent配置的文件agent的名字 日志级别和打印到控制台 #最后一个参数可以去掉,加上能看到日志输出,正式环境可以去掉,由于一个配置文件中可以配置多个agent,因此agent的名字要与配置文件中定义的一致

打印日志信息
Hadoop|Hadoop之Flume采集文件到hdfs
文章图片

查看路径下的文件
Hadoop|Hadoop之Flume采集文件到hdfs
文章图片

查看hdfs上的文件
Hadoop|Hadoop之Flume采集文件到hdfs
文章图片

遇见的问题 【Hadoop|Hadoop之Flume采集文件到hdfs】在使用“myagent.channels.channel1.transactionCapacity”参数的时候需要注意,这个参数要大于“myagent.sources.source1.batchSize”,原因是source提供数据给channel,需要提供的数据量大于一个事务的数据条数,默认两个值都是100.

    推荐阅读