【大数据】Doris 构建实时数仓落地方案详解(一):实时数据仓库概述

本系列包含:


数据仓库的概念可以追溯到 20 世纪 80 年代,当时 IBM 的研究人员提出了商业数据仓库的概念。数据仓库概念的提出,是为了解决和数据流相关的各种问题,特别是多重数据复制带来的高成本问题。

1.数据仓库的发展历程

数据仓库之父 Bill Inmon 在 1991 年出版的《Building the Datla Warehouse》一书中首次提出了 数据仓库 的概念。Inmon 将数据仓库描述为 一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理者的决策过程。这个定义一直延续至今,Bill Inmon 也被称为数据仓库之父。

大约在 2000 年前后数据仓库开始进入中国,最开始主要集中在银行业和电信业。银行业建设数据仓库的动力来自于监管要求和 1104 监管报送系统,电信业的动力主要是推动省市级子公司汇总数据到总公司,构建统一的财务分析报表。两个行业的应用,为数据仓库概念在中国的普及奠定了基础。

在 2010 年以后,随着大数据技术的发展扩展到其它行业。互联网、零售、制造、医疗行业等各行各业都在推广数据仓库。

2.数据仓库技术的发展

在 2010 年前后,数据仓库系统主要由 数据库ETL 平台BI 工具 三个商业套件组成。常见的数据库主要是 Oracle、DB2、Teradata,对应的 ETL 平台分别是 DataStage、Informatica、ETL Automation,主流的商业 BI 平台主要是 BIEE、Cognos、BO。对于以上这些名词可能今天的听众都很陌生,但是在 2010 年前后,这些就是数据仓库的代名词。我本人也只是在商业数仓的鼎盛时期入行参与了一些项目,除了今年 3 月宣布退出中国市场的 Teradata 没有接触过,但是其它的商业组件我都深入学习和实战过。

与此同时,随着移动互联网的兴起,以 BAT 为代表的互联网企业高喊着 “去 IOE” 口号,推动数据仓库从商业时代走向了开源时代,也从单体架构走向分布式架构。这里面最具代表性的就是阿里巴巴和腾讯公司分别 2009 年引入 Hadoop 集群,并且持续迭代升级并一直使用至今。互联网公司引入 Hadoop 体系的原因也很简单,因为传统的商业数据库已经无法满足互联网企业的数据存储计算需求了。传统的商业数据库扩展能力有限,硬件价格高昂,并发执行能力不足,Hadoop 则刚好可以解决这些痛点,加上 HiveQL 可以满足大部分数据开发的需求,因此 Hive 数仓逐步替代了商业数据库。但是前期 Hadoop、Hive、Sqoop 等开源软件并不成熟,需要投入大量的技术研发来完善这些软件,修复其中的 Bug,优化某些模块的性能或者功能,这个过程也比较缓慢,所以前期大家对 Hadoop 和 Hive 的感受都是很难用、不稳定。我本人第一次在项目中接触 Hive 是在 2016 年底,当时是腾讯旗下的微众银行,用的是腾讯内部优化过的 Hive 0.13 版本,互联网公司也是在那一年开始引入 Kafka。

后面的故事大家基本上都知道了,2016 年前后,随着 Hive 2.3 和 Hive 3.0 版本的发布,Hadoop 体系逐渐走向成熟稳定,Hortonworks 和 Cloudera 公司分别为 Hadoop 生态贡献了 Tez 引擎、Ambari 管理平台和 Impala 引擎,与此同时,内存计算引擎 Spark 强势崛起,为 Hive 提高了新的强大动力;Hive 母公司 Facebook 又进一步开源了 MPP 框架的查询引擎 Presto,大幅提升了 Hive 数仓的查询能力。

3.数仓的相关技术栈

站在当前时间点,我们谈论的 Hive 数仓,一般默认包括 HDFS 存储系统Yarn 资源管理平台Hive 元数据管理Spark 计算引擎Presto 查询引擎,这些构成了离线数仓的技术栈。

这里简单介绍一下各个技术栈的功能和作用:

  • Apache Hadoop:Apache Hadoop 是一个开源的分布式计算框架,提供了可扩展的存储和处理大规模数据的能力。它的核心组件包括 Hadoop Distributed File System(HDFS)、MapReduce 和 Yarn 资源管理组件,主要用于离线数仓数据存储和资源调度。

  • Apache Hive:Apache Hive 是基于 Hadoop 的数据仓库基础架构,提供了类似 SQL 的查询语言(HiveQL),使用户可以通过 SQL 风格的语法进行数据查询和分析。它支持将结构化数据映射到 Hadoop 集群上的 HDFS,并利用 MapReduce、Spark、Tez 等计算引擎进行查询和数据加工。

  • Sqoop:一个短命而重要的 Hadoop 组件,用于从关系型数据库抽取数据到 Hive 数仓中或者从 Hive 数仓中导出数据到关系型数据库。Sqoop 是一个非常重要的组件,但是不知道出于什么原因,很早就停止了更新,目前国内基本上都是用阿里巴巴开源的 DataX 替代其功能。

  • Apache Spark:Apache Spark 是一个快速、通用的大数据处理引擎,可用于构建离线数据仓库和实时数据分析系统。Spark 提供了高性能的数据处理和分析能力,并支持多种编程语言,如 Scala、Java 和 Python。

  • Apache Kylin:Apache Kylin 是一个开源的分布式分析引擎,专门用于构建 OLAP(联机分析处理)数据仓库。它支持在 Hadoop 上构建多维数据模型,提供快速的查询性能和高度可扩展性。这是一款由国人主导和开源的大数据项目,也是一款专注于 OLAP 查询的 Apache 顶级开源项目。

  • Presto:Presto 是一个分布式 SQL 查询引擎,可用于构建大规模数据仓库和数据查询引擎。它支持在多个数据源上执行高性能的查询,包括 Hive、MySQL、PostgreSQL 等。

4.OLAP 查询

说完数据仓库,就要说说 OLAP 查询了。在传统的数据仓库架构里,ETL 是在数据仓库之外,OLAP 在数据仓库之内的。在 Hadoop 体系引入数据仓库领域以后,大大提升了数据 ETL 处理的能力、集群的扩展能力、数据存储的稳定性,但是牺牲了数据的查询能力。所以就诞生了 OLAP 查询这个专业领域。

在离线数仓技术中,除了前面介绍的 Kylin、Presto、Impala、Druid 都是为了解决 OLAP 查询而设计的,但是这些基于 HDFS 设计的 OLAP 引擎 都只是加速了查询速度,还没能达到令人满意或者令人惊艳的速度。于是,ClickHouse 和 Doris 横空出世,一举成为了 OLAP 领域的王者。

  • ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的用于在线分析查询的数据管理系统,是一款基于 MPP 架构的列式存储数据库,能够使用 SQL 查询语句实时生成数据分析结果。ClickHouse 的全称是 Click Stream,Data WareHouse。ClickHouse 也是第一款实现向量化查询引擎的开源数据库,也是一款专注于 OLAP 查询的数据库。ClickHouse 直接将 OLAP 查询的耗时压缩到了亚秒级。

  • Apache Doris 也是一个 MPP 架构的、专门用于 OLAP 查询的数据库产品。Apache Doris 不仅可以满足多种数据分析需求,如固定历史报表,实时数据分析,交互式数据分析,探索式数据分析,而且集群扩展能力非常突出,可以支持 10 PB 以上的超大数据集。另外,Apache Doris 对实时数据的支持也非常强大,因此是一款综合能力非常强的数据库。由于 Apache Doris 是本次分享的重点,所以这里只是简单介绍一下,后面再展开。

这里插入一个知识点,也是我在整理 PPT 的时候看到的一个总结。ClickHouse 为什么快?这里总结了几个点,其中最主要的是:C++ 语言可以利用硬件优势,底层数据选择列存储,支持向量化查询引擎,利用单节点的多核并行处理能力,数据写入时建立一级、二级和稀疏索引。这些特点为新兴的 OLAP 查询数据库研发指明了方向,这也是 Doris 的基本特点。

5.MPP 架构

再说说第三个概念,MPP 架构。MPP(Massively Parallel Processing)是大规模并行处理框架的简称。MPP 是 Shared Nothing 架构,是将任务并行地分散到多个服务器和节点上,在每个节点上的计算完成后,将各部分的结果汇总在一起得到最终的结果。

在这里插入图片描述


前文说到的 Teradata 是业界最早的知名 MPP 架构的数据库,之后是 Greenplum 以及和 Greenplum 架构类似 GBase、GaussDB 等都是 MPP 架构。Hadoop 体系的 Presto、HAWQ、Impala 都宣称是 MPP 架构,还有前面说到的 Clickhouse 和 Doris 两个新生物种。由于MPP 家族越来越庞大,加上 Hadoop 生态的跨界 “打劫”,所以现在很难定义什么是 MPP 架构。MPP 架构和 Hadoop 架构在一定层次上走向融合,目前最大的区别就在于计算资源的分配上。Hadoop 架构还遵从 Yarn 分配资源,而 MPP 架构都是独立使用本地内存和 CPU。再就是过程备份和失败重试机制,Hadoop 都会保留中间计算过程,计算失败的部分节点有自动重试机制,而 MPP 架构一般是一次性过程,如果执行失败了就会告诉用户执行失败,以此换取更好的查询性能。

6.实时数仓定义

最后再来说说实时数仓。传统的数据仓库都是利用夜间的业务低峰期来完成数据的 ETL 加工处理,并且为白天的日常分析提供数据支撑,所以在这个应用前提下,数据仓库默认都是按天计算和加工数据的,俗称 T+1 数仓。但是随着业务的发展和技术的成熟,我们不再满足于今天看昨天的数据,而是想要今天就看到今天的数据,于是就有了实时数仓的概念。实时数仓是指数据的实时性更高、延迟性低的数据仓库,一般是统计当天发生的业务数据。实时数仓一般包括按小时执行的小时级、分钟级的延时的准实时和秒级延时纯实时数仓。

从前面的介绍我们可以看出,早期的 Hive 数仓技术并不完善,连实时 OLAP 查询都很难做到,所以要做到实时数仓就更加难上加难。所以 Kafka 诞生这么多年,实时数仓还要等到 Flink 火爆才流行起来。纯实时数据仓库是指能够以近乎实时的方式处理和分析数据的数据仓库。它的目标是将数据的捕获、处理和分析的速度提高到接近实时的水平,以支持实时决策和洞察。

纯实时数据仓库颠覆了离线数仓的架构,包括数据采集、数据加工、数据查询和分析都需要采用一套新的技术栈。

  • 数据采集 方面,要做到较低延迟的采集数据,常用的方法是读取数据库变更日志(也叫 CDC)或者直接接入在线的 Kafka 数据流。

  • 数据加工 方面,实时数据一般采用 Apache Flink 或者 Spark Streaming 来完成数据加工,中间过程数据一般保存在 Kafka。

  • 实时数据查询 方面,一般只支持将数据汇总写入 MySQL 等关系型数据库或者 Redis 缓存,以便于快速获取结果。为了支持更快的查询,我们也可以将数据写入 Clickhouse 和 Doris 进行查询。

这种加工虽然可以做到数据的秒级延迟,但是 牺牲了数据的准确性和数据分析维度,高度聚合的数据虽然可以满足一些场景的使用,但是无法进一步分析和深挖数据价值。所以大多数情况下,我们会在实时架构和离线架构之间做一个折中处理,就前半部分实时,后半部分离线。数据接入实时,数据加工采用离线微批处理。如果交易系统无法支持 CDC 变更日志,我们甚至可以基于数据的创建时间和修改时间,做微批的增量数据抽取。微批处理的好处在于:数据准确度比实时高,技术比较成熟,开发运维成本低。具体的实现方法我们将在第三部分展开。

实时数仓的应用场景也是在逐步丰富的,我在工作中遇到的主要有:

  • 实时业务监控和预警。避免线上业务中断未能及时发现造成的损失。

  • 实时大屏。主要用于 618 或者双十一大促期间监控业绩目标达成情况。

  • 实时机器人播报。通过实时数据加工,及时向相关同事通报当日业绩进展情况和排名。

  • 移动端实时数据展现。方便领导、管理人员实时查看业绩完成情况。

  • 实时自助分析。主要是给自助分析补充当日数据。

  • 实时看板。例如,按照五分钟的粒度查看成交指标,并和同期进行对比,便于及时发现业务故障,比实时监控更直观。

  • 实时数据接口。有一些数据对外的场景,需要实时提供最新的数据,便于跨系统对接,不过这种场景大多数在交易系统完成。

  • 实时推荐。例如商品实时销售排行榜等。

7.实时数仓的难点

实时数仓的实现也有很多难点,我这里总结主要是三个点。

  • 第一,多表关联,也叫多流 join。当其中一方数据延迟时,如果另外一边的流数据不在数据窗口范围中,将无法关联。例如销售订单父表和销售明细子表,如果业务系统出现明细表变更超出窗口范围的数据,双流 join 将会丢失数据,导致变更记录丢失。

  • 第二,维度数据变更。当维度数据发生变化时,历史数据和新写入的数据将存在不一致。如果是离线数仓,我们一般用当日凌晨确定时间点的维度状态作为统一维度;如果是纯实时数仓,维度变化前后的数据将出现不一致,而历史数据按照新维度清洗将成为一大难题。

  • 第三个点是数据失效。数据失效包括数据物理删除和状态变为无效。数据物理删除,是指交易系统直接删除了对应的记录,这个在增量数据处理和实时数据抽取中都是难点,幸运的是 CDC 日志可以捕获到删除的记录;状态变为无效是指原来有效的数据变为无效数据,例如订单支付后关单。对于数据失效,我们一般的处理方法是生成一条指标为负数的对冲记录,将汇总结果中的指标扣减掉。但是在计算成交人数等指标则无法做到剔除。

以上三种情况在传统方案的实时数仓领域是无解的,但是在 Apache Doris 时代,我们是可以很轻易的解决这些痛点。

原文地址:https://blog.csdn.net/be_racle/article/details/132993843

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读5.3k次,点赞10次,收藏39次。本章详细写了mysql的安装,环境的搭建以及安装时常见的问题和解决办法。_mysql安装及配置超详细教程
文章浏览阅读1.8k次,点赞50次,收藏31次。本篇文章讲解Spark编程基础这门课程的期末大作业,主要围绕Hadoop基本操作、RDD编程、SparkSQL和SparkStreaming编程展开。_直接将第4题的计算结果保存到/user/root/lisi目录中lisipi文件里。
文章浏览阅读7.8k次,点赞9次,收藏34次。ES查询常用语法目录1. ElasticSearch之查询返回结果各字段含义2. match 查询3. term查询4. terms 查询5. range 范围6. 布尔查询6.1 filter加快查询效率的原因7. boosting query(提高查询)8. dis_max(最佳匹配查询)9. 分页10. 聚合查询【内含实际的demo】_es查询语法
文章浏览阅读928次,点赞27次,收藏18次。
文章浏览阅读1.1k次,点赞24次,收藏24次。作用描述分布式协调和一致性协调多个节点的活动,确保一致性和顺序。实现一致性、领导选举、集群管理等功能,确保系统的稳定和可靠性。高可用性和容错性Zookeeper是高可用的分布式系统,通过多个节点提供服务,容忍节点故障并自动进行主从切换。作为其他分布式系统的高可用组件,提供稳定的分布式协调和管理服务,保证系统的连续可用性。配置管理和动态更新作为配置中心,集中管理和分发配置信息。通过订阅机制,实现对配置的动态更新,以适应系统的变化和需求的变化。分布式锁和并发控制。
文章浏览阅读1.5k次,点赞26次,收藏29次。为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准;
文章浏览阅读1.2k次,点赞26次,收藏28次。在安装Hadoop之前,需要进行以下准备工作:确认操作系统:Hadoop可以运行在多种操作系统上,包括Linux、Windows和Mac OS等。选择适合你的操作系统,并确保操作系统版本符合Hadoop的要求。安装Java环境:Hadoop是基于Java开发的,因此需要先安装和配置Java环境。确保已经安装了符合Hadoop版本要求的Java Development Kit (JDK),并设置好JAVA_HOME环境变量。确认硬件要求:Hadoop是一个分布式系统,因此需要多台计算机组成集群。
文章浏览阅读974次,点赞19次,收藏24次。# 基于大数据的K-means广告效果分析毕业设计 基于大数据的K-means广告效果分析。
文章浏览阅读1.7k次,点赞6次,收藏10次。Hadoop入门理论
文章浏览阅读1.3w次,点赞28次,收藏232次。通过博客和文献调研整理的一些农业病虫害数据集与算法。_病虫害数据集
文章浏览阅读699次,点赞22次,收藏7次。ZooKeeper使用的是Zab(ZooKeeper Atomic Broadcast)协议,其选举过程基于一种名为Fast Leader Election(FLE)的算法进行。:每个参与选举的ZooKeeper服务器称为一个“Follower”或“Candidate”,它们都有一个唯一的标识ID(通常是一个整数),并且都知道集群中其他服务器的ID。总之,ZooKeeper的选举机制确保了在任何时刻集群中只有一个Leader存在,并通过过半原则保证了即使部分服务器宕机也能维持高可用性和一致性。
文章浏览阅读10w+次,点赞62次,收藏73次。informatica 9.x是一款好用且功能强大的数据集成平台,主要进行各类数据库的管理操作,是使用相当广泛的一款ETL工具(注: ETL就是用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)到目的端的过程)。本文主要为大家图文详细介绍Windows10下informatica powercenter 9.6.1安装与配置步骤。文章到这里就结束了,本人是在虚拟机中装了一套win10然后在此基础上测试安装的这些软件,因为工作学习要分开嘛哈哈哈。!!!!!_informatica客户端安装教程
文章浏览阅读7.8w次,点赞245次,收藏2.9k次。111个Python数据分析实战项目,代码已跑通,数据可下载_python数据分析项目案例
文章浏览阅读1.9k次,点赞61次,收藏64次。TDH企业级一站式大数据基础平台致力于帮助企业更全面、更便捷、更智能、更安全的加速数字化转型。通过数年时间的打磨创新,已帮助数千家行业客户利用大数据平台构建核心商业系统,加速商业创新。为了让大数据技术得到更广泛的使用与应用从而创造更高的价值,依托于TDH强大的技术底座,星环科技推出TDH社区版(Transwarp Data Hub Community Edition)版本,致力于为企业用户、高校师生、科研机构以及其他专业开发人员提供更轻量、更简单、更易用的数据分析开发环境,轻松应对各类人员数据分析需求。_星环tdh没有hive
文章浏览阅读836次,点赞21次,收藏19次。
文章浏览阅读1k次,点赞21次,收藏15次。主要介绍ETL相关工作的一些概念和需求点
文章浏览阅读1.4k次。本文以Android、java为开发技术,实现了一个基于Android的博物馆线上导览系统 app。基于Android的博物馆线上导览系统 app的主要使用者分为管理员和用户,app端:首页、菜谱信息、甜品信息、交流论坛、我的,管理员:首页、个人中心、用户管理、菜谱信息管理、菜谱分类管理、甜品信息管理、甜品分类管理、宣传广告管理、交流论坛、系统管理等功能。通过这些功能模块的设计,基本上实现了整个博物馆线上导览的过程。
文章浏览阅读897次,点赞19次,收藏26次。1.背景介绍在当今的数字时代,数据已经成为企业和组织中最宝贵的资源之一。随着互联网、移动互联网和物联网等技术的发展,数据的产生和收集速度也急剧增加。这些数据包括结构化数据(如数据库、 spreadsheet 等)和非结构化数据(如文本、图像、音频、视频等)。这些数据为企业和组织提供了更多的信息和见解,从而帮助他们做出更明智的决策。业务智能(Business Intelligence,BI)...
文章浏览阅读932次,点赞22次,收藏16次。也就是说,一个类应该对自己需要耦合或调用的类知道的最少,类与类之间的关系越密切,耦合度越大,那么类的变化对其耦合的类的影响也会越大,这也是我们面向对象设计的核心原则:低耦合,高内聚。优秀的架构和产品都是一步一步迭代出来的,用户量的不断增大,业务的扩展进行不断地迭代升级,最终演化成优秀的架构。其根本思想是强调了类的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会波及有关系的类。缓存,从操作系统到浏览器,从数据库到消息队列,从应用软件到操作系统,从操作系统到CPU,无处不在。
文章浏览阅读937次,点赞22次,收藏23次。大数据可视化是关于数据视觉表现形式的科学技术研究[9],将数据转换为图形或图像在屏幕上显示出来,并进行各种交互处理的理论、方法和技术。将数据直观地展现出来,以帮助人们理解数据,同时找出包含在海量数据中的规律或者信息,更多的为态势监控和综合决策服务。数据可视化是大数据生态链的最后一公里,也是用户最直接感知数据的环节。数据可视化系统并不是为了展示用户的已知的数据之间的规律,而是为了帮助用户通过认知数据,有新的发现,发现这些数据所反映的实质。大数据可视化的实施是一系列数据的转换过程。