揭秘大数据 | 12、大数据的五大问题 之 大数据管理与大数据分析
书接上文,老夫讲到规划大数据战略、构建大数据的解决方案与体系架构、解决大数据问题及大数据发展历程中通常会依次涉及到大数据存储、大数据管理、大数据分析、数据科学、大数据应用这五大问题。上篇内容主要围绕的是大数据存储,今天主要聊一下大数据管理和分析。
构建面向海量信息的大数据管理平台,其本质上是要实现一个可软件定义的数据中心来对下层的基础架构进行有效的管理(存储、网络、计算及相关资源的调度、分配、虚拟化、容器化等),以满足上层的业务与应用需求,并通过软件的灵活性与敏捷性实现高的总投资收益率(Return on Investment,ROI)。
在之前的文章中,老夫就提到过大数据与云计算之间相辅相成的关系,这一点也充分体现在它们两者技术栈的对应关系上(见图1)。大数据存储对应于云计算架构中的存储方式+存储媒介,大数据管理对应于基础设施、计算、云拓扑结构、IaaS及PaaS层,大数据分析对应于云平台中的应用服务,大数据应用则是云应用程序中的一大类(如传统企业级应用、Web/HTML5类越来越多的面向移动设备的应用、大数据应用等)。

云计算背景下的大数据应用可以划分为构建于公有云之上和企业混合云(兼有私有云和公有云的特征)之上两大类。
从垂直技术栈的角度看,两者都自下而上分为网络层、存储层、服务器层、操作系统层、大数据处理引擎层、大数据中间件及服务层、大数据应用层(如可视化、操控中心)等。
它们提供的服务与应用无外乎有如下几类:传统数据类服务的延展,如数据仓库、商业智能;新型服务,如大数据存储、大数据分析、流数据分析、无主机计算、机器学习、云间数据迁移等。大数据技术栈与应用如图2所示。
在上面提到的大数据服务与应用中,值得一提的是无主机计算。无主机计算是一种新型的公有云(或混合云)服务,最为知名的是亚马逊公司的AWSLambda,其核心颠覆了DevOps,用NoOps取而代之。我们知道DevOps颠覆了传统的开发、测试、运维模式没有多久,现在它又要被别人颠覆了,这的确是个“颠覆”的时代!
NoOps顾名思义就是不需要担心运维的事情,从而使程序员得到极大程度的解放,同时企业也不需要负担任何基础架构的运维成本。AWS Lambda的特点就是让使用者不再需要事先部署服务器,而是只需要把要执行的代码提交给Lambda,然后以AWS庞大的基础架构做后台支撑,并采取了一种新颖的计费方式,让用户只为所需内容付费,并且仅在需要时付费即可。在本质上,无主机计算摒弃了传统的以设备(服务器、网络、存储)为中心的计算模式,让用户应用聚焦于业务逻辑本身,在实现上采用容器化封装、面向服务的架构、事件驱动的应用程序接口等技术。这些技术最终带来的是更低成本的计算资源与更强大的能力,特别是大数据处理,通常需要更多的基础架构及资源。随着无主机计算的发展,我们有理由相信更多的大数据应用会与之结合。
在大数据(即分布式系统)的管理、分析、处理中,有一些基础的理论模型需要被读者了解,主要有:BASE最终一致性模型、ACID强一致性模型。
BASE指的是Basically Available(基本可用)、Soft-State(柔性状态)、Eventual Consistency(最终一致性)这3个特性,它是相对于传统的(单机)关系数据库时代的ACID而言的。ACID指的是Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)这4个特性。以数据库交易为例,要实现ACID,最关键的部分是数据的一致性,通常的做法是通过加锁的方式,在一个读写方对某数据进行读写的时候,让其他读写方只能等待。两段锁是一种常见的加锁实现方法,这种方法的效率对于高频交易系统而言显然不太适宜,于是就有了多版本并发控制策略,它通过为每个读写方提供数据库当前状态的快照来提供操作隔离及数据一致性。在分布式交易系统中,如后面要提到的NewSQL数据库,ACID的实现变得更加困难。有一种实现方式是两阶段提交,这种方式可以保证分布式交易(事务)操作的原子性及一致性。有趣的是在英文中BASE还有碱的意思,而ACID有酸的意思,看来前辈们在研究理论基础时也没少在起名字上下功夫。
关于分布式系统,还有一个CAP(Consistency-Availability-Partition Tolerance,一致性-可用性-分区容忍性)理论需要读者关注。CAP理论是大数据领域的一个著名理论,确切地说是分布式计算网络领域的一种假说,最早由加利福尼亚大学伯克利分校的计算机科学家、同时也是后来在2002年被雅虎公司收购的著名搜索公司Inktomi的联合创始人兼首席科学家埃里克·布鲁尔(Eric Brewer)提出。2002年,麻省理工学院的两位学者对其论证并随后使其成为理论,所以这个理论又称为Brewer's Theorem。
这个理论是非常有哲学高度的,不过两位麻省理工学院的学者据说是从比较“狭隘”的视角来论证的,所以该理论受到了学术界与业界的连番挑战,最知名的当属2012年谷歌公司推出的Spanner系统,该系统在全球范围内的跨数据中心间同时满足了CAP理论的3个特性。前文中提到过Spanner通过全球原子钟实现了极高精度的时钟同步,进而实现了数据强一致性,后来我们也称类似的系统为NewSQL系统或新型分布式系统。应该 指出的是,大部分分布式系统的部署规模远没有Spanner庞大,毕竟Spanner面向的是谷歌公司内部庞大的网络服务器集群及天文数字级的海量数据。在大多数商业环境的业务场景中,复杂的无线接入点类场景远远多过单纯的OLTP类场景,而是否满足CAP的3个特性并不是最主要的挑战。在后文中我们会对此类系统展开论述。
CAP理论认为,一个分布式系统不可能同时保证一致性、可用性和分区容忍性(又称可扩展性)这3个要素。换言之,对于一个大型的分布式计算网络存储系统而言,可用性与可扩展性是需要首要保证的,那么唯一可以牺牲的是一致性。对于绝大多数场景而言,只要达到最终一致性(非强一致性)即可。
可以从下面对强一致性的举例分析来理解所谓的最终一致性。强一致性在早期的金融网络中要求当你付款给对方,并在对方收到钱后,你的账户要相应地同步扣款,否则就会出现不可预知的结果——比如对方收到钱,你的账户却没有扣款(赚到了的感觉);或者对方没收到,而你的钱被扣掉了(被坑了的感觉)。这些都属于系统不能做到实时一致性的体现。今天,绝大多数金融系统是规模庞大的分布式系统,要求强一致性只可能会造成系统进入瓶颈(比如由一个数据库来保证交易的实时一致性,但是这样整个分布式系统的效率会变得低下),因此弱一致性系统应运而生,这也是为什么你在进行转账、股票交易等操作时通常会有一些滞后(几秒或者几分钟或者几天)的交易确认。而对于金融系统来说,对账是最重要的,它就是对规定时间内的所有交易进行确认,以保证每一笔交易的双方的进出是均衡的。
CAP理论还有很多容易被人误解的地方,比如一个分布式系统到底应该拥有哪一个或哪两个属性。抛开理论层面的争执,我们看到今天大规模分布式系统的设计各有千秋。比如谷歌公司的GFS就是满足了一致性与可用性,相对牺牲了可扩展性。
(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)
· END ·
相关文章:
揭秘大数据 | 12、大数据的五大问题 之 大数据管理与大数据分析
书接上文,老夫讲到规划大数据战略、构建大数据的解决方案与体系架构、解决大数据问题及大数据发展历程中通常会依次涉及到大数据存储、大数据管理、大数据分析、数据科学、大数据应用这五大问题。上篇内容主要围绕的是大数据存储,今天主要聊一下大数据管…...
Java操作RabbitMQ
文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP(高级消…...
【MySQL】实战篇—项目需求分析:ER图的绘制与关系模型设计
在软件开发中,数据库是信息系统的核心部分,合理的数据库设计能够显著提高系统的性能和可维护性。 ER图(实体-关系图)是数据库设计的重要工具,它通过图形化的方式描述了数据实体及其相互关系,帮助开发者和设…...
Apache Shiro 统一化实现多端登录(PC端移动端)
Apache Shiro 是一个强大且易用的Java安全框架,提供了身份验证、授权、密码学和会话管理等功能。它被广泛用于保护各种类型的应用程序,包括Web应用、桌面应用、RESTful服务、移动端应用和大型企业级应用。 需求背景 在当今数字化浪潮的推动下ÿ…...
es新增运算符
?? ( 空值合并运算符) ?. (可选链式运算符) ?? (空值合并赋值操作符) // ?? ( 空值合并运算符):这个运算符主要是左侧为null和undefined,直接返回右侧值 let result value ?? 默认值;. ??(空值合并运算符) ✅ 用于…...
数据库三级填空+应用(2)
sysadmin、dbcreator 数据是面向主题的(2)、集成的、非易失的、随时间不断变化的数据集合, 数据字典 【答案】完整性约束 数据模型成分 33【解析】顺序图主要用于描述系统内对象之间的消息发送和接收序列。 34如果把舍弃的元组也保存在结果关…...
贪心算法经典应用:最优答疑调度策略详解与Python实现
目录 引言:从现实场景到算法设计 一、问题背景与数学建模 1.1 现实场景抽象 1.2 时间线分析 二、贪心策略的数学证明与选择依据 2.1 贪心选择性质 2.2 证明过程 三、算法实现与代码解析 3.1 算法步骤分解 3.2 代码亮点解析 四、测试案例与结果验证 4.1 …...
把手搭建vue前后端管理系统-TAB标签通过pinia来进行管理(二十六)
目标:通过pinia的store来进行组件状态的统一管理,这样大家都可以共用到这个组件的状态信息,就可以实现组件的联动 一、添加侧边栏菜单的点击事件: 1、CommonAside.vue里面添加click的事件 <el-menu-itemv-for"item in …...
Python与数据库
目录 一、数据库 1、数据库的概念 2、数据库的表 3、字段详解 二、SQL数据库语句 1、了解SQL命令 2、CREATE命令 3、INSERT命令 三、数据库和SQL命令 四、数据库的查询与修改 1、SELECT命令 2、UPDATE命令 3、DELETE命令 4、DROP TABLE 5、SQL的注意事项 五、处…...
MyBatis中mapper.xml 的sql映射规则
一、SQL 映射文件核心元素 MyBatis 映射文件的顶级元素(按定义顺序): cache:命名空间的缓存配置。cache-ref:引用其他命名空间的缓存。resultMap:自定义结果集映射。sql:可重用的 SQL 片段。i…...
ubuntu22.04安装搜狗输入法保姆教程~
一、添加中文语言支持 1.首先打开设置,找到Language and Region 2.点击Manage Installed Languages 3.点击 Install/Remove Languages... 4.选中Chinese (simplified),点击Apply...
Jenkins 配置python项目和allure
Jenkins新建项目 新建ry-api-auto-test。 添加项目描述,选择gitee令牌。 源码管理,设置仓库地址和凭证。参考我上一篇文章的链接:配置gitee私人令牌和凭证 构建步骤,因为我Jenkins部署在Windows,因此选择batch。…...
keda基于postgresql伸缩dify-api服务
1 概述 dify-api使用postgresql来存储数据,在dify控制台每新建一个聊天机器的聊天框,就会在conversations表里新插入一条记录,并且不断地更新字段updated_at,示例如下: dify# select * from conversations limit 1; …...
蓝桥杯 拼正方形
问题描述 小蓝正在玩拼图游戏。他有: 7385137888721 个 22 的方块10470245 个 11 的方块 他需要从中挑出一些方块来拼出一个正方形。 例如: 用 3 个 22 和 4 个 11 方块可以拼出一个 44 的正方形;用 9 个 22 方块可以拼出一个 66 的正方…...
failed to load steamui.dll”错误:Steam用户的高频崩溃问题解析
当你满心欢喜地双击 Steam 图标,准备进入游戏世界时,屏幕上突然弹出 “failed to load steamui.dll” 的刺眼提示——这是全球数百万 Steam 用户最不愿见到的错误之一。作为 Steam 客户端的核心界面动态链接库文件,steamui.dll 的缺失或损坏会…...
Django之旅:第六节--mysql数据库操作增删改查(二)
前提条件(models.py已经设置好): from django.db import mmodelsclass UserInfo(models.Model):namemodels.CharFIeld(max_length32)passwordmodels.CharFIeld(max_length64)#agemodels.IntegerFIeld()操作数据语法(在views.py文件࿰…...
6. 使用VUE实现前端页面的分级嵌套
1. 说明 在UI设计中,页面中有些部分的占用空间位置是固定不动,有些部分的区域是根据情况进行动态切换的。比如,一个网页的菜单栏和主题内容展示,往往菜单栏区域的导航按钮占用的空间是固定不动的,当用户点击不同按钮时…...
(UI自动化测试web端)第三篇:元素的常用操作方法_浏览器操作
模拟浏览器的常见操作。 1、最大化浏览器窗口 driver.maximize_window()2、浏览器后退、前进、刷新、关闭、退出 # 调用浏览器的后退 driver.back() # 调用浏览器的前进 driver.forward() # 刷新页面 driver.refresh() # 关闭当前窗口 driver.close() # 退出浏览器 driver.q…...
Ubuntu软件包离线下载安装
1、下载软件包tcpd,并在/var/cache/apt/archives目录中查看。 rooteducoder:~# apt-get install -d tcpd Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed:tcpd …...
第十节 MATLAB逻辑运算
MATLAB逻辑运算都是针对元素的操作,运算结果是特殊的逻辑数组;在逻辑分析时,逻辑(真)用1表示,逻辑假用0表示,逻辑运算中所有的非零元素作为1处理。 注意: 使用MATLAB逻辑运算时的语…...
初识哈希表
一、题意 给定一个整数数组 nums 和一个目标值 target,要求你在数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, …...
Ajax与Axios,以及Apifox的入门使用
Ajax与Axios,以及Apifox的入门使用 作者:blue 时间:2025.3.20 文章目录 Ajax与Axios,以及Apifox的入门使用1.Ajax2.Axios3.Apifox的基本使用内容Path 参数定义语法用途 Query 参数定义语法用途 1.Ajax 概念:Asynchr…...
jmm-java内存模型
java内存模型----底层原理 底层原理 从Java代码到最终执行的CPU指令的流程: 最开始,我们编写的Java代码,是*.java文件在编译(javac命令)后,从刚才的*.java文件会变出一个新的Java字节码文件(…...
机器学习——KNN数据均一化
在KNN(K-近邻)算法中,数据均一化(归一化)是预处理的关键步骤,用于消除不同特征量纲差异对距离计算的影响。以下是两种常用的归一化操作及其核心要点: 质押 一 、主要思想 1. 最值归一化&#…...
页面元素内容太长,给元素添加title
一、需求 页面元素内容太长,给元素添加title 二、实现 1、直接使用title属性 <div target"_blank" class"text-overflow" title"叉车司机">叉车司机</div> 2、使用tdesign的Popup 弹出层 <t-popup>触发元素&…...
【Git多分支使用教程】
Git多分支使用教程 Git多分支使用手册目录多分支只拉取一个多分支拉取指定几个步骤 1:克隆第一个分支步骤 2:获取其他分支 常见问题与解决方法1. 错误:origin/分支名 is not a commit2. 分支名称冲突3. --single-branch 限制 总结 Git多分支使…...
【408--复习笔记】数据结构
【408--复习笔记】数据结构 1.绪论数据结构基本概念• 请简述数据结构的定义。• 数据结构中数据、数据元素、数据项、数据对象的区别是什么? 算法相关• 什么是算法?算法的五个重要特性是什么?• 如何理解算法的时间复杂度和空间复杂度&…...
使用 Vite 提升前端开发体验:入门与配置指南
在现代前端开发中,构建工具的选择对开发效率和项目性能有着至关重要的影响。Vite 是一个新兴的前端构建工具,由 Vue.js 的作者尤雨溪开发,旨在通过利用现代浏览器的原生 ES 模块特性,提供更快的开发服务器启动速度和更高效的热更新…...
WPS JS宏编程教程(从基础到进阶)--第二部分:WPS对象模型与核心操作
第二部分:WPS对象模型与核心操作 WPS对象的属性、方法、集合 工作簿对象常用表达方式工作表对象常用表达方式单元格对象常用表达方式 单元格操作实战 单元格复制与重定位单元格偏移与尺寸调整 颜色设置专题 索引颜色与RGB颜色按条件动态设置单元格颜色 第二部分&…...
瑞数信息《BOTS自动化威胁报告》正式发布
在数字化时代,BOTS自动化攻击如同一场无声的风暴,正以前所未有的态势席卷全球网络空间。为了让各行业更好地应对自动化威胁挑战,瑞数信息作为BOTS自动化攻击防护领域的专业厂商,多年来持续输出BOTS自动化威胁报告,为各…...
【NUUO 摄像头】(弱口令登录漏洞)
漏洞简介:NUUO 是NUUO公司的一款小型网络硬盘录像机设备。 NUUO NVRMini2 3.0.8及之前版本中存在后门调试文件。远程攻击者可通过向后门文件handle_site_config.php发送特定的请求利用该漏洞执行任意命令。 1.Fofa搜索语句: 在Fofa网站,搜索&…...
Android系统的安全问题 - Linux的能力模型(Capability)和 SELinux 的区别
Linux 的能力模型(Capabilities)和 SELinux 是两种不同的安全机制,虽然它们都用于增强 Linux 系统的安全性,但它们的实现方式和目标有所不同。 1. Linux Capabilities(能力模型) 作用:传统的 …...
Rust安装并配置配置vscode编译器
一. 下载rustup-init.exe rust下载网址:Getting started - Rust Programming Language 根据系统,选择适合的exe文件 我选择的的是右边64bit的 打开下载的文件 输入1,回车 二. Visual C 安装 自动下载安装vs 等待安装完毕 三. Rust 安装…...
Spring Boot响应压缩配置与优化
一、核心工作机制 1.1 自动协商触发条件 Spring Boot的响应压缩功能基于智能协商机制,需同时满足以下条件方可触发: 客户端支持:请求头包含Accept-Encoding: gzip/deflate数据量阈值:响应体大小超过预设值(默认2KB&…...
el-select开启filterable模式,限制输入框输入类型
遇到el-select开启filterable模式查询,下拉框内容是文字与数字组合版,导致校验不准,且没有属性能直接限制focus输入的内容,这时候可以用自定义属性来解决 实例:(以只能输入数字为例) <el-for…...
创建login.api.js步骤和方法
依次创建 login.api.js、home.api.js...... login.api.js、home.api.js 差不多 导入到 main.js main.js 项目中使用...
在线运行vscode
安装 https://github.com/coder/code-server?utm_sourcesyndication&pubDate20250317 运行前预览脚本 curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run运行脚本 curl -fsSL https://code-server.dev/install.sh | sh其他 可以通过后台服务运行&am…...
【Nginx】可以做哪些优化?
一、配置文件优化 1.1 性能优化 开启网页压缩 gzip on;设置网页缓存时间expires 缓存时间;设置连接保持超时keepalive_timeout 服务端超时时间 客户端超时时间;设置连接保持最大请求数keepalive_requests设置工作进程数 worker_processes 与服务器CPU数量…...
springboot在feign和线程池中使用TraceId日志链路追踪(最终版)-2
文章目录 简述问题feign调用时给head加入traceIdFeignConfig配置FeignConfig 局部生效feign拦截器和配置合并为一个文件(最终版)feign异步调用拦截器配置[不常用] 使用TTL自定义线程池为什么需要TransmittableThreadLocal? 总结参考和拓展阅读…...
datawhale组队学习-大语言模型-task5:主流模型架构及新型架构
目录 5.3 主流架构 5.3.1 编码器-解码器架构 5.3.2 因果解码器架构 5.3.3 前缀解码器架构 5.4 长上下文模型 5.4.1 扩展位置编码 5.4.2 调整上下文窗口 5.4.3 长文本数据 5.5 新型模型架构 5.5.1 参数化状态空间模型 5.5.2 状态空间模型变种 5.3 主流架构 在预训…...
《Matplotlib三维可视化工业实践——从分子模拟到流体力学》
目录 编辑 一、工业三维可视化挑战 1.1 典型工业场景需求 1.2 技术痛点分析 二、Matplotlib三维可视化基础 2.1 三维坐标体系构建 2.2 核心三维绘图API 三、分子模拟可视化实战 3.1 晶体结构渲染 3.2 分子轨迹动态演示 四、流体力学场数据优化渲染 4.1 矢量场高效…...
【neo4j数据导出并在其他电脑导入】
停止服务 neo4j stop 导出 neo4j-admin database dump neo4j --to-path"C:\Users\12901\Downloads\test folder" 导入 将 .dump 文件放在一个目录中 mkdir /root/dump-directory mv /root/neo4j.dump /root/dump-directory/ 使用包含 .dump 文件的目录路径作为 …...
多智能体融合(Multi-Agent Fusion)
多智能体融合(Multi-Agent Fusion)是指在多智能体系统(MAS, Multi-Agent System)中,多个智能体(Agent)通过协作、竞争或共享信息,实现全局最优的智能决策和任务执行。该方法广泛应用…...
状态模式(State Pattern)
状态模式(State Pattern) 如果任务的执行过程是有多个不同状态的(比如初始化、运行中、完成等),你可以使用状态模式。每个状态可以有不同的行为,使得任务的状态管理更加清晰和可维护。 示例: …...
Linux网站搭建(新手必看)
1.宝塔Linux面板的功能 宝塔面板是一款服务器管理软件,可以帮助用户建立网站,一键配置服务器环境,使得用户通过web界面就可以轻松的管理安装所用的服务器软件。 2. 宝塔Linux面板的安装 宝塔官网地址:宝塔面板 - 简单好用的Linu…...
JavaEE进阶---Mybatis(预编译SQL即时SQL动态SQL标签池化技术说明)
文章目录 1.经典面试题(#{}和${}的区别)1.1关于#1.2关于$1.3情况下需要使用$ 2.数据库连接池2.1池化技术图解 3.动态SQL3.1if标签的使用3.2where标签的使用3.3set标签的使用 1.经典面试题(#{}和${}的区别) 1.1关于# 预编译SQL&a…...
Object.defineProperty()Proxy详解(Vue23数据劫持实现)
底层原理👇🏿 总结一下,结构应该包括: 1. 方法的基本作用和参数。 2. 数据描述符和存取描述符的区别。 3. 属性定义的内部处理流程。 4. 在Vue中的应用实例。 5. 常见错误和正确实践。 每个部分都要结合搜索结果的信息&…...
网页的性能优化
面试中如何回答"前端性能优化"问题 在面试中回答性能优化问题时,建议采用结构化表达方式,展示你的系统化思维和实战经验。以下是一个推荐的回答框架: 1. 开场概述 “前端性能优化是一个系统工程,我通常会从加载性能、…...
Vue 3中的Teleport:超越组件边界的渲染
Vue 3引入了许多新特性,其中之一便是Teleport。它为开发者提供了一种强有力的方式来控制组件的渲染位置,使得我们可以将组件的内容“传送”到DOM树的任何地方,而不仅仅局限于其父级组件的边界内。这在创建模态框、通知系统或任何需要脱离当前…...
JVM垃圾回收笔记01-垃圾回收算法
文章目录 前言1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法查看根对象哪些对象可以作为 GC Root ?对象可以被回收,就代表一定会被回收吗? 1.3 引用类型1.强引用(StrongReference)2.软引用(SoftReference…...