二百零七、Flume——Flume实时采集5分钟频率的Kafka数据直接写入ODS层表的HDFS文件路径下

news/2024/5/20 2:21:59 标签: flume, kafka, hdfs

一、目的

在离线数仓中,需要用Flume去采集Kafka中的数据,然后写入HDFS中。

由于每种数据类型的频率、数据大小、数据规模不同,因此每种数据的采集需要不同的Flume配置文件。玩了几天Flume,感觉Flume的使用难点就是配置文件

二、使用场景

转向比数据是数据频率为5分钟的数据类型代表,数据量很小、频率不高,因此搞定了转向比数据的采集就搞定了这一类低频率数据的实时采集问题

1台设备每日的转向比数据规模是30KB,25台设备的数据规模则是750KB

三、转向比数据ODS层建表

create external table  if not exists  ods_turnratio(
    turnratio_json  string
)
comment '转向比数据外部表——静态分区'
partitioned by (day string)
row format delimited fields terminated by '\x001'
lines terminated by '\n'
stored as SequenceFile
tblproperties("skip.header.line.count"="1");

四、转向比数据的配置文件

## agent a1
a1.sources = s1
a1.channels = c1
a1.sinks = k1

## configure source s1
a1.sources.s1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.s1.kafka.bootstrap.servers = 192.168.0.27:9092
a1.sources.s1.kafka.topics = topic_b_turnratio
a1.sources.s1.kafka.consumer.group.id = turnratio_group
a1.sources.s1.kafka.consumer.auto.offset.reset = latest
a1.sources.s1.batchSize = 1000

## configure channel c1
## a1.channels.c1.type = memory
## a1.channels.c1.capacity = 10000
## a1.channels.c1.transactionCapacity = 1000
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /home/data/flumeData/checkpoint/turnratio
a1.channels.c1.dataDirs = /home/data/flumeData/flumedata/turnratio

## configure sink k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hurys23:8020/user/hive/warehouse/hurys_dc_ods.db/ods_turnratio/day=%Y-%m-%d/
a1.sinks.k1.hdfs.filePrefix = turnratio
a1.sinks.k1.hdfs.fileSuffix = .log
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = second
a1.sinks.k1.hdfs.rollSize = 62500
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.idleTimeout = 600
a1.sinks.k1.hdfs.minBlockReplicas = 1

## Bind the source and sink to the channel
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1

注意:62500约为61KB

五、Flume写入HDFS结果

Flume根据时间戳按照ODS层表的分区,将数据写入对应HDFS文件

25台设备,50分钟1个文件,文件大小66.18 KB 

六、ODS表刷新分区后查验数据

(一)刷新表分区

MSCK REPAIR TABLE ods_turnratio;

(二)查看表数据

select * from ods_turnratio;

(三)验证数据完整性

--2023-11-19 数据基本完整  23时297条 标准300  少3条
--2023-11-20 数据基本完整  23时299条 标准300  少1条

数据基本完整,尤其是调度文件大小之后

19日a1.sinks.k1.hdfs.rollSize = 31250        数据基本完整 23时297条 标准300 少3条

20日a1.sinks.k1.hdfs.rollSize = 62500        数据基本完整 23时299条 标准300 少1条

七、注意点

(一)配置文件中的重点是红色标记的几点

a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = second
a1.sinks.k1.hdfs.rollSize = 62500
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.idleTimeout = 600
a1.sinks.k1.hdfs.minBlockReplicas = 1

(二)任务配置文件中rollSize参数设置可大不可小

rollSize参数小的话数据会丢失,大的话没问题

配置文件的参数还是不断调试中,争取调到最优的状态。能够及时、完整的消费Kafka数据,并且能够最大化的利用HDFS资源。

目前就先这样,如果有问题的话后面再更新!!!


http://www.niftyadmin.cn/n/5204232.html

相关文章

【Vue】Node.js的安装与环境变量的配置

目录 一.安装 官网: 二.环境变量的配置 node.cache node.global 一.安装 官网: https://nodejs.org/en/download 下载完之后,安装的时候一直点next即可,也可以根据自己的需求进行勾选 二.环境变量的配置 这两个文件可以 自…

阿里云oss存储文件上传功能实现(保姆级教程)

先登录: 点击进入控制台 点击左上角导航栏按钮 搜索oss,点击进入 进入之后点击立即开通oss按钮,开通之后点击下图立即创建,弹出创建Bucket 填上Bucket名称,读写权限改为公共读。其他不变点击确定创建,完成…

innoDB的缓冲池(Buffer Pool)的工作原理

数据存在磁盘了,总不能次次和磁盘交互吧,所以innoDB有一个缓冲池(Buffer Pool),有了缓冲池后,读写就优先在缓冲池了。读先在缓冲池读,没有再去磁盘加载进缓冲池;写也是先写缓冲池&am…

【Django使用】md文档10大模块第5期:Django数据库增删改查和Django视图

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展…

【漏洞复现】DPTech VPN存在任意文件读取漏洞

漏洞描述 DPtech是在网络、安全及应用交付领域集研发、生产、销售于一体的高科技企业。DPtech VPN智能安全网关是迪普科技面向广域互联应用场景推出的专业安全网关产品,集成了IPSec、SSL、L2TP、GRE等多种VPN技术,支持国密算法,实现分支机构…

webpack plugin

1、基本写法及使用 这里用到 emit 钩子 及make 钩子,前者是串行后者是并行 /*** 1.webpack加载webpack.config.js中所有配置,此时就会new TestPlugin(),执行插件的constructor2.webpack创建compiler对象3.遍历所有plugins中插件&#xff0…

学习MySQL先有全局观,细说其发展历程及特点

学习MySQL先有全局观,细说其发展历程及特点 一、枝繁叶茂的MySQL家族1. 发展历程2. 分支版本 二、特点分析1. 常用数据库2. 选型角度及场景 三、三大组成部分四、总结 相信很多同学在接触编程之初,就接触过数据库,而对于其中关系型数据库中的…

主定理方法---求解时间复杂度和在大整数乘法里的应用

文章目录 一、主定理1.1 公式1.2 例题 二、大整数乘法 前言:博主之前整理过一篇求时间复杂度的文章,如下链接所示。但是后来发现一个更简单的主定理公式,于是决定再整理一篇。并加上主定理在大整数乘法里的应用。  https://blog.csdn.net/m0…