大数据架构体系演进

传统离线大数据架构

​ 21世纪初随着互联网时代的到来,数据量暴增,大数据时代到来。Hadoop生态群及衍生技术慢慢走向“舞台”,Hadoop是以HDFS为核心存储,以MapReduce(简称MR)为基本计算模型的批量数据处理基础设施,围绕HDFS和MR,产生了一系列的组件,不断完善整个大数据平台的数据处理能力,例如面向KV操作的HBase、面向SQL分析的Hive、面向工作流的PIG等。以Hadoop为核心的数据存储及数据处理技术逐渐成为数据处理中的“中流砥柱”

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
​ 这个时期,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术在大数据场景中被广泛使用。大数据中的数据仓库构建就是基于经典数仓架构而来,使用大数据中的工具来替代经典数仓中的传统工具,架构建设上没有根本区别。在离线大数据架构中离线数仓结构如下
在这里插入图片描述

传统离线大数据架构【早期比较多】

增加离线:

Spring boot + Flink 任务量大,JOB多

HDFS+MR;Hive传统分层分析【可增加标签层】

Hive+Spark[推荐]

Hive+Tez

​ 随着数据处理能力和处理需求的不断变化,越来越多的用户发现,批处理模式无论如何提升性能,也无法满足一些实时性要求高的处理场景,流式计算引擎应运而生,例如Storm、Spark Streaming、Flink等。

以上离线大数据架构不能够处理实时性业务,早期,很过公司都是基于Storm来处理处理实时性比较强的业务场景,随着越来越多的应用上线,大家发现,其实批处理和流计算配合使用,才能满足大部分应用需求。而对于用户而言,其实他们并不关心底层的计算模型是什么,用户希望无论是批处理还是流计算,都能基于统一的数据模型来返回处理结果,于是Lambda架构被提出。

Lambda架构

​ 在Lambda架构中,为了计算一些实时指标,就在原来的离线数仓基础之上增加了一个实时计算的链路,并对数据源做流式改造:把消息发送到消息队列中(大数据中常用Kafka),实时计算去消费消息队列中的数据,完成实时指标计算,推送到下游的数据服务中去,由数据服务层完成离线与实时结果的合并。

​ Lambda架构中数据从底层的数据源开始,经过各种各样的格式进入大数据平台,在大数据平台中经过Kafka、Flume等数据组件进行收集,然后分成两条线进行计算。一条线是进入流式计算平台(例如 Storm、Flink或者Spark Streaming),去计算实时的一些指标,保证数据实时性;另一条线进入批量数据处理离线计算平台(例如Mapreduce、Hive,Spark SQL),去计算T+1的相关业务指标,这些指标需要隔日才能看见,保证数据有效、准确性。

​ 根据实时业务统计的复杂程度Lambda架构也分为以下两种情况。

离线数据+实时处理链路(传统实时开发)

在这里插入图片描述
在这里插入图片描述

注意:“烟囱式”开发:在一个有一定规模的企业中,通常都会存在各种各样的应用系统,它们分别由企业的各个不同部门、在各种不同历史时期、为满足各种不同业务目的而开发。由于数据格式没有统一规范,相互之间没有联通、数据更没有整合,像一个个烟囱,因此称其为“烟囱式系统”。同样,在数据处理过程中,各个数据处理程序之间不能很好做到数据规范统一、处理数据流程统一、数据复用,各自独立,叫做“烟囱式”开发

离线数仓+实时数仓

​ 随着企业实时业务增多,统计的实时指标越来越多,复杂程度也越来越高,为了在实时链路中更好的复用数据,这是就有必要在实时链路中加入数据分层设计,构建真正的实时数仓。这种场景下Lambda架构中是由离线数仓和实时数仓两部分组成

实时数仓:HBase+phoenix+Redis 作为主题,事实,维度表等存储
在这里插入图片描述

可能重复消费,数据丢失,延迟过大等等

T+1计算

24h

离线 :100G*1

实时:100Gx1024x1024/(24x60x60) 耗时

Kappa架构

Kappa架构【】几乎没有离线数据

​ 随着Flink等流式处理引擎的不断完善,流处理技术相关的技术成熟发展(例如:Kafka、ClickHouse),针对Lambda架构的需要维护两套程序等以上缺点,LinkedIn的Jay Kreps结合实际经验和个人体会提出了Kappa架构。

​ Kappa架构的核心思想是通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码。此外Kappa架构认为只有在有必要的时候才会对历史数据进行重复计算,而如果需要重复计算时,Kappa架构下可以启动很多个实例进行重复计算,方式是通过上游重放完成(从数据源拉取数据重新计算)。

​ Kappa架构就是基于流来处理所有数据,流计算天然的分布式特征,注定了他的扩展性更好,通过加大流计算的并发性,加大流式数据的“时间窗口”,来统一批处理与流式处理两种计算模式。其架构如下

在这里插入图片描述

离线:重复消费kafka【或其他消息队列等中间件】。存储Hive。辅助于数据挖掘【每月,每季度等计算一次】

数据发布or展示,需求变动。可用读取kafka主题信息数据。重新整理

Doris【OLAP工具】;如果作为实时数仓,数据量小可以,数据量过多。关联性非常差不作为推荐——doris实时数据仓库理论与实战作者:吴百豹

kafka不可计算SQL(可选用KSQL),puslar可操作SQL【来自官网描述】

实时数仓逻辑走向

在这里插入图片描述

湖仓一体

​ 实时数仓发展到现在的架构,一定程度上解决了数据报表时效性问题,但是这样的架构依然存在不少问题,随着技术的发展,基于Kafka+Flink的实时数仓架构也会进一步往前发展,

那么到底往哪些方向发展,我们可以结合大公司中技术选型可以推测实时数仓的发展大致会走向“批流一体”

​ 最近一两年中和实时数仓一样火的概念是“批流一体”,那么到底什么是“批流一体”?在业界中很多人认为批和流在开发层面上都统一到相同的SQL上处理是批流一体,也有一些人认为在计算引擎层面上批和流可以集成在同一个计算引擎是批流一体,比如:Spark/SparkStreaming/Structured Streaming/Flink框架在计算引擎层面上实现了批处理和流处理集成。

​ 以上无论是在业务SQL使用上统一还是计算引擎上的统一,都是批流一体的一个方面,除此之外,批流一体还有一个最核心的方面就是存储层面上的统一。这个方面上也有一些流行的技术:delta/hudi/iceberg,存储一旦能够做到统一,例如:一些大型公司使用Iceberg作为存储,那么Kappa架构中很多问题都可以得到解决,Kappa架构将变成个如下模样:
在这里插入图片描述

​ 这条架构中无论是流处理还是批处理,数据存储都统一到数据湖Iceberg上,这一套结构将存储统一后,解决了Kappa架构很多痛点,解决方面如下:

  1. 可以解决Kafka存储数据量少的问题。目前所有数据湖基本思路都是基于HDFS之上实现的一个文件管理系统,所以数据体量可以很大。
  2. DW层数据依然可以支持OLAP查询。同样数据湖基于HDFS之上实现,只需要当前的OLAP查询引擎做一些适配就可以进行OLAP查询。
  3. 批流存储都基于Iceberg/HDFS存储之后,就完全可以复用一套相同的数据血缘、数据质量管理体系。
  4. 实时数据的更新。

上述架构也可以认为是Kappa架构的变种,也有两条数据链路,一条是基于Spark的离线数据链路,一条是基于Flink的实时数据链路,通常数据都是直接走实时链路处理,而离线链路则更多的应用于数据修正等非常规场景。

组件

大数据相关生态几乎都是Apache基金会。

lambda架构 可 数据中台

数据中台

​ 企业对应部门,业务,构建多个数仓【数据分散未被整合】

​ 可对应【机构信息、部门信息。一些约定俗称字典(专业术语)】

在这里插入图片描述

​ 各分公司、部门、组、单元、都有自己内部的标准或规范。整体规范尚待统一。

​ 一份数据,一份服务

​ 业务数据整合 闭环 数据中台;双向循环 共性成长
在这里插入图片描述

全景图

https://mad.firstmark.com/

https://landscape.cncf.io/?group=projects-and-products

企划

数据相当庞大。获取已知可用数据,探求未知隐藏数据。

合理对其挖掘探索分析

本质:统计、归纳、总结

探索、挖掘、发现、预测、求未来

云计算资源共享

OpenStack高可用集群
在这里插入图片描述

IAAS的应用场景
  • 开发和测试环境:IAAS模型为开发团队提供了灵活、可扩展的基础设施资源,可以快速搭建和部署开发和测试环境。
  • 高性能计算:对于需要大规模计算能力的科学计算、数据分析和机器学习等任务,IAAS模型提供了强大的计算和存储资源,可以快速满足需求。
  • 灾备容灾:通过租用IAAS提供的基础设施资源,组建灾备和容灾解决方案,确保业务的连续性和可用性。

PAAS(平台即服务)

什么是PAAS

PAAS,即平台即服务,是一种云计算模型,提供了一整套开发和运行应用程序所需的平台环境。在PAAS模型中,云服务提供商负责提供和管理硬件设施、操作系统、数据库和开发工具等基础平台,使开发人员可以专注于应用程序的开发和部署。

PAAS的特点和优势
  • 简化开发过程:PAAS模型提供了开发所需的基础平台,包括操作系统、数据库、开发工具和运行环境等。开发人员可以更专注于应用程序的开发,无需关注底层基础设施的管理和维护。
  • 快速部署和扩展:PAAS模型提供了自动化的应用程序部署和扩展机制,开发人员可以通过简单的操作实现快速部署和横向扩展。这使得应用程序的交付速度更快,能够迅速响应业务需求。
  • 多租户架构:PAAS模型通常采用多租户架构,多个用户可以共享相同的平台环境,提高资源利用率。同时,用户之间相互隔离,保证了安全性和稳定性。
PAAS的应用场景
  • Web应用开发:对于Web应用开发,PAAS模型提供了丰富的开发框架、工具和服务,可以快速构建和部署Web应用程序。
  • 移动应用开发:PAAS模型为移动应用开发提供了适配的开发工具和平台环境,支持移动应用程序的构建、测试和发布。
  • 数据分析和大数据处理:PAAS模型提供了强大的计算和存储资源,适用于数据分析和大数据处理任务,帮助用户快速处理和分析海量数据。

SAAS,即软件即服务,是一种云计算模型,通过云平台提供软件应用程序给终端用户。在SAAS模型中,用户无需购买和安装软件,而是通过订阅方式使用云服务商提供的应用程序。

SAAS的特点和优势
  • 零部署和维护成本:在SAAS模型中,用户无需购买、安装和维护软件,只需通过云平台订阅和使用。这降低了用户的部署和维护成本,同时减轻了IT团队的负担。
  • 灵活的订阅模式:SAAS模型通常采用按需订阅的模式,用户可以根据实际需求选择合适的订阅计划。用户可以根据业务需求进行灵活的订阅调整,避免了不必要的资源浪费。
  • 快速升级和更新:SAAS模型使得软件的升级和更新变得简单和快速。云服务提供商可以在后台进行软件的更新和升级,用户无需手动操作,即可获得最新版本的功能和修复。
SAAS的应用场景
  • 办公协作和通信:SAAS模型广泛应用于办公协作和通信工具,如在线文档编辑、邮件服务、视频会议等。
  • 客户关系管理:SAAS模型提供了客户关系管理软件,帮助企业管理客户关系、销售流程和市场活动。
  • 人力资源管理:SAAS模型提供了人力资源管理软件,包括招聘、培训、绩效评估等功能,简化企业人力资源管理流程。

总结

IAAS、PAAS和SAAS是云计算中常见的三种服务模型。IAAS提供基础设施资源,PAAS提供开发和运行平台,SAAS提供软件应用程序。它们各自具有不同的特点和优势,适用于不同的应用场景。

  • IAAS适用于需要灵活和可扩展基础设施资源的场景,如开发和测试环境、高性能计算和灾备容灾。
  • PAAS适用于简化开发过程、快速部署和扩展的场景,如Web应用开发和移动应用开发。
  • SAAS适用于降低部署和维护成本、快速获取软件功能的场景,如办公协作、客户关系管理和人力资源管理。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB实验五:MATLAB数据分析

1. 某线路上不同时间对应的电压如下表所示: 1)用 3 次多项式拟合(polyfit)该实验曲线,要求绘制 2 原始采样 点,并在 1~8 范围内,使用时间间隔为 0.2 的数据绘制拟合曲线。 建立一个脚本文件:text5_1.m 如下…

黑马JavaWeb企业级开发(知识清单)01——前端介绍,HTML实现标题:排版

文章目录 前言一、认识web前端、HTML、CSS二、VS Code开发工具&#xff08;插件弃用问题&#xff09;三、HTML结构标签介绍1. 标签页标题< title >2. 图片标签< img >1) 常见属性2) src路径书写方式 3. 标题标签< h >4. 水平分页线标签< hr > 四、用Vs…

安全的备忘录工具有哪些 安全好用的备忘录

在这个数字化的时代&#xff0c;我们的生活中充斥着各种各样的信息&#xff0c;从工作计划到个人琐事&#xff0c;从账号密码到重要日期&#xff0c;这些信息都需要我们牢记。然而&#xff0c;人的记忆毕竟有限&#xff0c;于是&#xff0c;备忘录工具成为了我们日常生活中不可…

运行 npm install 报错-4048

我在已经开发中的项目&#xff0c;执行 npm install 命令时&#xff0c;出现报错&#xff1a; 并且之前在帖子中提到的报错类型还不一样&#xff08;帖子内容如下&#xff09;&#xff1a; 运行 npm run dev 总报错_运行npm run dev报错-CSDN博客 该报错内容主要为权限导致的&…

C# 编程机器人

右边写代码&#xff0c;控制左边机器人移动 冯腾飞/编程机器人 - Gitee.com

SpringBoot框架学习笔记(五):静态资源访问、Rest风格请求处理、配置视图解析器、接收参数的相关注解详解

1 WEB开发-静态资源访问 1.1 基本介绍 &#xff08;1&#xff09;只要静态资源放在类路径的以下目录&#xff1a;/static、/public、/resources、/META-INF/resources 可以被直接访问。maven项目的类路径即为main/resources目录--对应SpringBoot源码为WebProperties.java类 …

基于STM32的PM2.5监测系统设计

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 &#x1f91e;大家好&#xff0c;这里是5132单片机毕业设计&#xff0c;今天给大家分享的是《基于STM32的PM2.5监测系统设计》。 设备的详细功能见网…

Nginx 怎样处理请求的重试机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的重试机制&#xff1f;一、为何需要重试机制&#xff1f;二、Nginx 中的重试机制原理三、Nginx 重试机制的配置参数四、Nginx 重试机制的实际…

GPT盘新增容量后如何扩容?

场景&#xff1a;一块5T的GPT盘&#xff0c;现有需求再加10T&#xff0c; 在虚拟化平台加10T盘后&#xff0c;机器不重启&#xff0c;执行命令 echo 1 > /sys/block/sdb/device/rescan刷新磁盘容量&#xff0c;可看到容量已刷出。 但执行fdisk /dev/sdb时&#xff0c;发现创…

《0基础》学习Python——第二十二讲__网络爬虫/<5>爬取豆瓣电影封面图

一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情&#xff0c;那么接下来我们将学习如何去爬取这些电影的图片&#xff0c;并将这些图片存放在文件夹中。 2、过程实现&#xff1a; 2.1、获取网页源码 首先还是和爬取电影名…

Air780EP-AT开发-HTTP应用指南

简介 关联文档和使用工具&#xff1a; AT固件获取AT指令手册 概述 4G模块支持HTTP和HTTPS协议&#xff0c; HTTP应用的基本流程如下&#xff1a; 1、激活PDP&#xff08;参考&#xff1a;http://oldask.openluat.com/article/937&#xff09;2、初始化HTTP服务3、设置HTTP会话…

服务器上使用Docker部署sonarQube,并集成到Jenkins实现自动化。

目标是要在目标服务器上使用docker工具部署好sonar环境&#xff0c;然后再集成到Jenkins中实现自动化的代码审查工作。 Docker 首先Dokcer的源大部分现在都用不了&#xff0c;于是我上网查询&#xff0c;终于找到了一个可用的镜像。 编辑/etc/docker/daemon.json文件&#x…

Linux中的时间函数

参考&#xff1a; 几种取时间的方法&#xff08;附代码&#xff09; Linux中gmtime和localtime的区别(time_t格式转换为tm格式) C 库函数 - time() mktime和localtime_r能在多线程环境下使用么&#xff1f; Linux_C环境编程&#xff1a;时间日期函数总结 细说时间测量RDT…

探索NVM:让Node.js开发如虎添翼的利器

文章目录 前言一、NVM简介&#xff1a;版本管理的瑞士军刀二、NVM能解决什么问题&#xff1f;三、如何使用NVM​&#xff1f;总结 前言 在这个日新月异的编程世界里&#xff0c;Node.js凭借其高效的非阻塞I/O操作和轻量级的事件驱动模型&#xff0c;成为了全栈开发、微服务架构…

音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现

一、引言 通过FFmpeg命令可以判断出某个文件是否为AnnexB格式的H.264裸流&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为AnnexB格式的H.264裸流呢&#xff1f;它内部其实是通过h264_probe函数来判断的。从文章《FFmpeg源码&#xff1a;av_probe_input_format3函数分析》中…

winfrom 文件自动生成

数据页面展示 添加定时器执行每个表数据的生成计划 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using …

【STM32嵌入式系统设计与开发---拓展】——1_11_1串口通信(USART)

这里写目录标题 1、一般我们都怎么进行通信的&#xff1f;&#xff08;1&#xff09;串行通行&#xff08;Serial Communication&#xff09;&#xff08;2&#xff09;并行通信&#xff08;3&#xff09;无线网络通信&#xff08;4&#xff09;网络通信&#xff08;5&#xff…

Django [实战] 通过表单上传文件

在Django中上传文件通常涉及到以下几个步骤&#xff1a; 设置你的模型以包含一个FileField或ImageField&#xff08;如果上传的是图片&#xff09;。创建一个表单&#xff0c;该表单包含一个Form或ModelForm&#xff0c;其中包含一个FileField。在你的视图中处理上传的文件。在…

Modbus转BACnet/IP网关快速对接Modbus协议设备与BA系统

摘要 在智能建筑和工业自动化领域&#xff0c;Modbus和BACnet/IP协议的集成应用越来越普遍。BA&#xff08;Building Automation&#xff0c;楼宇自动化&#xff09;系统作为现代建筑的核心&#xff0c;需要高效地处理来自不同协议的设备数据&#xff0c;负责监控和管理建筑内…

可以免费合并pdf的软件 合并pdf文件的软件免费 合并pdf的软件免费

在数字化办公的今天&#xff0c;pdf格式因其稳定性和跨平台兼容性被广泛使用。然而&#xff0c;当我们需要将多个 pdf 文件合并为一个时&#xff0c;却往往感到力不从心。本文将为你介绍几款强大的pdf文件合并软件&#xff0c;让你轻松管理文档。 方法一、使用pdf转换器 步骤1…