当前位置: 首页 > news >正文

Flume 使用小案例

案例一:采集文件内容上传到HDFS

1)把Agent的配置保存到flume的conf目录下的 file-to-hdfs.conf 文件中

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /data/log/studentDir
# Use a channel which buffers events in memory
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /data/soft/apache-flume-1.9.0-bin/data/studentDir
a1.channels.c1.dataDirs = /data/soft/apache-flume-1.9.0-bin/data/studentDir/data
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://192.168.182.100:9000/flume/studentDir
a1.sinks.k1.hdfs.filePrefix = stu-
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.rollCount = 0
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

配置讲解:

根据这里的例子可知,主要配置checkpointDir和dataDir,因为这两个目录默认会在用户家目录下生成,建议修改到其他地方
checkpointDir是存放检查点目录
data是存放数据的目录

 hdfs.path是必填项,指定hdfs上的存储目录
        看这里例子中还指定了filePrefix参数,这个是一个文件前缀,会在hdfs上生成的文件前面加上这个前缀,这个属于可选项,有需求的话可以加上

一般在这我们需要设置writeFormat和fileType这两个参数
        默认情况下writeFormat的值是Writable,建议改为Text,看后面的解释,如果后期想使用hive或者impala操作这份数据的话,必须在生成数据之前设置为Text,Text表示是普通文本数据
fileType默认是SequenceFile,还支持DataStream 和 CompressedStream ,DataStream 不会对输出数据进行压缩,CompressedStream 会对输出数据进行压缩,在这里我们先不使用压缩格式的,所以选择DataStream

        除了这些参数以外,还有三个也比较重要 hdfs.rollInterval、hdfs.rollSize和hdfs.rollCount
hdfs.rollInterval默认值是30,单位是秒,表示hdfs多长时间切分一个文件,因为这个采集程序是一直运行的,只要有新数据,就会被采集到hdfs上面,hdfs默认30秒钟切分出来一个文件,如果设置为0表示不按时间切文件
hdfs.rollSize默认是1024,单位是字节,最终hdfs上切出来的文件大小都是1024字节,如果设置为0表示不按大小切文件
hdfs.rollCount默认设置为10,表示每隔10条数据切出来一个文件,如果设置为0表示不按数据条数切文件这三个参数,如果都设置的有值,哪个条件先满足就按照哪个条件都会执行。
在实际工作中一般会根据时间或者文件大小来切分文件,我们之前在工作中是设置的时间和文件大小相结合,时间设置的是一小时,文件大小设置的128M,这两个哪个满足执行哪个。

2)启动Hadoop集群

3)启动agent

        在启动agent之前,先初始化一下测试数据。
创建/data/log/studentDir目录,然后在里面添加一个文件,class1.dat
class1.dat中存储的是学生信息,学生姓名、年龄、性别

 bin/flume-ng agent --name a1  --conf conf --conf-file conf/file-to-hdfs.conf -Dflume.root.logger=INFO,console

4)到bigdata01上验证结果

hdfs dfs -ls  /

我们发现此时这个文件已经被加了一个后缀 .COMPLETED ,表示这个文件已经被读取过了,所以Flume在读取的时候会忽略后缀为 .COMPLETED 的文件。

http://www.lryc.cn/news/24261.html

相关文章:

  • DLO-SLAM代码阅读
  • X和Ku波段小尺寸无线电设计
  • 推荐算法 - 汇总
  • Android 系统的启动流程
  • 自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第二部分
  • Vue 3 第五章:reactive全家桶
  • 【联机对战】微信小程序联机游戏开发流程详解
  • 优化基于axios接口管理的骚操作
  • 【Django功能开发】如何正确使用定时任务(启动、停止)
  • 7个好用到爆的音频、配乐素材网站,BGM都在这里了
  • JUC(二)
  • ATS认证教学
  • 【操作系统】进程管理
  • 一分钟掌握技术术语:API(接口)
  • RabbitMQ之交换机
  • Tensorflow深度学习对遥感图像分类,内存不够怎么办?
  • 基础存贮模型介绍
  • JNDIExploit使用方法
  • 建议一般人不要全职做副业
  • pytorch入门6--数据分析(pandas)
  • 淘宝API接口开发系列,详情接口参数说明
  • keep-alive
  • Maven的生命周期及常用命令
  • 【Java开发】JUC基础 03:线程五大状态和主要方法
  • docker打包容器 在另一个机器上运行
  • 2023年全国最新保安员精选真题及答案9
  • arduino-sentry2之卡片篇
  • 七、JUC并发工具
  • C++ string类(二)及深浅拷贝
  • 「TCG 规范解读」TCG 软件栈 TSS (上)