目录
前言
本题来源于全国职业技能大赛之大数据技术赛项工业赛题 - 实时数据采集
题目:
提示:以下是本篇文章正文内容,下面案例可供参考()
一、读题分析
涉及组件:Flume,HDFS,KAFKA
涉及知识点:
- 掌握Hadoop的HDFS原理
- 使用命令或web界面查看hdfs文件
- 其他与大数据之使用Flume监听端口采集数据流到Kafka一致
二、处理过程
本题是使用Flume监听本地文件的数据到Kafka并在hdfs备份,我还写了一篇关于Flume监听端口数据到Kafka上。
注意:题目中需要在Kafka中有3个topic,解决方法:
1.写3份类似的配置文件,启动3个flume监听窗口,实现从读取数据到发送数据1对1的模式
2.在1份配置文件里,将一读取数据一条的数据进行分流操作。
这里只演示第一种方法
1.启动相关的进程
(1)启动Hadoop hdfs startall.sh
(2)启动Zookeeper zkServer.sh start
(3)启动Kafka bin/kafka-server-start.sh -daem onconfig/server.properties
2.在Kafka中创建符合题意的Kafka的topic
这里不做演示,过程与大数据之使用Flume监听端口采集数据流到Kafka一致,如需,请跳转到此页面查看
3.写出Flume所需要的配置文件
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = TAILDIR a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /data_log/^.*-changerecord\.csv$ a1.sources.r1.positionFile = /opt/data/flume/taildir_position.json #positionFile是Flume记录读取文件的进度的文件,如果删除,则会读取失败需要,重新启动Flume创建。 # Describe the sink a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = /flume/events/%Y-%m-%d/%H%M/%S a1.sinks.k1.hdfs.filePrefix=log- #path路径下采用了%Y》..系统会以日期创建文件夹 #filePrefix 文件的前缀 #从临时文件变正式文件时间 s a1.sinks.k1.hdfs.rollInterval=10 #文件大小 a1.sinks.k1.hdfs.rollSize = 67108864 a1.sinks.k1.hdfs.rollCount =0 a1.sinks.k1.hdfs.useLocalTimeStamp = true a1.sinks.k1.hdfs.fileType = DataStream #rollSize这里是以b为单位,这里是64MB #fileType监听方式是流 # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
如不懂的地方可以结合Flume官网的用户手册进行学习
启动flume,看到sinks start说明启动完成,还没有监听到数据
启动脚本
观察flume状态,产生这些说明成功了
查看hdfs文件是否存在
三、重难点分析
理解Hadoop hdfs,懂的如何查看hdfs上文件
了解flume读取本地文件source的种类,TAILDIR,与此类似的还有exec,不过exec不能采用正则表达式,必须要写绝对路径。
目标文件的正则表达式写法(比赛可以写绝对)
Flume的配置文件需要自己手动的去创建,官方没有自带的,这个如果不熟悉可以去Flume官网的用户手册上查到所有的配置,花点时间都是可以看懂的。
总结
Flume 是一个广为开发者使用的分布式日志采集工具,在大数据领域中被广泛应用。在实际应用中,我们通常需要使用 Flume 采集本地文件并将它们传输到 HDFS 上进行处理和分析。将本地文件采集到 HDFS 上可以更方便地处理和分析大量数据。HDFS 作为 Hadoop 分布式文件系统之一,具有高容错性和高可扩展性,可以存储大量的数据。Flume 的优点在于它可以快速、可靠地实现数据采集等功能,同时支持各种输入源和输出目的地,包括文件、Kafka、HDFS 等,可以帮助高效地处理大数据。因此,使用 Flume 将本地文件采集数据传输至 HDFS 上,是大数据处理中常用的数据采集方案之一。
原创作品如需引用请标明出处