离线数仓中的同步策略、Flume、Kafka

离线数仓当中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后保存数据会导致丢失数据

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>