日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域

發(fā)布時(shí)間:2025/3/20 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 |?Vineyard 團(tuán)隊(duì)
來源 | 阿里巴巴云原生公眾號
?
Vineyard 是一個(gè)專為云原生環(huán)境下大數(shù)據(jù)分析場景中端到端工作流提供內(nèi)存數(shù)據(jù)共享的分布式引擎,我們很高興宣布 Vineyard 在 2021 年 4 月 27 日被云原生基金會(huì)(CNCF)TOC 接受為沙箱(Sandbox)項(xiàng)目。
?
Vineyard 項(xiàng)目開源地址:
https://github.com/alibaba/v6d

項(xiàng)目介紹

現(xiàn)有的大數(shù)據(jù)分析場景中,對于端到端任務(wù),不同的子任務(wù)之間通常使用例如 HDFS、S3、OSS 這樣的分布式文件系統(tǒng)或?qū)ο蟠鎯?chǔ)系統(tǒng),來共享任務(wù)之間的中間數(shù)據(jù),這種方式在運(yùn)行效率和研發(fā)效率上存在諸多問題,以下圖所示的一個(gè)風(fēng)控作業(yè)工作流為例:
?

  • 工作流中不同任務(wù)之間為了共享中間數(shù)據(jù),前一個(gè)任務(wù)將結(jié)果寫入文件系統(tǒng),完成之后,后一個(gè)再將文件讀出作為輸入,這個(gè)過程帶來了額外的序列化及反序列化、內(nèi)存拷貝、以及網(wǎng)絡(luò)、IO 的開銷,我們從歷史任務(wù)中觀察到有超過 60% 的任務(wù)為此花費(fèi)了 40% 以上的執(zhí)行時(shí)間。
  • 對于生產(chǎn)環(huán)境,為了高效地解決某一個(gè)特定范式的問題往往會(huì)引入一個(gè)新系統(tǒng)(例如分布式圖計(jì)算),但這樣的系統(tǒng)往往難以直接與工作流中的其他系統(tǒng)無縫銜接,需要很多重復(fù)的 IO、數(shù)據(jù)格式轉(zhuǎn)換和適配的研發(fā)工作。
  • 使用外部文件系統(tǒng)共享數(shù)據(jù)給工作流帶來了額外的中斷,因?yàn)橥挥挟?dāng)一個(gè)任務(wù)完全寫完所有結(jié)果,下一個(gè)任務(wù)才能開始讀取和計(jì)算,這使得跨任務(wù)的流水線并行無法被應(yīng)用。
  • 現(xiàn)有的分布式文件系統(tǒng)在共享中間數(shù)據(jù)時(shí),特別是在云原生環(huán)境下,并沒有很好的處理分布式數(shù)據(jù)的位置問題,造成網(wǎng)絡(luò)開銷的浪費(fèi),從而降低端到端執(zhí)行效率。
  • 為了解決現(xiàn)有大數(shù)據(jù)分析工作流中存在的上述問題,我們設(shè)計(jì)和實(shí)現(xiàn)了分布式內(nèi)存數(shù)據(jù)共享引擎 Vineyard。

    Vineyard 從以下三個(gè)角度來應(yīng)對上述幾個(gè)問題:
    ?

  • 為了使端到端工作流中任務(wù)之間的數(shù)據(jù)共享更加高效,Vineyard 通過內(nèi)存映射的方式,支持系統(tǒng)間零拷貝的數(shù)據(jù)共享,省去了額外的 IO 開銷。
  • 為了簡化新計(jì)算引擎接入現(xiàn)有系統(tǒng)所需要的適配和開發(fā),Vineyard 對常見的數(shù)據(jù)類型,提供了開箱即用的抽象,例如 Tensor、DataFrame、Graph,等等,從而不同計(jì)算引擎之間共享中間結(jié)果不再需要額外的序列化和反序列。同時(shí),Vineyard 將 IO、數(shù)據(jù)遷移、快照等可復(fù)用的組件以插件的形式實(shí)現(xiàn),使其能夠很靈活地按需注冊到計(jì)算引擎中去,降低與計(jì)算引擎本身無關(guān)的開發(fā)成本。
  • Vineyard 提供一系列 operators,來實(shí)現(xiàn)更高效靈活的數(shù)據(jù)共享。例如 Pipeline operator 實(shí)現(xiàn)了跨任務(wù)的流水線并行,使得后續(xù)任務(wù)可以隨著前序任務(wù)輸出的產(chǎn)生,同時(shí)進(jìn)行計(jì)算,提高了端到端整體效率。
  • Vineyard 與 Kubernetes 集成,通過 Scheduler Plugin,讓任務(wù)的調(diào)度能夠感知所需要的數(shù)據(jù)的局部性,在 Kubernetes 讓單個(gè)任務(wù)的 Pod 盡可能地調(diào)度到與 Pod 所需的輸入數(shù)據(jù)對其的機(jī)器上,來減小數(shù)據(jù)遷移需要的網(wǎng)絡(luò)開銷,提升端到端性能。
  • 在初步的對比實(shí)驗(yàn)中,相比于使用 HDFS 來共享中間數(shù)據(jù),對于評測任務(wù),Vineyard 能夠大幅降低用于交換中間結(jié)果引入的額外開銷,對于整個(gè)工作流的端到端時(shí)間有 1.34 倍的提升。

    核心功能

    接下來從 Vineyard 核心的設(shè)計(jì)與實(shí)現(xiàn),以及 Vineyard 如何助力云原生環(huán)境中大數(shù)據(jù)分析任務(wù)兩個(gè)方面來介紹 Vineyard 的核心功能。
    ?

    1. 分布式內(nèi)存數(shù)據(jù)共享

    Vineyard 將內(nèi)存中的數(shù)據(jù)表示為 Object。Object 可以是 Local 的,也可以是 Global 的,以分布式執(zhí)行引擎 Mars 和 Dask 為例,一個(gè) DataFrame 往往被拆分成很多個(gè) Chunk 以利用多臺(tái)機(jī)器的計(jì)算能力,每臺(tái)機(jī)器上有多個(gè) Chunk,這些 Chunk 是 Vineyard 中的 LocalObject,這些 Chunk 一起構(gòu)成了一個(gè)全局的視圖,即 GlobalDataFrame。這個(gè) GlobalDataFrame 能夠直接共享給其他計(jì)算引擎,如 GraphScope,作為圖數(shù)據(jù)的輸入。有了這些數(shù)據(jù)類型的抽象,Vineyard 上的不同計(jì)算引擎之間就可以無縫地共享中間結(jié)果,將一個(gè)任務(wù)的輸出直接用作下一個(gè)任務(wù)的輸出。
    ?
    更具體地,Vineyard 中又是如果表達(dá)一個(gè)特定類型的 Object,使之能夠很容易地適配到不同的計(jì)算引擎中去呢?這得益于 Vineyard 在 Object 的表示上提供的靈活性。Vineyard 中,一個(gè) Object 包括兩個(gè)部分,Metadata,以及一組 Blob。Blob 中存儲(chǔ)著實(shí)際的數(shù)據(jù),而 Metadata 則用于解釋這些 Blob 的語義。例如對于 Tensor,Blob 是一段連續(xù)內(nèi)存,存儲(chǔ)著 Tensor 中所有的元素,而 Metadata 中記錄了 Tensor 的類型、形狀、以及行主序還是列主序等屬性。在 Python 中,這個(gè) Object 可以被解釋為一個(gè) Numpy 的 NDArray,而在 C++ 中,這個(gè) Object 可以被解釋為一個(gè) xtensor 中的 tensor。這兩種不同編程語言的 SDK 中,共享這個(gè) Tensor 不會(huì)帶來額外的 IO、拷貝、序列化/反序列化、以及類型轉(zhuǎn)換的開銷。
    ?
    同時(shí),Vineyard 中的 Metadata 是可嵌套的,這使得我們通過很容易地將任何復(fù)雜的數(shù)據(jù)類型描述為 Vineyard 中的 Object,不會(huì)限制計(jì)算引擎的表達(dá)能力。以 GlobalDataFrame 為例,見下圖中 Metadata 的結(jié)構(gòu)。
    ?

    2. 云原生環(huán)境中數(shù)據(jù)與任務(wù)的協(xié)同調(diào)度

    對于一個(gè)真實(shí)部署的大數(shù)據(jù)分析流水線,僅僅有任務(wù)之間的數(shù)據(jù)共享是遠(yuǎn)遠(yuǎn)不夠的。在云環(huán)境中,一個(gè)端到端流水線中包含的多個(gè)子任務(wù)在被 Kubernetes 調(diào)度時(shí)僅僅考慮了需要的資源約束,連續(xù)的兩個(gè)任務(wù)的 co-locate 無法保證,在兩個(gè)任務(wù)之間共享中間結(jié)果時(shí)仍然有數(shù)據(jù)遷移引入的網(wǎng)絡(luò)開銷,如下圖,在運(yùn)行 Task B 時(shí),因?yàn)閮蓚€(gè)任務(wù)的 Pod 沒有對齊,數(shù)據(jù)分片 A3、A4 需要被遷移到 Pod 所在的 Vineyard 實(shí)例上。
    ?

    對此,Vineyard 通過 CRD 將集群中的數(shù)據(jù)(Vineyard Objects)表示為可觀測的資源,并基于 Kubernetes 的 Scheduler Framework 設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)考慮數(shù)據(jù)局部性的調(diào)度器插件。當(dāng)前一個(gè)任務(wù) Task A 完成后,從結(jié)果對象的 Metadata 中,調(diào)度器插件可以知道所有分片的位置,在啟動(dòng)下一個(gè)任務(wù)時(shí),調(diào)度器給數(shù)據(jù)所在的節(jié)點(diǎn)(圖中的 Node 1、Node 2)更高的優(yōu)先級,使任務(wù) Task B 也盡可能地被調(diào)度到對應(yīng)的節(jié)點(diǎn)上,從而省去了數(shù)據(jù)遷移引入的額外開銷,來改善端到端的性能。

    快速上手

    Vineyard 集成了 Helm 以方便用戶安裝和部署:
    ?

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

    安裝之后,系統(tǒng)中會(huì)部署一個(gè) Vineyard DaemonSet,并暴露一個(gè) UNIX domain socket 用于與應(yīng)用的任務(wù) Pod 之間的共享內(nèi)存和 IPC 通信。
    ?
    此外,還可以參考 Vineyard 的演示視頻:
    https://www.youtube.com/watch?v=vPbF1l5nwwQ&list=PLj6h78yzYM2NoiNaLVZxr-ERc1ifKP7n6&t=585

    未來展望

    Vineyard 已經(jīng)作為分布式科學(xué)計(jì)算引擎 Mars 和一站式圖計(jì)算系統(tǒng) GraphScope 的存儲(chǔ)引擎,Vineyard 助力大數(shù)據(jù)分析任務(wù)離不開與云原生社區(qū)的緊密互動(dòng),未來Vineyard 會(huì)進(jìn)一步地完善與社區(qū)其他項(xiàng)目如 Kubeflow、Fluid 等的集成,助力更多云上大數(shù)據(jù)分析任務(wù)。
    ?
    Vineyard 將繼續(xù)與社區(qū)同行,支持關(guān)注社區(qū)的反饋,致力于推動(dòng)云原生技術(shù)在大數(shù)據(jù)分析領(lǐng)域的生態(tài)建設(shè)和應(yīng)用。歡迎大家關(guān)注 Vineyard 項(xiàng)目,加入 Vineyard 社區(qū)并參與項(xiàng)目的共建與落地!

    2021 阿里云開發(fā)者大會(huì)重磅開啟!

    數(shù)字時(shí)代,如何更好地利用云的能力?什么是新型、便捷的開發(fā)模式?如何讓開發(fā)者更高效地構(gòu)建應(yīng)用?科技賦能社會(huì),技術(shù)推動(dòng)變革,拓展開發(fā)者的能量邊界,一切,因云而不同。點(diǎn)擊立即報(bào)名活動(dòng)2021 阿里云開發(fā)者大會(huì)將給你答案。

    總結(jié)

    以上是生活随笔為你收集整理的Vineyard 加入 CNCF Sandbox,将继续瞄准云原生大数据分析领域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。