Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域(1)-程序员宅基地

技术标签: 2024年程序员学习  云原生  数据分析  数据挖掘  

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

2.jpg

Vineyard 从以下三个角度来应对上述几个问题:

  1. 为了使端到端工作流中任务之间的数据共享更加高效,Vineyard 通过内存映射的方式,支持系统间零拷贝的数据共享,省去了额外的 IO 开销。

  2. 为了简化新计算引擎接入现有系统所需要的适配和开发,Vineyard 对常见的数据类型,提供了开箱即用的抽象,例如 Tensor、DataFrame、Graph,等等,从而不同计算引擎之间共享中间结果不再需要额外的序列化和反序列。同时,Vineyard 将 IO、数据迁移、快照等可复用的组件以插件的形式实现,使其能够很灵活地按需注册到计算引擎中去,降低与计算引擎本身无关的开发成本。

  3. Vineyard 提供一系列 operators,来实现更高效灵活的数据共享。例如 Pipeline operator 实现了跨任务的流水线并行,使得后续任务可以随着前序任务输出的产生,同时进行计算,提高了端到端整体效率。

  4. Vineyard 与 Kubernetes 集成,通过 Scheduler Plugin,让任务的调度能够感知所需要的数据的局部性,在 Kubernetes 让单个任务的 Pod 尽可能地调度到与 Pod 所需的输入数据对其的机器上,来减小数据迁移需要的网络开销,提升端到端性能。

在初步的对比实验中,相比于使用 HDFS 来共享中间数据,对于评测任务,Vineyard 能够大幅降低用于交换中间结果引入的额外开销,对于整个工作流的端到端时间有 1.34 倍的提升。

核心功能

=========================================================================

接下来从 Vineyard 核心的设计与实现,以及 Vineyard 如何助力云原生环境中大数据分析任务两个方面来介绍 Vineyard 的核心功能。

1. 分布式内存数据共享


Vineyard 将内存中的数据表示为 Object。Object 可以是 Local 的,也可以是 Global 的,以分布式执行引擎 Mars 和 Dask 为例,一个 DataFrame 往往被拆分成很多个 Chunk 以利用多台机器的计算能力,每台机器上有多个 Chunk,这些 Chunk 是 Vineyard 中的 LocalObject,这些 Chunk 一起构成了一个全局的视图,即 GlobalDataFrame。这个 GlobalDataFrame 能够直接共享给其他计算引擎,如 GraphScope,作为图数据的输入。有了这些数据类型的抽象,Vineyard 上的不同计算引擎之间就可以无缝地共享中间结果,将一个任务的输出直接用作下一个任务的输出。

更具体地,Vineyard 中又是如果表达一个特定类型的 Object,使之能够很容易地适配到不同的计算引擎中去呢?这得益于 Vineyard 在 Object 的表示上提供的灵活性。Vineyard 中,一个 Object 包括两个部分,Metadata,以及一组 Blob。Blob 中存储着实际的数据,而 Metadata 则用于解释这些 Blob 的语义。例如对于 Tensor,Blob 是一段连续内存,存储着 Tensor 中所有的元素,而 Metadata 中记录了 Tensor 的类型、形状、以及行主序还是列主序等属性。在 Python 中,这个 Object 可以被解释为一个 Numpy 的 NDArray,而在 C++ 中,这个 Object 可以被解释为一个 xtensor 中的 tensor。这两种不同编程语言的 SDK 中,共享这个 Tensor 不会带来额外的 IO、拷贝、序列化/反序列化、以及类型转换的开销。

同时,Vineyard 中的 Metadata 是可嵌套的,这使得我们通过很容易地将任何复杂的数据类型描述为 Vineyard 中的 Object,不会限制计算引擎的表达能力。以 GlobalDataFrame 为例,见下图中 Metadata 的结构。

3.png

2. 云原生环境中数据与任务的协同调度


对于一个真实部署的大数据分析流水线,仅仅有任务之间的数据共享是远远不够的。在云环境中,一个端到端流水线中包含的多个子任务在被 Kubernetes 调度时仅仅考虑了需要的资源约束,连续的两个任务的 co-locate 无法保证,在两个任务之间共享中间结果时仍然有数据迁移引入的网络开销,如下图,在运行 Task B 时,因为两个任务的 Pod 没有对齐,数据分片 A3、A4 需要被迁移到 Pod 所在的 Vineyard 实例上。

4.png

对此,Vineyard 通过 CRD 将集群中的数据(Vineyard Objects)表示为可观测的资源,并基于 Kubernetes 的 Scheduler Framework 设计和实现了一个考虑数据局部性的调度器插件。当前一个任务 Task A 完成后,从结果对象的 Metadata 中,调度器插件可以知道所有分片的位置,在启动下一个任务时,调度器给数据所在的节点(图中的 Node 1、Node 2)更高的优先级,使任务 Task B 也尽可能地被调度到对应的节点上,从而省去了数据迁移引入的额外开销,来改善端到端的性能。

快速上手

=========================================================================

Vineyard 集成了 Helm 以方便用户安装和部署:

helm repo add vineyard https://vineyard.oss-ap-southeast-1.aliyuncs.com/charts/

helm install vineyard vineyard/vineyard

安装之后,系统中会部署一个 Vineyard DaemonSet,并暴露一个 UNIX domain socket 用于与应用的任务 Pod 之间的共享内存和 IPC 通信。

此外,还可以参考 Vineyard 的演示视频:

https://www.youtube.com/watch?v=vPbF1l5nwwQ&list=PLj6h78yzYM2NoiNaLVZxr-ERc1ifKP7n6&t=585

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

.(img-DZDNicdW-1713156981545)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84166896/article/details/137776740

智能推荐

【新手科研指南5】深度学习代码怎么读-小白阶段性思路(以手写数字识别应用为例)_深度学习程序怎么读-程序员宅基地

文章浏览阅读6.2k次,点赞6次,收藏26次。我是一个深度学习代码小白,请你用中文写上注释,能让我能轻松理解下面这段代码。注意包含所有函数、调用和参数的注释。以同样的python代码块样式返回你写的代码给我。代码看累了,就看《动手学深度学习》文档:基于PyTorch框架,从底层函数实现基础功能,再到框架的高级功能。努力上路的小白一枚,麻烦路过的大佬指导一二,同时希望能和大家交流学习~争取更新学习这个文档的专栏,记录学习过程。量身定做了一套话术hhh,亲身测试还不错。这个感觉更浅一点儿,之后复习看吧。20天吃掉那只Pytorch。_深度学习程序怎么读

Java学习路线图,看这一篇就够了!-程序员宅基地

文章浏览阅读2.7w次,点赞126次,收藏1.2k次。耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。_java学习路线

PCL_Tutorial2-1.7-点云保存PNG_pcl::io:savepng-程序员宅基地

文章浏览阅读4.4k次。1.7-savingPNG介绍代码详情函数详解savePNGFile()源码savePNGFile()源码提示savePNGFile()推荐用法处理结果代码链接介绍PCL提供了将点云的值保存到PNG图像文件的可能性。这只能用有有序的云来完成,因为结果图像的行和列将与云中的行和列完全对应。例如,如果您从类似Kinect或Xtion的传感器中获取了点云,则可以使用它来检索与该云匹配的640x480 RGB图像。代码详情#include <pcl / io / pcd_io.h>#incl_pcl::io:savepng

知乎问答:程序员在咖啡店编程,喝什么咖啡容易吸引妹纸?-程序员宅基地

文章浏览阅读936次。吸引妹子的关键点不在于喝什么咖啡,主要在于竖立哪种男性人设。能把人设在几分钟内快速固定下来,也就不愁吸引对口的妹子了。我有几个备选方案,仅供参考。1. 运动型男生左手单手俯卧撑,右手在键盘上敲代码。你雄壮的腰腹肌肉群活灵活现,简直就是移动的春药。2.幽默男生花 20 块找一个托(最好是老同学 or 同事)坐你对面。每当你侃侃而谈,他便满面涨红、放声大笑、不能自已。他笑的越弱_咖啡厅写代码

【笔试面试】腾讯WXG 面委会面复盘总结 --一次深刻的教训_腾讯面委会面试是什么-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏5次。今天 (应该是昨天了,昨晚太晚了没发出去)下午参加了腾讯WXG的面委会面试。前面在牛客上搜索了面委会相关的面经普遍反映面委会较难,因为都是微信的核心大佬,问的问题也会比较深。昨晚还蛮紧张的,晚上都没睡好。面试使用的是腾讯会议,时间到了面试官准时进入会议。照例是简单的自我介绍,然后是几个常见的基础问题:例如数据库索引,什么时候索引会失效、设计模式等。这部分比较普通,问的也不是很多,不再赘述。现在回想下,大部分还是简历上写的技能点。接下来面试官让打开项目的代码,对着代码讲解思路。我笔记本上没有这部分代码,所_腾讯面委会面试是什么

AI绘画自动生成器:艺术创作的新浪潮-程序员宅基地

文章浏览阅读382次,点赞3次,收藏4次。AI绘画自动生成器是一种利用人工智能技术,特别是深度学习算法,来自动创建视觉艺术作品的软件工具。这些工具通常基于神经网络模型,如生成对抗网络(GANs),通过学习大量的图像数据来生成新的图像。AI绘画自动生成器作为艺术与科技结合的产物,正在开启艺术创作的新篇章。它们不仅为艺术家和设计师提供了新的工具,也为普通用户提供了探索艺术的机会。随着技术的不断进步,我们可以预见,AI绘画自动生成器将在未来的创意产业中发挥越来越重要的作用。

随便推点

Flutter ListView ListView.build ListView.separated_flutter listview.separated和listview.builder-程序员宅基地

文章浏览阅读1.7k次。理解为ListView 的三种形式吧ListView 默认构造但是这种方式创建的列表存在一个问题:对于那些长列表或者需要较昂贵渲染开销的子组件,即使还没有出现在屏幕中但仍然会被ListView所创建,这将是一项较大的开销,使用不当可能引起性能问题甚至卡顿直接返回的是每一行的Widget,相当于ios的row。行高按Widget(cell)高设置ListView.build 就和io..._flutter listview.separated和listview.builder

2021 最新前端面试题及答案-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏14次。废话不多说直接上干货1.js运行机制JavaScript单线程,任务需要排队执行同步任务进入主线程排队,异步任务进入事件队列排队等待被推入主线程执行定时器的延迟时间为0并不是立刻执行,只是代表相比于其他定时器更早的被执行以宏任务和微任务进一步理解js执行机制整段代码作为宏任务开始执行,执行过程中宏任务和微任务进入相应的队列中整段代码执行结束,看微任务队列中是否有任务等待执行,如果有则执行所有的微任务,直到微任务队列中的任务执行完毕,如果没有则继续执行新的宏任务执行新的宏任务,凡是在..._前端面试

linux基本概述-程序员宅基地

文章浏览阅读1k次。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。_linux

JavaScript学习手册十三:HTML DOM——文档元素的操作(一)_javascript学习手册十三:html dom——文档元素的操作(一)-程序员宅基地

文章浏览阅读7.9k次,点赞26次,收藏66次。HTML DOM——文档元素的操作1、通过id获取文档元素任务描述相关知识什么是DOM文档元素节点树通过id获取文档元素代码文件2、通过类名获取文档元素任务描述相关知识通过类名获取文档元素代码文件3、通过标签名获取文档元素任务描述相关知识通过标签名获取文档元素获取标签内部的子元素代码文件4、html5中获取元素的方法一任务描述相关知识css选择器querySelector的用法代码文件5、html5中获取元素的方法二任务描述相关知识querySelectorAll的用法代码文件6、节点树上的操作任务描述相关_javascript学习手册十三:html dom——文档元素的操作(一)

《LeetCode刷题》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量-程序员宅基地

文章浏览阅读132次。《LeetCode学习》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量

php 公众号消息提醒,如何开启公众号消息提醒功能-程序员宅基地

文章浏览阅读426次。请注意,本文将要给大家分享的并不是开启公众号的安全操作风险提醒,而是当公众号粉丝给公众号发消息的时候,公众号的管理员和运营者如何能在手机上立即收到消息通知,以及在手机上回复粉丝消息。第一步:授权1、在微信中点击右上角+,然后选择“添加朋友”,然后选择“公众号”,然后输入“微小助”并关注该公众号。2、进入微小助公众号,然后点击底部菜单【新增授权】,如下图所示:3、然后会打开一个温馨提示页面。请一定要..._php微信公众号服务提示

推荐文章

热门文章

相关标签