《离线和实时大数据开发实战》(二)大数据平台架构 & 技术概览1

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,8核32GB 100GB 1个月
简介: 《离线和实时大数据开发实战》(二)大数据平台架构 & 技术概览1

前言


接着上一章 构建大数据开发知识体系图谱,本次继续分享邦中老师的《离线和实时大数据开发实战》读书笔记 。到底什么样的平台才能算是大数据平台呢?带着这个问题,我们开始今天的内容 ( •̀ ω •́ )✧


什么是数据平台呢?或者更时髦点,什么是大数据平台呢?目前业界并没有对数据平台的精确定义,但通常所说的数据平台主要包含以下三部分:


数据相关的工具、产品和技术:比如批量数据采集传输的 Sqoop 、离线数据处理 Hadoop 和 Hive 、实时流处理的 Storm、Spark 以及数据分析的 R 等;


数据资产:不仅包含公司业务本身产生和沉淀的数据,还包括公司运作产生的数(如财务、行政),以及从外界购买、交换或者爬虫等而来的数据等;


数据管理:有了数据工具,也有了数据资产,但是还必须对它们进行管理才能让数据产生最大价值并最小化风险,因此数据平台通常还包括数据管理的相关概念和技术,如数据仓库、数据建模、数据质量、数据规范、数据安全和元数据管理等。


上面是对数据平台逻辑范畴上的一个划分,实际上数据平台从数据处理的时效性角度,通常还是分为 离线数据平台 和 实时数据平台。


1.离线数据平台通常以天为典型的数据处理周期,数据延迟也是以天为单位。离线数据平台的数据应用主要以“看”为主,就目前业界的数据现状来看,离线数据平台还是数据平台的主战场。


2.但是随着大数据应用的日益深入以及人工智能浪潮的兴起,产品的智能化趋势越来越明显,数据的实时化、在线化也对数据平台的实时性提出了越来越高的要求,从刚开始分钟级别延迟到目前的秒级甚至毫秒级延迟,实时数据平台越来越得到重视,挑战也越越大,当然也变得越来越主流,随着 Spark、Flink、Beam 技术的发展,未来有一天也许将会颠覆离线数据平台的技术和架构。


接下来就是介绍数据平台,出于逻辑清晰以及技术相关性考虑,将主要从 离线数据平台、实时数据平台以及数据管理 三个方面来对数据平台相关的概念和技术进行介绍。


一、离线数据平台的架构、技术和设计


对于公司的管理者、一线业务人员来说,经常需要回答的问题是:当前和过去 个季度或者一个月的销售趋势如何?哪些商品热销?哪些商品销售不佳?哪些客户在买我们的产品?管理者和业务人员需要不停地监控这些业务指标,并有针对性地根据这些指标调整业务策略和打法,如此反复,形成闭环,这就是数据化运营的基本思路。


而这类分析和“看”的需求正是离线数据平台所擅长的,这类分析性的需求,数据的时效性并不是强需求,当天的数据有了也好,即使没有,影响也不大,离线的数据技术和工具已经发展很多年了,开源的解决方案和商业性的解决方案也有很多,已经能够很成熟地解决此类问题。


离线数据平台是构建公司和企业数据平台的根本和基础,也是目前数据平台的主战场。


1.1 离线数据平台的整体架构


离线数据平台通常和 Hadoop Hive 、数据仓库、 ETL 、维度建模、 数据公共层等联系在一起。


Hadoop 出现之前,数据仓库的主要处理技术是商业化数据库,比如微软的 SQL Server、甲骨文的 Oracle、 IBM DB2 等。随着大数据的兴起以及数据量的持续爆炸和指数级别增长,Hadoop 以及 MapReduce、Hive 等大数据处理技术才得到越来越广泛的应用和接受。



1.2 数据仓库技术


1. OLTP 和 OLAP


数据仓库是随着数据分析的需求逐渐发展起来的,最初的数据分析和报表都是基于业务系统的数据库完成的,也就是 OLTP 数据库,如商业性的 Oracle 、MS SQL Server 和开源的MySQL 等关系数据库。


OLTP 的全称是 Online Transaction Processing ,顾名思义, OLTP 数据库主要用来进行事务处理,比如新增一个订单、修改一个订单、查询一个订单和作废一个订单等。 OLTP据库最核心的需求是单条记录的高效快速处理,索引技术、分库分表等最根本的诉求就是解决此问题。


而这个和数据分析的需求是天然相反的,数据分析通常需要访问大量的数据,单条数据的分析没有任何意,数据分析不仅需要访问大量的数据,还要对其进行频繁的统计和查询,很快数据库管理员发现这些统计分析请求占用了大量数据库的资源,已经严重到影响生产系统的性能。


于是隔离这些数据分析请求到单独的备库或者完全复制一个新的数据库供数据分析人员使用是自然而然的选择。


解决了对生产库的影响问题后, OLTP 数据库管理员很快发现备库和复制库还是不能满足数据分析人员的需求,尤其是在性能方面。大量的数据访问通常需要全表扫描,频繁而且通常又是并发地全表扫描会造 OLTP 数据库响应异常缓慢甚至宕机,必须有新的理论支撑和技术突破才能够满足这些分析请求。


于是 OLAP 数据库应运而生,它是专门的分析型数据库 ,是为了满足分析人员的统计分析需求而发展起来的。


OLAP 数据库本身就能够处理和统计大量的数据,而且不像 OLTP 数据库需要考虑数据的增删改查和并发锁控制等 。OLAP 数据一般只需要处理数据查询请求,数据都是批量导入的,因此通过列存储、列压缩和位图索引等技术可以大大加快响应请求的速度。



2. 分析型数据库


分析型数据库面对的主要是分析师和业务分析人员对大数据集的统计和聚合操作,其架构、设计和原理和传统数据库产品( OLTP 数据库)截然不同 。通常来说,数据仓库产品一定是分布式的,但是其和 OLTP 数据库的分布式要解决的问题有着明显的不同。 OLTP 数据库的分布式(如分库分表等技术)主要是为了解决海量单条数据请求的 压力,其主要目的是把所有用户请求均匀分布到每个节点上,而 OLTP 的分布式是将用户单次对大数据集的请求任务分配到各个节点上独立计算然后再进行汇总返回给用户。


此外, OLAP 数据库一般采用列式存储,而 OLTP 通常采用行式存储。


所谓列式存储就是将表的每列一列一列地存储在一起,而不是像行存储一样按行把所有字段存储在一起。


对于数据库表来说,列的类型是固定的,所以列存储可以很容易采用高压缩比的算法进行压缩和解压缩,磁盘的 I/O 会大大减少 。


列存储非常适合大数据量统计查询的应用场景因为分析统计常常是针对某列或某些列的,列存储的数据库产品只需读出对应列并处理即可,而不是读出整个表的所有行进行处理。


3. Hadoop 数据仓库


随着随着这些年 Hadoop 的完善和 Hadoop 生态系统的崛起, 短短几年间 ,基于 Hadoop 数据仓库已经完全占据了主赛道,尤其是在互联网公司内,基于 Hadoop 的数据仓库基本是标配。


Hadoop 的内在技术基因决定了基于 Hadoop 的数据仓库方案(目前主要是 Hive 非常容易扩展(可以很容易地增加节点,把数据处理能力从 GB、TB 扩展 PB 甚至 EB ),成本也非常低廉(不用商业昂贵的服务器和存储,只需要普通的硬件即可, Hadoop 框架会进行容错处理),这两点也是 Hadoop 在互联网公司内日益流行的关键因素。


基于 Hadoop 的数据仓库解决方案,尤其是 Hive ,面临最大的挑战是数据查询延迟(Hive 的延迟一般是在分钟级,取决于 Hive SQL 的复杂度和要处理的工作量,很多时候甚至需要运行几个小时 。当然 ,对于简单的以及小数据量的 Hive SQL ,也可能几秒钟就返回结果)。


但是大数据和云计算是未来,未来的业务系统也都会执行在云端,不管是私有云、公有云或者混合云。云端也决定了未来的架构肯定是分布式的,能够近似线性扩展的,基于此,作者认为基于 Hadoop 和类 Hadoop 的数据仓库解决方案未来将会成为主流和标配,不管是对于互联网公司来说,还是传统企业来说。


1.3 数据仓库建模技术


从数据仓库概念诞生以来,在数据仓库领域,存在两种得到广泛认可的方法来构建数据仓库。这两派的代表人物分别是 Bill Inmon 和 Ralph Kimball, Bill Inmon 被称为“数据仓库之父”,而 Ralph Kimball 被称为“商业智能之父”。


从这两种观点诞生以来,围绕“哪种架构最佳”的争论一致没有休止,人们各抒己见,但是一直无法形成统的结论,就像“哪种编程语言是最佳的编程语言”一样,这可以称为数据仓库领域的“宗教战争” 。

1. Ralph Kimball 建模方法论


Kimball 对数据仓库的理论贡献都与维度设计和建模有关。维度建模将客观世界分为度量和上下文。

度量是由机构的业务过程以及支持它们的源系统来捕捉的,常以数值形式(如订单金额、库存数量等) 出现,维度建模理论称它为事实;


事实由大量文本形式的上下文包围着,而且这些上下文常被直观地分割成多个独立的逻辑块,维度建模称之为维,维描述了度量的5个W (When、Where、What、Who、Why )信息,比如什么时间下单、何种方式下单、买的什么、客户是谁等。


利用维度建模理论建模的 Kimball 数据仓库常以星形架构来呈现,在星形架构中间的是事实表,事实表周围的则是各个角度的维度表。



在维度建模中,由于星形模式紧贴业务过程,非常直观和符合业务人员的视角,因此被广泛和大量使用,星形模式也是 Kimball 对数据仓库建模的一大贡献。


Kimball 对数据仓库建模理论的第二大贡献是基于维度的 “总线体系架构” 。实际项目中,企业的业务过程通常是多样性和复杂的,存在于多个业务主题,总线体系架构和一致性维度一起保证了多个主题的事实表和维度表能够最终集成在一起,提供一致和唯

一的口径给业务人员。


采用 Kimball 建模理论的数据仓库体系架构如图所示:



可以看出, Kimball 维度建模的主题以星形架构为主,主题和主题之间则用一致性维度和企业总线体系架构来保证数据仓库的集成和一致性。


2. Bill Inmon 建模方法论


在数据仓库领域, Bill Inmon 是第一个提出来 OLAP 和数据仓库概念的人,所以被称为数据仓库之父” 。Bill Inmon 撰写了大量介绍其数据仓库方法的文章,他认为数据仓库是 “在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合”。


与其他数据库应用不同的是,数据仓库更像一种过程,对分布在企业内部各处的业务数据的整合加工和分析的过程,而不是一种可以购买的产品,这就是他所说的“企业信息化工厂”。



Inmon 的企业信息化工厂包括源头系统、准备区、 ETL 、企业数据仓库、数据集市等,而企业数据仓库是企业信息化工厂的枢纽。不同于 Kimball, Inmon 认为企业数据仓库应为原子数据的集成仓库,应该用 第三范式 和 ER 理论而非维度建模的事实表和维度表来建模。


Inmon 的企业信息化工厂涉及了“数据集市”的概念,所谓“集市”,就是部门级的数据仓库。 对于数据集市来说, Inmon 主张从企业数据仓库中提取所需要的数据,从而保证数据的一致性 这样带来的问题是必须先有企业数据仓库才可能开始建立部门级的数据集市,这是 Inmon 数据仓库架构和 Kimball 数据仓库架构的第二个主要不同。同时, Inmon 也认为应该用 Kimball 的维度建模理论来构建数据集市。


3. 数据仓库建模实践


从上述对两者数据架构的介绍可以看出, Inmon 的方法是一种由上而下( top-down )的数据仓库构建方法,其主张首先要对企业数据仓库进行总体规划,并将不同的 OLTP 数据集中到面向主题、集成的、不易失的和时间变化的企业数据仓库中。数据集市应该是数据仓库的子集,每个数据集市都是为独立部门专门设计的。


Kimball 方法则相反,其是自下向上的( down-top )。 Kimball 认为数据仓库是一系列数据集市的集合,企业可以通过一致性的维度表和“企业总线架构”来递增式集成各个数据集市, 从而构建整个企业的数据仓库。


一句话总结它们的区别:


Kimball : let people build what they want when they want it, we will

integrate them it all when and if we need to.

Inmon: don’t do anything until you have designed everything.


Inmon 的方法部署和开发周期较长,但是容易维护而且高度集成;而 Kimball 的方法可以迅速响应业务需求,快速构建一个数据仓库,但是后期集成和维护较为麻烦。两者没有绝对的对与错,只有不同阶段和不同场景下的利弊权衡。


4. 数据仓库逻辑架构设计


离线数据仓库通常基于维度建模理论来构建,但是除此之外,离线数据仓库通常还会从逻辑上进行分层。数据仓库的逻辑分层也是业界的最佳实践。


离线数据仓库的逻辑分层主要是出于如下考虑:

隔离性:用户使用的应该是数据团队精心加工后的数据,而不是来自于业务系统的原始数据。这样做的好处之一是,用户使用的是精心准备过的、规范的 、干净的从业务视角的数据,非常容易理解和使用;好处之二是, 如果上游业务系统发生更甚至重构(比如表结构、字段 业务含义等),数据团队会负责处理所有这些变化最小化对下游用户的影响。


性能和可维护性:专业的人做专业的事,数据分层使得数据的加工基本都在数据团队,从而相同的业务逻辑不用重复执行,节省了相应的存储和计算开销,毕竟大数据也不是没有代价的。此外,数据的分层也使得数据仓库的维护变得清晰和便捷,每层只负责各自的任务,某层的数据加工出现问题,只需修复该层即可。


规范性:对于一个公司和组织来说,数据的口径非常重要,大家谈论一个指标的时候,必须基于一个明确的、公认的口径,此外表、字段以及指标等也必须进行规范。


数据仓库一般分为如下几层:


ODS 层: 数据仓库源头系统的数据表通常会原封不动地存储一份,这称为 ODS ( Operation Data Store )层, ODS 层也经常会被称为准备区( staging area ),它们是后续数据仓库层(即基于 Kimball 维度建模生成的事实表和维度表层,以及基于这些事实表和明细表加工的汇总层数据)加工数据的来源,同时 ODS 层也存储着历史的增量数量或者全量数据。


OWD 和 DWS 层: 数据仓库明细层( Data Warehouse Detail, D WD )和数据仓库汇总层( Data Warehouse Summary, DWS )是数据平台的主体内容。 DWD 和 DWS 的数据是 ODS 层数据经过 ETL 清洗、转换、加载生成的,而且它们通常都是基于 Kimball 的维度建模理论来构建的,并通过一致性维度和数据总线来保证各个子主题的维度一致性。


ADS 层: 应用层主要是各个业务方或者部门基于 DWD 和 DWS 建立的数据

集市( Data Mart ,以下简称 DM ),数据集市 DM 是相对于 DWD / DWS 的数据仓库( Data Warehouse ,以下简称 DW )来说的。 一般来说,应用层的数据来源于 DW层,但原则上不允许直接访问 ODS 层的。此外,相比 DW 层,应用层只包含部门或者业务方自己关心的明细层和汇总层数据。


采用上述 ODS 层→ DW 层→应用层的数据仓库逻辑分层架构如图所示:



相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
分布式计算 大数据 数据处理
经典大数据处理框架与通用架构对比
【6月更文挑战第15天】本文介绍Apache Beam是谷歌开源的统一数据处理框架,提供可移植API,支持批处理和流处理。与其他架构相比,Lambda和Kappa分别专注于实时和流处理,而Beam在两者之间提供平衡,具备高实时性和数据一致性,但复杂性较高。选择架构应基于业务需求和场景。
45 3
经典大数据处理框架与通用架构对比
|
24天前
|
存储 数据采集 数据挖掘
“湖仓一体架构及其应用”写作框架,系统架构设计师
随着5G、大数据、人工智能、物联网等技术的不断成熟,各行各业的业务场景日益复杂,企业数据呈现出大规模、多样性的特点,特别是非结构化数据呈现出爆发式增长趋势。在这一背景下,企业数据管理不再局限于传统的结构化OLTP(On-Line Transaction Processing)数据交易过程,而是提出了多样化、异质性数据的实时处理要求。传统的数据湖(Data Lake)在事务一致性及实时处理方面有所欠缺,而数据仓库(Data Warehouse)也无法应对高并发、多数据类型的处理。因此,支持事务一致性、提供高并发实时处理及分析能力的湖仓一体(Lake House)架构应运而生。湖仓一体架构在成本、
|
7天前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
7天前
|
分布式计算 大数据 数据处理
「大数据」Kappa架构
**Kappa架构**聚焦于流处理,用单一处理层应对实时和批量数据,消除Lambda架构的双重系统。通过数据重放保证一致性,简化开发与维护,降低成本,提升灵活性。然而,资源消耗大,复杂查询处理不易。关键技术包括Apache Flink、Spark Streaming、Kafka、DynamoDB等,适合需实时批量数据处理的场景。随着流处理技术进步,其优势日益凸显。
13 0
「大数据」Kappa架构
|
7天前
|
存储 监控 算法
「AIGC算法」大数据架构Lambda和Kappa
**Lambda与Kappa架构对比:** Lambda提供批处理和实时处理,保证数据最终一致性,但维护复杂。Kappa简化为单一流处理,易于维护,适合实时场景,但可能增加实时处理压力,影响稳定性。选择时考虑数据一致性、系统维护、成本和实时性需求。
14 0
「AIGC算法」大数据架构Lambda和Kappa
|
12天前
|
存储 数据可视化 大数据
大数据平台架构设计与实施
【7月更文挑战第3天】本文探讨了大数据平台的关键技术,包括数据采集(如Kafka、Flume)、存储(HDFS、HBase、Cassandra)、处理(Hadoop、Spark)、分析挖掘及可视化工具。架构设计涉及数据收集、存储、处理、分析和应用层,强调各层次的协同与扩展性。实施步骤涵盖需求分析、技术选型、架构设计、系统部署、数据迁移、应用开发测试及上线运维,旨在为企业决策提供强有力的数据支持。
|
17天前
|
SQL 存储 运维
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构
随着网易游戏品类及产品的快速发展,游戏数据分析场景面临着越来越多的挑战,为了保证系统性能和 SLA,要求引入新的组件来解决特定业务场景问题。为此,网易游戏引入 Apache Doris 构建了全新的湖仓一体架构。经过不断地扩张,目前已发展至十余集群、为内部上百个项目提供了稳定可靠的数据服务、日均查询量数百万次,整体查询性能得到 10-20 倍提升。
网易游戏如何基于阿里云瑶池数据库 SelectDB 内核 Apache Doris 构建全新湖仓一体架构
|
21天前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用问题之如何优化大数据量的查询和处理
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
19天前
|
存储 数据采集 分布式计算
Java中的大数据处理与分析架构
Java中的大数据处理与分析架构
|
22天前
|
分布式计算 NoSQL 大数据
MaxCompute产品使用问题之数据在redis里可以通过接口调用到大数据计算吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。