离线数仓中的同步策略FlumeKafka

Posted 养不起心爱的猫该如何是好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了离线数仓中的同步策略FlumeKafka相关的知识,希望对你有一定的参考价值。

离线数仓当中Sqoop采集mysql中数据同步策略有:增量全量新增及变化特殊;Sqoop怎么处理?
where判断日期:新增:where 创建时间 = 当天;全量:where 1 = 1;新增及变化:创建时间 or 修改时间等于今天;特殊只导入一次

Flume
TailDirSource:
优点:断点续传,监控多目录多文件,实时监控
缺点:当文件更名之后会更新读取该文件造成重复
注意:
1.要使用不更名打印日志框架(例如:logback)
hive.log-2022-01-02
hive.log-2022-02-03(log4j)日志名会滚动更新
2.修改源码,让TailDirSource判断文件时只看iNode值

KafkaChannel:
优点:将数据写入Kafka,省去一层sink
KafkaChannel:既可以时生产者也可以是消费者
用法:
1.Source-KafkaChannel-Sink
2.Source-KafkChannel(将数据写入Kafka)
3.KafkaChannel-Sink(将Kafka数据写入Sink)

Flume中的HDFSSink如何防止产生过多小文件?
可以按照时间,事件,文件大小滚动文件,同时可以启动文件压缩

Kafka学习线分析:
Producer:
发送流程、ACK、拦截器、序列化器、分区器、sender与main线程、幂等性、事务
分区规则:
有指定分区发往指定分区、没有指定分区根据key值Hash、既没有指定分区也没有Key的时候整体采用轮询规则(很小一段时间内采用粘性分区)

Broker
Topic:
副本:高可用、LEO、HW
分区:站在读和写角度有利于高并发、站在集群角度负载均衡防止热点

Consumer
分区分配规则
offset保存,默认保存在_consumer_offsets主题;其他:手动维护Offset(保存在Mysql)保存数据&保存offset写到一个事务做到精准一次消费
先保存数据后保存offset会导致重复数据(下游可以具有幂等性 + 去重达到精准一次消费)
先保存offset后保存数据会导致丢失数据

以上是关于离线数仓中的同步策略FlumeKafka的主要内容,如果未能解决你的问题,请参考以下文章

离线数仓同步数据

离线数仓之业务日志采集工具DataX

使用 Docker 搭建离线数仓环境

离线数仓和实时数仓的区别

实时数仓与离线数仓架构对比Flink消费流程

网易严选离线数仓质量建设实践