1、汪李之/大数据工程师Flink 在讯飞AI营销业务实时数仓实践业务简介数仓演进场景实践未来展望#1#2#3#4#1业务简介业务流程流量交易平台流量方广告主流量方在交易平台售卖流量广告主在交易平台购买流量,投放广告请求曝光点击投放平台业务场景业务日志业务分析用户日志到分析的过程数据呈现的时效性数据仓库实时数据仓库#2数仓演进数仓框架业务日志流(Log Stream)OLTP数据库第三方文档数据ODSOLAP(DWS)报表数据(ADS)业务模型(DWD)数据可视化即席查询机器学习ETL数据应用数据治理数据规范元数据管理数据质量监控数据安全.Spark数仓流图业务日志kafkaodshdfsspar
2、k日志投递dwd加载日志输出模型消费模型输出报表odsspark-streaming输出报表消费日志spark-streaming to flink微批事件驱动处理时间watermark时效性实时数仓Flink实时数仓流图flinkdruid消费日志输出模型消费模型kafkaodsdwddws/ads输出报表摄入报表业务日志输出报表mysqlhbase#3场景实践DWSADSODSDWD数仓场景实践日志消费负载均衡日志关联及状态缓存实时OLAP跨源查询ODS-业务日志request_topicimpress_topicclick_topicbroker0partition0partition1
3、partition0partition1broker1broker0partition0partition1partition0partition1broker1request_topic分区多impress/click_topic分区少530k/s6k/s请求日志量级大,其他日志量级小请求日志写入峰值曝光日志写入峰值ODS-单sourcerequest_topicimpress_topicclick_topicbroker0partition0partition1partition0partition1broker1broker0partition0partition1partition0p
4、artition1broker1task1task2task3task4task5task6创建一个FlinkKafkaConsumer011消费所有分区,task消费负载不均分区的分配机制topic_name.hash+topic.partition_num.hash1.同一topic的不同分区在task上可均匀分配2.不同topic的分区可能会被同一task消费期望的更优分配 量级的topic:task和partition对 量级的topic:占剩下的taskODS-多source unionenv.addSource(bigTopicConsumer).setParallelism(4)
5、unionenv.addSource(smallTopicConsumer).setParallelism(2)request_topicimpress_topicclick_topicbroker0partition0partition1partition0partition1broker1broker0partition0partition1partition0partition1broker1DWD-日志关联T0T1T2(sid,app,1,1,1)基于sid关联广告一次生命周期中的不同行为日志request sid appimpress sidclick sid模型(记录sid级别的维
6、度和指标)1次请求1次曝光1次点击DWD-基于window30ssid1keyby(sid)watermark时间戳基于事件时间request sid1,app event_time1impress sid1 event_time2click sid1 event_time3(sid,app,1,1,1)1.模型输出较第一次事件发生延迟有30s2.30s仅能覆盖不到12%的曝光日志扩大窗口时间1.输出延迟更多2.同一时刻存在的窗口随时间增长DWD-基于状态缓存request sid1 appimpress sid1ValueState:缓存所需字段key