分布式存储和分布式计算两个哪个更适合作为工作深入方向发展?

news2024/11/19 16:22:42

有朋友问,分布式存储比如hdfs,ceph,minio,tidb,glusterfs;分布式计算比如Hadoop,spark,flink;它们在实际工作中咋样?具体开发工作是啥?哪个更有发展前景?

其实,计算与存储是相辅相承的关系。

千万不要听那帮二杆子们在各种PR稿中说的:存储与计算分离。

这个概念最早是EMC提出的(今天叫Dell EMC了,2015年的这笔760亿美金的收购是科技发展史上最大的收购 --- 折合RMB~5000亿)。事实上,存储从来与计算都是分离的 --- 以冯诺依曼架构为例,CPU与(持久化)存储的距离是非常遥远的,如下图所示:

从逻辑(与实际的硬件配置匹配)上,自上而下,存储可以分为7层:

  • CPU
  • DRAM
  • Persistent Memory
  • Performance SSD or NVMe-SSD
  • SSD (Capacity SSD)
  • HDD
  • Network Storage (所有的NAS,还是任何其它类型的分布式存储全在这个category里面)

当然,很多人不理解CPU与DRAM为什么也会在存储架构中,呵呵。

有啥难以理解的,现代的CPU,尤其是企业级PC服务器,大多还有2-3级缓存呢,

学过汇编的同学一定知道,你怎么调用的各种寄存器(registers),所有的数据,最终不还是要流经CPU的,也会先流入Layer 1-to-3 Cache...

同样的道理,为了让系统的整体吞吐率更高,更加高并发,更快,延迟更低,用上图这种”多级存储加速“ (Multiple Layer Storage Acceleration) 来让数据更快的从下层的存储流入、流经CPU是任何高性能系统所要核心关注的问题。

记住,从CPU自上而下到网络存储层,是至少1,000,000(壹佰万!)倍的性能差异。

为什么我们常说很多大数据系统根本不是高性能系统,早就应该在各个行业中被淘汰了?首推Hadoop,甚至Spark都不是什么真正的高性能系统,还有很多所谓的也打着高性能标签的系统,例如那些性能平平的列数据库们 --- 仔细想想,对数字敏感一点,一个简单的原子级的操作,如果是毫秒级,它已经让在纳秒级工作的CPU白白空转了1,000,000次了!

因此,市场那些导出宣称毫秒级操作的系统,在实际的商业应用环境中,一定很慢很慢!因为,那些真实的需求、操作,包括一些批处理,动辄都需要数以万次甚至百万次的原子级操作组合而成,简单的数学:毫秒级 100万次 = 1000-100万秒!1毫秒100万次= 1000秒= 0.3小时,而1000毫秒*100万次 = 100万秒= 12天 = ~半个月。

大家知道为何很多银行的系统动辄需要T+1, T+2甚至T+7了吧?就是因为底层的那些号称”毫秒级“的数仓太慢!

千万不要低估”指数级“性能提升的意义!

真正高性能的系统,一定很少,必定是在微秒级工作的!那么上面的T+1会变成实时化,T+7会变成近实时(秒级)。

搞过高性能存储系统的专业人士会很清楚的一点:存储靠近计算(Storage Close to Compute)才是根本 --- 如何靠近计算呢?上面已经回答了:多级存储加速。

现在我来回答下工作的问题:

真正到了底层,无论是存储还是计算都有很多细节与挑战,例如

  • 计算:对于数据结构、算法时延、算法复杂度、分布式系统架构、计算机体系架构要有清晰、明确的认知 --- 并且写高并发计算程序的复杂度也很高。
  • 存储:对于文件系统或者存储硬件的特性要有深刻的理解,plus上面计算的所有诉求也一样要了解。

简单而言,搞存储的人一定少于搞计算的,但是到了极致,都已经是万中无一的。毕竟绝大多数人根本不会触碰到底层的东西,更别说能把事情的来龙去脉都梳理的明明白白的了。

另,需要澄清的一点 -- 现在大家都喜欢把分布式导出修饰任何系统或名词。但是准确的说,这就跟说某项目开源一样,很多开源都是伪开源,根本没有开源全部代码,到了底层都是一堆.so(动态链接库),然而99.9%的人不求甚解,跟着瞎起哄。开源很多时候与其说是什么GP家国情怀,不如说是Marketing/PR甚至是彻头彻尾的骗局。

分布式系统如果不是高性能的,根本没有任何意义。如何高性能分布式呢?就是不要用40台或者400台机器,平均每台机器只跑1-2个线程来吹NB说他这个分布式特别厉害 --- 你有种让每台机器可以跑满40线程来?400*40 = 16000线程,这个是底层硬件的并发计算能力,然而,现在的这些数仓或者大数据框架们,也就能用到不到1000个线程,这是对计算资源的90%+的浪费!可耻!

研究高密度并发(High Density Parallel Computing)是非常有价值的一件事情 --- 能充分释放底层的高并发的算力,无论是在CPU还是GPU,还是什么TPU/NPU、XPU之上,都可以。

先精钻,再泛化,不失为一条可行之路。

最后,不能免俗的,同时也向大家分享下:嬴图(Ultipa)的微秒级、高密度并发图计算与存储架构的一些核心点:

Hope ya-all will enjoy this.

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

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

相关文章

leetCode.96. 不同的二叉搜索树

leetCode.96. 不同的二叉搜索树 题目思路 代码 // 方法一:直接用卡特兰数就行 // 方法二:递归方法 class Solution { public:int numTrees(int n) {// 这里把 i当成整个结点,j当成左子树最左侧结点,并一次当根节点尝试// f[ i ] f[ j - 1…

《昇思25天学习打卡营第19天 | 昇思MindSporeDiffusion扩散模型》

19天 本节学了Diffusion扩散模型相关知识,并且通过实例完成扩散模型。Diffusion是从纯噪声开始通过一个神经网络学习逐步去噪,最终得到一个实际图像。 1.Diffusion对于图像的处理包括以下两个过程: 1.1我们选择的固定(或预定义&…

Is ChatGPT a Good Personality Recognizer? A Preliminary Study?

ChatGPT是一个很好的人格识别者吗?初步调研 摘要1 介绍2 背景和相关工作3 实验3.1 数据集3.2 提示策略3.3 基线3.4 评估指标3.5 实现细节3.6 Overall Performance (RQ1)3.7 ChatGPT在人格识别上的公平性 (RQ2)3.8 ChatGPT对下游任务的人格识别能力(RQ3&a…

python-求s=a+aa+aaa+aaaa+aa...a的值(赛氪OJ)

[题目描述] 求 saaaaaaaaaaaa...a 的值,其中 a 是一个一位的整数。 例如 :2222222222222222(此时共有 5 个数相加)。输入格式: 整数 a 和 n ( n 个数相加)。输出格式: s 的值。样例输入 2 2样例输出 24数据…

操作系统精选题(四)(论述题)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀操作系统 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 一、银行家算法的一道例题 二、页…

Stateflow快速入门系列(七): 使用时序逻辑调度图动作

要定义 Stateflow 图在仿真时间的行为,请在图的状态和转移动作中包含时序逻辑运算符。时序逻辑运算符是内置函数,告知状态保持激活的时间长度或布尔条件保持为 true 的时间长度。使用时序逻辑,您可以控制以下各项的时序: 各状态之…

守护矿山安全生产:AI视频分析技术在煤矿领域的应用

随着人工智能(AI)技术的快速发展,其在煤矿行业的应用也日益广泛。AI视频智能分析技术作为其中的重要分支,为煤矿的安全生产、过程监测、效率提升和监管决策等提供了有力支持。 一、煤矿AI视频智能分析技术的概述 视频智慧煤矿AI…

[数据库]mysql用户管理权限管理

目录 ​编辑用户管理​编辑 权限管理 ​编辑 ​编辑 ​编辑案例​编辑 细节 ​编辑 用户管理 我们用创建的用户在登录之后可以看到他和root看到的数据库是完全不一样的 权限管理 案例 登录这个账户可以看到还看不到teatdb这个数据库, 因为还没有授权 分配权限 过来刷新…

OpenCV 张正友标定法(二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在之前的博客OpenCV 张氏标定法中,我们没有考虑镜头畸变等因素,因此计算出的内参与外参均是理想情况下的数值,而如果我们考虑到镜头的畸变: 我们就需要考虑使用最小二乘法最小化像素坐标的重投影误差(上述所求…

007-GeoGebra基础篇-构建等边三角形

今天继续来一篇尺规作图,可以跟着操作一波,刚开始我写的比较细一点,每步都有截图,后续内容逐渐复杂后我就只放置算式咯。 目录 一、先看看一下最终效果二、本次涉及的内容三、开始尺规画图1. 绘制定点A和B2. 绘制线段AB3. 以点A为…

基于STM32的智能电池管理系统

目录 引言环境准备智能电池管理系统基础代码实现:实现智能电池管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:电池管理与优化问题解决方案与优化收尾与总结 1. 引言 智能电池管理系统(Ba…

C语言--vs使用调试技巧

1.什么是bug? 1.产品说明书中规定要做的事情,而软件没有实现。 2.产品说明书中规定不要做的事情,而软件确实现了。 3.产品说明书中没有提到过的事情,而软件确实现了。 4.产品说明书中没有提到但是必须要做的事情,软件确没有实…

预付式消费,今起实行!

近年来,随着我国经济社会快速发展,消费新业态、新模式不断涌现,消费者权益保护也面临新情况、新问题。 大数据杀熟、自动续费难取消、网络直播带货“以假充真”“以次充好”、预付式消费商家跑路……数据显示,2023年,…

Vue 常见面试题及答案

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

鸿蒙:页面路由使用

页面路由使用步骤: 1.导入Router模块 2.使用路由功能,以pushUrl模式为例 3.接收参数、返回 4.此时的路由是不能使用的,需要到main_pages.json中进行注册

vscode的一些使用问题

vscode使用技巧 1、快捷键(1)打开命令面板(2)注释(3)删除行(4)上下移动光标(5)光标回退(6)复制行(7)插入空白行…

opencv编译报错OpenCV does not recognize MSVC_VERSION “1940“

具体如下: CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:182 (message):OpenCV does not recognize MSVC_VERSION "1940". Cannot set OpenCV_RUNTIME Call Stack (most recent call first):CMakeLists.txt:174 (include) 打开源码\opencv\sources\cmak…

【正点原子K210连载】第十四章 按键输入实验 摘自【正点原子】DNK210使用指南-CanMV版指南

1)实验平台:正点原子ATK-DNK210开发板 2)平台购买地址https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第十四章 按键输入实…

FPGA - 图像灰度化

一,灰度图像概念 灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机…

50+k8s常用命令,助你成为k8s大牛!

Kubernetes是一个强大的容器编排平台,不管是运维、开发还是测试或多或少都会接触到,熟练的掌握k8s可大大提高工作效率和强化自身技能。 集群管理 1. 查看集群节点状态: kubectl get nodes2. 查看集群资源使用情况: kubectl top nodes3. 查看集群信息…