Flume采集本地文件到hdfs
- 介绍
- 配置文件
- 启动agent
- 遇见的问题
介绍 Flume是一个数据采集工具,可以很方便的将多种数据采集到Hadoop生态系统中。
安装十分便捷只需要下载解压到要采集的机器即可,重点是需要对flume的三大组件(source,channel,sink)的配置。
文章图片
注:盗张官方的图
官方链接: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的名字要与配置文件中定义的一致
打印日志信息
文章图片
查看路径下的文件
文章图片
查看hdfs上的文件
文章图片
遇见的问题 【Hadoop|Hadoop之Flume采集文件到hdfs】在使用“myagent.channels.channel1.transactionCapacity”参数的时候需要注意,这个参数要大于“myagent.sources.source1.batchSize”,原因是source提供数据给channel,需要提供的数据量大于一个事务的数据条数,默认两个值都是100.
推荐阅读
- 思普大数据技术|Hadoop生态之Hadoop体系架构(一)
- 笔记|nfs网络文件系统
- #|Spark Streaming与流处理
- 笔记|hadoop核心组件——HDFS系列讲解之HDFS其他功能介绍
- 笔记|hadoop核心组件——HDFS系列讲解之HDFS基本介绍
- 笔记|hadoop核心组件——HDFS系列讲解之HDFS的高级使用命令
- 大数据技术栈|(七)Hadoop 3.3.0学习——HDFS
- java|Hadoop核心模块——HDFS详解(2)
- 大数据|Hadoop系列(一)——HDFS总结