目录
前言
本题来源于全国职业技能大赛之大数据技术赛项电商赛题 - 实时数据采集
题目:
提示:以下是本篇文章正文内容,下面案例可供参考()
一、读题分析
涉及组件:Flume,Kafka
涉及知识点:
- Flume的原理,了解sources、,channels,sinks
- Kafka 的基本使用
- Flume的监听方式以及监听方法
二、处理过程
本题是使用Flume监听端口的数据到Kafka,我还写了一篇关于Flume监听本地文件到HDFS上。
链接:大数据之使用Flume监听本地文件采集数据流到HDFS,使用正则表达式获取
1.先在Kafka中创建符合题意的Kafka的topic
先进入到Kafka的目录
cd $KAFKA_HOME
启动Kafka集群(单机也可以)
创建符合题意的Kafka的topic
bin/kafka-topics.sh --create --bootstrap-server bigdata1:9092 --replication-factor 1 --partitions 4 --topic ods_mall_log
--partitions 4创建分区数为4 --replication-factor 1 生成副本数量1
2.写出Flume所需要的配置文件
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 25001 # Describe the sink KafkaSink a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.kafka.bootstrap.servers = bigdata1:9092 a1.sinks.k1.kafka.topic = ods_mall_log # 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
3.启动脚本然后启动Flume监听端口数据并传到Kafka
在 ~ 目录 进入到 /data_log目录下,启动gen_ds_data_to_socket脚本
cd /data_log
./gen_ds_data_to_socket
启动flume指令
#如果Kafka没有对应的主题,则Flume会自动创建Kafka的topic
#但是很有可能会不符合文章的意思,在这里必须要先手动创建3个分区的Topic
bin/flume-ng agent -c conf/ -n a1 -f /opt/data/flume1.conf -Dflume.root.logger=INFO,console
flume-ng agent 必备!
-c Flume所需要的配置文件
-n conf配置文件取的名字,在这里是a1
-f 写出Flume配置文件的地址
-Dflume.root.logger=INFO,console 在这里指定flume将数据打印在控制台上,方便观察
在这里看到k1 启动了,就是我们配置的sink启动了,如果卡在这不动了,说明flume没有接受到数据,检查flune配置文件以及数据获取的方式是否正确。
启动脚本,观察Flume和Kafka的变化
启动脚本
1.观察Flume,如果Flume有一行Cluster ID:xxxx的话,说明Flume已经采集到数据并发到指定的地方
2.使用消费Kafka的topic,观察数据是否成功上传到Kafka中
#消费Kafka指定的topic 并取2条
--max-message 2 最多获取2条消息
--from-beginning 从最开始消费,如果没有则是实时消费
bin/kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --from-beginning --topic ods_mall_log --max-message 2
三、重难点分析
Flume的配置文件需要自己手动的去创建,官方没有自带的,这个如果不熟悉可以去Flume官网的用户手册上查到所有的配置,花点时间都是可以看懂的。
然后就是Kafka的基本使用,在这里不做叙述,请自行搜索学习
总结
题目很简单,比赛过程中,对于这题的麻烦点就是,创建Kafka的主题时,留意题目中给的分区的数量,然后就是Flume配置文件的记忆,你需要了解flume的原理和单元。
如何高效地采集数据是一个重要的问题。Flume是一个分布式的、可靠的、高可用的海量日志采集工具,可以轻松地采集、聚合和移动大量的数据。在数据采集过程中,Flume可以使用网络协议、文件系统和各种其他数据源来收集数据。Flume设计了一个事件模型来处理数据,使用称为“通道”的可配置缓冲区来存储事件,以确保数据不会丢失。同时,使用Flume将数据流转到Kafka中,可以满足将大量数据快速稳定地传输至数据处理流程中的需求。Kafka是一个可扩展的分布式流媒体平台,适用于处理观察型数据。在Kafka中,数据以主题(topic)进行组织,生产者(producer)向主题发送消息,消费者(consumer)从主题读取消息。Flume监听端口后采集数据流到Kafka中,在Kafka中以主题为单位高效地传输数据,支持数据的批量消费和处理,能够满足大数据实时处理和分析的需求。因此,使用Flume监听端口采集数据流到Kafka中是大数据处理中常用的数据采集方案之一。
原创作品如需引用请标明出处