Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于Flink SQL构建实时数据仓库

基于Flink SQL构建实时数据仓库

作者头像
王知无-import_bigdata
发布于 2020-01-13 09:51:10
发布于 2020-01-13 09:51:10
3.2K0
举报

1.需求背景

根据目前大数据这一块的发展,已经不局限于离线的分析,挖掘数据潜在的价值,数据的时效性最近几年变得刚需,实时处理的框架有storm,spark-streaming,flink等。想要做到实时数据这个方案可行,需要考虑以下几点:1、状态机制 2、精确一次语义 3、高吞吐量 4、可弹性伸缩的应用 5、容错机制,刚好这几点,flink都完美的实现了,并且支持flink sql高级API,减少了开发成本,可用实现快速迭代,易维护等优点。

2.离线数仓和实时数仓对比

离线数仓的架构图:

实时数仓架构图:

3.实时数仓的架构详细介绍

3.1.数据接入(source)

目前实时这边用到的数据,主要是流量日志和binlog,以流量日志为例,打点日志上报到nginx服务器,使用flume进行数据采集,sink进kafka,目前kafka只保留最近一天的数据,考虑到流量日志的数据量大,并且也没有保留多天的意义,如果是要查看昨天的数据情况,完全可以用离线的。所以整套实时数仓体系建设都是为了保障近一天的数据分析

3.2.数据计算(transform)

  • 使用flink sql对接kafka,使用自定义的udtf函数解析kafka当中的原始log,产生结构化数据,并且在次写入kafka的另一个topic当中,这就是我们的实时ods层数据了。
  • 为了校验实时数据的准确性,还需要将存于kafka的ods层数据,写入hdfs上,使用hive和hdfs的文件进行映射,产生实时的hive表(目前是小时级别),该hive表可用于和离线hive表进行数据校正。
  • dwd层的数据是从ods层读取,然后根据需求进行逻辑处理,包括关联相应的维度表,即进行降维操作。
  • DM/RPT/APP层都是同样的原理,使用flink进行窗口计算,然后存于kafka当中,在写入HDFS上,使用hive与HDFS文件做映射,产生实时的hive表(目前是小时级别),供上层使用。

3.3.数据存储(sink)

目前是将实时维度表存于hbase当中,实时公共层都存于kafka当中,并且以写滚动日志的方式写入HDFS。

4.实时数仓难点讨论

4.1 如何保证接入数据的准确性

如下是离线数据同步架构图:

4.1.1实时和离线数据接入的差异性

实时数据的接入其实在底层架构是一样的,就是从kafka那边开始不一样,实时用flink的UDTF进行解析,而离线是定时(目前是小时级)用camus拉到HDFS,然后定时load HDFS的数据到hive表里面去,这样来实现离线数据的接入。实时数据的接入是用flink解析kafka的数据,然后在次写入kafka当中去。

4.1.2如何建立实时数据和离线数据的可比较性

由于目前离线数据已经稳定运行了很久,所以实时接入数据的校验可以对比离线数据,但是离线数据是小时级的hive数据,实时数据存于kafka当中,直接比较不了,所以做了相关处理,将kafka的数据使用flink写HDFS滚动日志的形式写入HDFS,然后建立hive表小时级定时去load HDFS中的文件,以此来获取实时数据。

4.1.3如何确定比较的时间区间

完成以上两点,剩余还需要考虑一点,都是小时级的任务,这个时间卡点使用什么字段呢?首先要确定一点就是离线和实时任务卡点的时间字段必须是一致的,不然肯定会出问题。目前离线使用camus从kafka将数据拉到HDFS上,小时级任务,使用nginx_ts这个时间字段来卡点,这个字段是上报到nginx服务器上记录的时间点。而实时的数据接入是使用flink消费kafka的数据,在以滚动日志的形式写入HDFS的,然后在建立hive表load HDFS文件获取数据,虽然这个hive也是天/小时二级分区,但是离线的表是根据nginx_ts来卡点分区,但是实时的hive表是根据任务启动去load文件的时间点去区分的分区,这是有区别的,直接筛选分区和离线的数据进行对比,会存在部分差异,应当的做法是筛选范围分区,然后在筛选nginx_ts的区间,这样在跟离线做对比才是合理的。

4.2如何保证接入数据的时延

目前实时数据接入层的主要时延是在UDTF函数解析上,实时的UDTF函数是根据上报的日志格式进行开发的,可以完成日志的解析功能。

解析流程图如下:

解析速率图如下:

该图还不是在峰值数据量的时候截的,目前以800记录/second为准,大概一个记录的解析速率为1.25ms。 目前该任务的flink资源配置核心数为1,假设解析速率为1.25ms一条记录,那么峰值只能处理800条/second,如果数据接入速率超过该值就需要增加核心数,保证解析速率。

4.3 维度表设计成实时的复杂度过高

4.3.1实时维表背景介绍

介绍一下目前离线维度表的情况,就拿商品维度表来说,全线记录数将近一个亿,计算逻辑来自40-50个ods层的数据表,计算逻辑相当复杂,如果实时维度表也参考离线维度表来完成的话,那么开发成本和维护成本非常大,对于技术来讲也是很大的一个挑战,并且目前也没有需求要求维度属性百分百准确。所以目前(伪实时维度表)准备在当天24点产出,当天的维度表给第二天实时公共层使用,即T-1的模式。伪实时维度表的计算逻辑参考离线维度表,但是为了保障在24点之前产出,需要简化一下离线计算逻辑,并且去除一些不常用的字段,保障伪实时维度表可以较快产出。

实时维度表的计算流程图:

4.3.2在实施的过程当中的细节点

1.根据实时维度表需要的属性字段对离线维度表进行简化操作,并且裁剪ods层的计算逻辑,理顺实时维度表的计算逻辑。

2.实时维度表使用到的stage和ods层数据表保存周期都不需要太长,一般保存数天就好。

3.由于实时维度表需要在24点之前产出并写入到hbase当中,所以要考虑将任务定于几点开始跑,比如所有抽取任务和ods计算任务都从23点开始跑,当然要看具体任务耗时来定,如果耗时过长需要在提前一点。

4.根据以上步骤去完成,感觉剩下来只要将数据写入hbase就好了,但是这里也有一个巨坑。如果将rowkey设计成md5(pt+维度表主键),然后hbase保存近两天的数据,这样当实时数据出现问题,我们还可以进行重刷数据。但是我们不管是商品维度表还是用户维度表都达到了数千万的级别,如果每天全量写入hbase的话,我们做了压测计算hbase的写入速率,大概400百万条/10min,如果同步以一亿条记录的话,大概就需要250分钟,对于时效要求这么高的实时维度表,这个时间肯定是接收不了的,所以row的设计不能将pt放入,但是这样的话就无法保存历史数据,如果实时数据发生异常,重刷数据时部分实时公共层关联的维度信息是不准确的,所以我们在这点上做了取舍,放弃重刷数据,毕竟出现数据异常的概率很小,就算出现了,关联的维度信息不准确的部分也很少(维度信息每天只会有部分发生变化,可能不到百分之一)。既然这种全量走不通,就要考虑增量同步,如果区分该条记录是否发生了属性变化,我们采用的是将全字段做md5处理,只要任一一个字段发生变化,md5就会发生变化,在使用一个flag字段来做标识,flag的计算逻辑就是拿当天的md5和昨天的md5进行比较,相同为0(表示未变化),不同为1(表示发生变化),到时候我们只将flag=1的数据同步到hbase就好了,rowkey设计为md5(维度表主键),这样每天只会把变化差异维度记录同步到hbase,大概每天有几百万,这样的同步时间是可以接受的。其实这里还有一个小点没有考虑到,实时维度表假设是在23:50产出,那么23:50到24:00使用的就是最新的实时维度表了,而不是昨天的实时维度表,这也是存在部分差异的点,但是从目前这个情况考虑,暂时需要做一些取舍。

作者:愤怒的谜团

链接:https://www.jianshu.com/p/18e21bd352b7

欢迎点赞+收藏+转发朋友圈素质三连

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术与架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flink+Clickhouse在广投集团实时数仓的最佳实践
由于历史原因,大型集团企业往往多个帐套系统共存,包括国内知名ERP厂商浪潮、用友、金蝶、速达所提供的财务系统,集团财务共享中心的财务人员在核对财务凭证数据时经常需要跨多个系统查询且每个系统使用方式不一,同时因为系统累计数据庞大,制单和查询操作经常出现卡顿,工作效率非常低。
Spark学习技巧
2023/03/21
1K0
Flink+Clickhouse在广投集团实时数仓的最佳实践
20000字详解大厂实时数仓建设(好文收藏)
目前各大公司的产品需求和内部决策对于数据实时性的要求越来越迫切,需要实时数仓的能力来赋能。传统离线数仓的数据时效性是 T+1,调度频率以天为单位,无法支撑实时场景的数据需求。即使能将调度频率设置成小时,也只能解决部分时效性要求不高的场景,对于实效性要求很高的场景还是无法优雅的支撑。因此实时使用数据的问题必须得到有效解决。
五分钟学大数据
2022/02/12
5.2K0
20000字详解大厂实时数仓建设(好文收藏)
基于Flink+ClickHouse构建实时数仓
Flink和ClickHouse分别是实时计算和(近实时)OLAP领域的翘楚,也是近些年非常火爆的开源框架,很多大厂都在将两者结合使用来构建各种用途的实时平台,效果很好。关于两者的优点就不再赘述,本文来简单介绍笔者团队在点击流实时数仓方面的一点实践经验。
大数据老哥
2021/11/04
1.4K0
OPPO数据中台之基石:基于Flink SQL构建实时数据仓库
本文整理自 2019 年 4 月 13 日在深圳举行的 Flink Meetup 会议,分享嘉宾张俊,目前担任 OPPO 大数据平台研发负责人,也是 Apache Flink contributor。本文主要内容如下: - OPPO 实时数仓的演进思路; - 基于 Flink SQL 的扩展工作; - 构建实时数仓的应用案例; - 未来工作的思考和展望。
养码场
2019/05/20
3.5K0
OPPO数据中台之基石:基于Flink SQL构建实时数据仓库
数据仓库之Hive快速入门 - 离线&实时数仓架构
了解了Hive中的SQL基本操作之后,我们来看看Hive是如何将SQL转换为MapReduce任务的,整个转换过程分为六个阶段:
端碗吹水
2020/11/11
5K0
实时数仓 | 你想要的数仓分层设计与技术选型
数据仓库概念的提出都要追溯到上世纪了,我们认为在大数据元年之前的数仓可以称为传统数仓,而后随着海量数据不断增长,以及Hadoop生态不断发展,主要基于Hive/HDFS的离线数仓架构可以兴起并延续至今,近几年随着Storm/Spark(Streaming)/Flink等实时处理框架的更新迭代乃至相互取代,各厂都在着力构建自己的实时数仓,特别是近两年,随着Flink声名鹊起,实时数仓更是名声在外并且还在不断快速发展。
大数据技术架构
2020/04/21
11.7K0
实时数仓 | 你想要的数仓分层设计与技术选型
彻底打通实时数据仓库该如何实现及多种技术架构解析
问题导读 1.实时数据仓库有哪些特点? 2.公司构建实时数据仓库有哪些好处? 3.如何构建实时数据仓库? 4.实时数据仓库本文解析了哪些架构? 越来越多的实时数据需求,需要更多的实时数据来做业务决策,例如需要依据销售情况做一个资源位的调整;同时有些活动也需要实时数据来增强与用户的互动。如果数据有实时和离线两种方案,优先考虑实时的,如果实时实现不了再考虑离线的方式。 实时数据仓库,已经被很多公司所接受,而且接触很多About云社区会员,都在筹备搭建实时数据仓库。 1.那么实时数据仓库有哪些特点:
用户1410343
2021/01/05
1.4K0
实时数仓:实时数仓3.0的演进之路
传统意义上我们通常将数据处理分为离线数据处理和实时数据处理。对于实时处理场景,我们一般又可以分为两类,一类诸如监控报警类、大屏展示类场景要求秒级甚至毫秒级;另一类诸如大部分实时报表的需求通常没有非常高的时效性要求,一般分钟级别,比如10分钟甚至30分钟以内都可以接受。
Freedom123
2024/03/29
5670
实时数仓:实时数仓3.0的演进之路
日均百亿级日志处理:微博基于Flink的实时计算平台建设
黄鹏,微博广告实时数据开发工程师,负责法拉第实验平台数据开发、实时数据关联平台、实时算法特征数据计算、实时数据仓库、实时数据清洗组件开发工作。
Spark学习技巧
2019/11/15
1.7K0
专治数仓疑难杂症!美团点评 Flink 实时数仓应用经验分享
摘要:本文根据 Apache Flink 系列直播整理而成,由美团点评数据系统研发工程师黄伟伦老师分享。主要内容如下:
大数据技术架构
2020/07/03
8890
专治数仓疑难杂症!美团点评 Flink 实时数仓应用经验分享
基于Flink构建全场景实时数仓
虽然实时计算在最近几年才火起来,但是在早期也有不少公司有实时计算的需求,但数据量不成规模,所以在实时方面形成不了完整的体系,基本所有的开发都是具体问题具体分析,来一个需求做一个,基本不考虑它们之间的关系,开发形式如下:
五分钟学大数据
2021/07/29
1.5K0
BIGO 使用 Flink 做 OLAP 分析及实时数仓的实践和优化
BIGO 是一家面向海外的以短视频直播业务为主的公司, 目前公司的主要业务包括 BigoLive (全球直播服务),Likee (短视频创作分享平台),IMO (免费通信工具) 三部分,在全球范围内拥有 4 亿用户。伴随着业务的发展,对数据平台处理能力的要求也是越来越高,平台所面临的问题也是日益凸显,接下来将介绍 BIGO 大数据平台及其所面临的问题。BIGO 大数据平台的数据流转图如下所示:
从大数据到人工智能
2022/03/12
1.2K0
BIGO 使用 Flink 做 OLAP 分析及实时数仓的实践和优化
实时数仓项目架构分层
在公司内部,我们数据团队有幸与顺风车业务线深入合作,在满足业务方实时数据需求的同时,不断完善实时数仓内容,通过多次迭代,基本满足了顺风车业务方在实时侧的各类业务需求,初步建立起顺风车实时数仓,完成了整体数据分层,包含明细数据和汇总数据,统一了DWD层,降低了大数据资源消耗,提高了数据复用性,可对外输出丰富的数据服务。
肉眼品世界
2022/04/19
9700
实时数仓项目架构分层
美团点评基于 Flink 的实时数仓平台实践
摘要:数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战,而 Flink 实时数仓在数据链路中扮演着极为重要的角色。本文中,美团点评高级技术专家鲁昊为大家分享了美团点评基于 Apache Flink 的实时数仓平台实践。
程序员小强
2020/01/17
1.4K0
美团点评基于 Flink 的实时数仓平台实践
数据湖|Flink + Iceberg 全场景实时数仓的建设实践
摘要:Apache Flink 是目前大数据领域非常流行的流批统一的计算引擎,数据湖是顺应云时代发展潮流的新型技术架构,以 Iceberg、Hudi、Delta 为代表的解决方案应运而生,Iceberg 目前支持 Flink 通过 DataStream API /Table API 将数据写入 Iceberg 的表,并提供对 Apache Flink 1.11.x 的集成支持。
大数据技术架构
2021/08/25
4.5K0
数据湖|Flink + Iceberg  全场景实时数仓的建设实践
9102年围绕Flink做的一些事
接下来详细说一下在这几个方面做的一些事情以及如何解决遇到的一些问题与将要做的事情。
Flink实战剖析
2022/04/18
5090
9102年围绕Flink做的一些事
实时数仓在有赞的实践
随着实时技术的不断发展和商家实时应用场景的不断丰富,有赞在实时数仓建设方面做了大量的尝试和实践。本文主要分享有赞在建设实时数仓过程中所沉淀的经验,内容包括以下五个部分:
有赞coder
2021/07/20
9080
亿级大表毫秒关联,荔枝微课基于腾讯云数据仓库Doris的统一实时数仓建设实践
腾讯云数据仓库 Doris 助力荔枝微课构建了规范的、计算统一的实时数仓平台。目前腾讯云数据仓库 Doris 已经支撑了荔枝微课内部 90% 以上的业务场景,整体可达到毫秒级的查询响应,数据时效性完成 T+1 到分钟级的提升,开发效率更是实现了 50% 的增长,满足了各业务场景需求、实现降本提效,深得十方融海各数据部门高度认可。
腾讯QQ大数据
2023/07/27
6970
亿级大表毫秒关联,荔枝微课基于腾讯云数据仓库Doris的统一实时数仓建设实践
不惧流量持续上涨,BIGO 借助 Flink 与 Pulsar 打造实时消息系统
作者 | 陈航 BIGO 于 2014 年成立,是一家高速发展的科技公司。基于强大的音视频处理技术、全球音视频实时传输技术、人工智能技术、CDN 技术,BIGO 推出了一系列音视频类社交及内容产品,包括 Bigo Live(直播)和 Likee(短视频)等,在全球已拥有近 1 亿用户,产品及服务已覆盖超过 150 个国家和地区。 1挑战 最初,BIGO 的消息流平台主要采用开源 Kafka 作为数据支撑。随着数据规模日益增长,产品不断迭代,BIGO 消息流平台承载的数据规模出现了成倍增长,下游的在线模型训练
深度学习与Python
2023/04/01
7690
不惧流量持续上涨,BIGO 借助 Flink 与 Pulsar 打造实时消息系统
基于Canal与Flink实现数据实时增量同步(二)
在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB)两类。对于业务DB数据来说,从MySQL等关系型数据库的业务数据进行采集,然后导入到Hive中,是进行数据仓库生产的重要环节。如何准确、高效地把MySQL数据同步到Hive中?一般常用的解决方案是批量取数并Load:直连MySQL去Select表中的数据,然后存到本地文件作为中间存储,最后把文件Load到Hive表中。这种方案的优点是实现简单,但是随着业务的发展,缺点也逐渐暴露出来:
Spark学习技巧
2020/09/08
1.9K0
推荐阅读
相关推荐
Flink+Clickhouse在广投集团实时数仓的最佳实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档