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

智能推荐

适合入门的8个趣味机器学习项目-程序员宅基地

文章浏览阅读86次。首发地址:https://yq.aliyun.com/articles/221708谈到机器学习,相信很多除学者都是通过斯坦福大学吴恩达老师的公开课《Machine Learning》开始具体的接触机器学习这个领域,但是学完之后又不知道自己的掌握情况,缺少一些实际的项目操作。对于机器学习的相关竞赛挑战,有些项目的门槛有些高,参加后难以具体的实现,因此造..._scrath五子棋下载

oracle 12c avg,Oracle 12c新特性系列专题-安徽Oracle授权认证中心-程序员宅基地

文章浏览阅读83次。原标题:Oracle 12c新特性系列专题-安徽Oracle授权认证中心 随着Oracle database 12c的普及,数据库管理员 (DBA) 的角色也随之发生了转变。 Oracle 12c数据库对 DBA 而言是下一代数据管理。它让 DBA 可以摆脱单调的日常管理任务,能够专注于如何从数据中获取更多价值。未来我们会推出基于Oracle12c的技术文章,帮助DBA尽快掌握新一代数据库的新特性..._ilm add policy row store compress advanced row after

第七周项目三(负数把正数赶出队列)-程序员宅基地

文章浏览阅读150次。问题及代码:*Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:负数把正数赶出队列.cpp *作者:张冰 *完成日期;2016年10月09日 *版本号;v1.0 * *问题描述: 设从键盘输入一整数序列a1,a2,…an,试编程实现: 当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai

Linux命名空间学习教程(二) IPC-程序员宅基地

文章浏览阅读150次。本文讲的是Linux命名空间学习教程(二) IPC,【编者的话】Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。而 LXC所实现的隔离性主要是来自内核的命名空间, 其中pid、net、ipc、mnt、uts 等命名空间将容器的进程、网络、消息、文件系统和hostname 隔离开。本文是Li..._主机的 ipc 命名空间

adb强制安装apk_adb绕过安装程序强制安装app-程序员宅基地

文章浏览阅读2w次,点赞5次,收藏7次。在设备上强制安装apk。在app已有的情况下使用-r参数在app版本低于现有版本使用-d参数命令adb install -r -d xxx.apk_adb绕过安装程序强制安装app

随便推点

STM32F407 越界问题定位_stm32flash地址越界怎么解决-程序员宅基地

文章浏览阅读290次。如果是越界进入硬件错误中断,MSP 或者 PSP 保存错误地址,跳转前会保存上一次执行的地址,lr 寄存器会保存子函数的地址,所以如果在 HardFault_CallBack 中直接调用 C 语言函数接口会间接修改了 lr,为了解决这个问题,直接绕过 lr 的 C 语言代码,用汇编语言提取 lr 寄存器再决定后面的操作。由于 STM32 加入了 FreeRTOS 操作系统,可能导致无法准确定位,仅供参考(日常编程需要考虑程序的健壮性,特别是对数组的访问,非常容易出现越界的情况)。_stm32flash地址越界怎么解决

利用SQL注入上传木马拿webshell-程序员宅基地

文章浏览阅读1.8k次。学到了一种操作,说实话,我从来没想过还能这样正常情况下,为了管理方便,许多管理员都会开放MySQL数据库的secure_file_priv,这时就可以导入或者导出数据当我如图输入时,就会在D盘创建一个名为123456.php,内容为<?php phpinfo();?>的文件我们可以利用这一点运用到SQL注入中,从拿下数据库到拿下目标的服务器比如我们在使用联合查询注入,正常是这样的语句http://xxx?id=-1 union select 1,'你想知道的字段的内容或查询语句',

Html CSS的三种链接方式_html链接css代码-程序员宅基地

文章浏览阅读2.9w次,点赞12次,收藏63次。感谢原文:https://blog.csdn.net/abc5382334/article/details/24260817感谢原文:https://blog.csdn.net/jiaqingge/article/details/52564348Html CSS的三种链接方式css文本的链接方式有三种:分别是内联定义、链入内部css、和链入外部css1.代码为:<html>..._html链接css代码

玩游戏哪款蓝牙耳机好?2021十大高音质游戏蓝牙耳机排名_适合游戏与运动的高音质蓝牙耳机-程序员宅基地

文章浏览阅读625次。近几年,蓝牙耳机市场发展迅速,越来越多的消费者希望抛弃线缆,更自由地听音乐,对于运动人士来说,蓝牙耳机的便携性显得尤为重要。但目前市面上的大多数蓝牙耳机实际上都是“有线”的,运动过程中产生的听诊器效应会严重影响听歌的感受。而在“真无线”耳机领域,除了苹果的AirPods外,可供选择的产品并不多,而AirPods又不是为运动场景打造的,防水能力非常差。那么对于喜欢运动又想要“自由”的朋友来说,有没有一款产品能够满足他们的需求呢?下面这十款小编专门为大家搜罗的蓝牙耳机或许就能找到适合的!网红击音F1_适合游戏与运动的高音质蓝牙耳机

iOS 17 测试版中 SwiftUI 视图首次显示时状态的改变导致动画“副作用”的解决方法-程序员宅基地

文章浏览阅读1k次,点赞6次,收藏7次。在本篇博文中,我们在 iOS 17 beta 4(SwiftUI 5.0)测试版中发现了 SwiftUI 视图首次显示时状态的改变会导致动画“副作用”的问题,并提出多种解决方案。

Flutter 自定义 轮播图的实现_flutter pageview轮播图 site:csdn.net-程序员宅基地

文章浏览阅读1.9k次。  在 上篇文章–Flutter 实现支持上拉加载和下拉刷新的 ListView 中,我们最终实现的效果是在 listView 上面留下了一段空白,本意是用来加载轮播图的,于是今天就开发了一下,希望能给各位灵感。一 、效果如下说一下大体思路   其实图片展示是用的 PageView ,然后,下面的指示器 是用的 TabPageSelector ,当然整体是用 Stack 包裹起来的。1、..._flutter pageview轮播图 site:csdn.net

推荐文章

热门文章

相关标签