偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

好的數(shù)據(jù)編排怎么做?平安壹錢(qián)包大數(shù)據(jù)重構(gòu)實(shí)踐

大數(shù)據(jù)
本文將結(jié)合平安壹錢(qián)包的實(shí)際使用情況,分享對(duì) Alluxio 的理解以及使用 Alluxio 進(jìn)行大數(shù)據(jù)建設(shè)的實(shí)踐經(jīng)驗(yàn)。

一、Alluxio 介紹

1、背景介紹

圖片

當(dāng)前計(jì)算引擎越來(lái)越多樣化,存儲(chǔ)系統(tǒng)和部署環(huán)境也越來(lái)越復(fù)雜。不同的計(jì)算和存儲(chǔ)適用于不同的場(chǎng)景。比如 Presto 的即席查詢性能比較好,比 Spark 要快很多,而 Spark 又更適合于批量處理。存儲(chǔ)系統(tǒng)也是一樣的,常用的 HDFS 是一個(gè)可以存取海量數(shù)據(jù)的存儲(chǔ)系統(tǒng),但有些場(chǎng)景下又希望能夠使用存儲(chǔ)密度更高的存儲(chǔ)系統(tǒng)。與此同時(shí),部署方式也在不斷變化,比如之前一般使用的是 CDH,將來(lái)可能會(huì)用 Ambari 這樣一個(gè)開(kāi)源的方式,還可能會(huì)考慮使用容器化的部署,為將來(lái)的云化做一個(gè)鋪墊。

環(huán)境的日趨復(fù)雜化,帶來(lái)了很多問(wèn)題與挑戰(zhàn)。比如我們?cè)趯?shí)踐過(guò)程中,為了建設(shè)數(shù)據(jù)湖倉(cāng),必須要引入 Iceberg,但是已有的 HDFS 是 2.6.x,Spark 是 1.6.x,對(duì) Iceberg 是不支持的。為了引入 Iceberg,HDFS 要升級(jí)到 3.x,Spark 也要升級(jí),才能建設(shè)成一個(gè)整體。

在這樣一個(gè)過(guò)程中,我們面對(duì)了四點(diǎn)比較突出的問(wèn)題:

圖片


  • 高耦合:計(jì)算引擎與存儲(chǔ)系統(tǒng)已經(jīng)形成了一個(gè)整體,任意一方的升級(jí)或者變更,都意味著需要重新考慮兼容性的問(wèn)題。
  • 難迭代:計(jì)算引擎需要使用不同 API 去訪問(wèn)不同的存儲(chǔ)系統(tǒng),數(shù)據(jù)的跨存儲(chǔ)系統(tǒng)遷移往往需要兼顧計(jì)算機(jī)應(yīng)用,甚至需要重新開(kāi)發(fā)。
  • 難遷移:從本地集群的部署方式平滑遷移為云部署的難度高,不僅維護(hù)成本高,還很難適應(yīng)混合云環(huán)境。
  • 持續(xù)性的迭代壓力:任何方案都會(huì)過(guò)時(shí),想要追逐技術(shù)前沿,就需要面對(duì)持續(xù)性的迭代壓力。

2、數(shù)據(jù)編排概覽

圖片

Alluxio 是一種基于數(shù)據(jù)編排技術(shù)的開(kāi)源組件。

數(shù)據(jù)編排技術(shù)是位于存儲(chǔ)層與計(jì)算層之間的一個(gè)抽象層。它可以將復(fù)雜多樣的底層存儲(chǔ)進(jìn)行包裝,向上提供統(tǒng)一的訪問(wèn)路徑,兼容多種訪問(wèn)協(xié)議,以應(yīng)對(duì)多樣化的存儲(chǔ)需求與應(yīng)用計(jì)算之間的矛盾。為數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序提供數(shù)據(jù)可訪問(wèn)性、數(shù)據(jù)本地性和數(shù)據(jù)可伸縮性。

Alluxio 可以帶來(lái)如下一些好處:

  • 標(biāo)準(zhǔn) API

Alluxio 可以跨存儲(chǔ)系統(tǒng)將數(shù)據(jù)訪問(wèn)抽象出來(lái),計(jì)算引擎只需使用標(biāo)準(zhǔn) API 就可以訪問(wèn)不同存儲(chǔ)系統(tǒng)中的數(shù)據(jù)。

  • 解耦計(jì)算與存儲(chǔ)

Alluxio 允許掛載多個(gè)不同的存儲(chǔ)系統(tǒng)以及不同版本的相同存儲(chǔ)系統(tǒng),解耦計(jì)算與存儲(chǔ),方便存儲(chǔ)系統(tǒng)的升級(jí)和引入過(guò)程。

  • 緩存

Alluxio 具有緩存功能,加速訪問(wèn)熱數(shù)據(jù)。

  • 云原生

Alluxio 是云原生的,可以在任何云中快速搭建數(shù)據(jù)編排層。

Alluxio 為數(shù)據(jù)驅(qū)動(dòng)型應(yīng)用和存儲(chǔ)系統(tǒng)構(gòu)建了橋梁,使得應(yīng)用程序能夠通過(guò)一個(gè)公共接口連接到多種存儲(chǔ)系統(tǒng)。與此同時(shí),Alluxio 內(nèi)存至上的層次化緩存架構(gòu)使得數(shù)據(jù)的訪問(wèn)速度比現(xiàn)有方案快幾個(gè)數(shù)量級(jí),非常適合 IO 成為瓶頸的存算分離場(chǎng)景。

圖片

Alluxio 的最上層是計(jì)算層,最底層是存儲(chǔ)層,中間是數(shù)據(jù)編排層。計(jì)算層通過(guò)多種標(biāo)準(zhǔn)數(shù)據(jù)訪問(wèn) API 來(lái)訪問(wèn)數(shù)據(jù)編排層。編排層負(fù)責(zé)對(duì)多種存儲(chǔ)系統(tǒng)的訪問(wèn)。

3、Alluxio 架構(gòu)設(shè)計(jì)

圖片

計(jì)算應(yīng)用通過(guò) Alluxio Client從Alluxio Master 獲取 AlluxioWorker 節(jié)點(diǎn)與默認(rèn)配置,并與 Worker 建立連接進(jìn)行數(shù)據(jù)讀寫(xiě)。在這個(gè)過(guò)程中,Alluxio Client 會(huì)將計(jì)算應(yīng)用的 API 進(jìn)行自動(dòng)轉(zhuǎn)換,讓整個(gè)過(guò)程對(duì)于計(jì)算應(yīng)用是透明的。

Alluxio Master 基于 zookeeper 或者內(nèi)嵌的 Raft 服務(wù)實(shí)現(xiàn) HA,并負(fù)責(zé)維護(hù)默認(rèn)配置、協(xié)調(diào) Worker 節(jié)點(diǎn)、接收請(qǐng)求、塊位置等工作。

Alluxio Worker 的職責(zé)包括:

  • 跨存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě):Alluxio Worker 主要負(fù)責(zé)與底層存儲(chǔ)系統(tǒng)進(jìn)行交互,它不僅實(shí)現(xiàn)了不同存儲(chǔ)系統(tǒng)的 API,還可以自動(dòng)轉(zhuǎn)換,實(shí)現(xiàn)了跨存儲(chǔ)系統(tǒng)的數(shù)據(jù)讀寫(xiě)。
  • 多級(jí)緩存:Alluxio Worker 維護(hù)了一個(gè)多級(jí)緩存,用以加速熱數(shù)據(jù)的訪問(wèn),減少讀取底層存儲(chǔ)的次數(shù)。而基于塊注釋的緩存設(shè)計(jì),不僅可以為熱數(shù)據(jù)提供最佳性能,還能在緩存空間不足時(shí)自動(dòng)釋放較冷的數(shù)據(jù),以非常自然的方式實(shí)現(xiàn)了數(shù)據(jù)的冷熱分離。
  • 訪問(wèn)短路:當(dāng)計(jì)算應(yīng)用與 Alluxio Worker 處于同一節(jié)點(diǎn)時(shí),還可以直接通過(guò) NIO 進(jìn)行短路交互,進(jìn)一步優(yōu)化數(shù)據(jù)的訪問(wèn)鏈路,減少響應(yīng)時(shí)間。
  • 彈性部署:Alluxio Worker 在啟動(dòng)時(shí)會(huì)主動(dòng)向 AlluxioMaster 注冊(cè)自己,并通過(guò)心跳機(jī)制維持存在,而基于數(shù)據(jù)易失性的設(shè)計(jì),可以讓用戶根據(jù)需要,靈活的進(jìn)行水平拓展或者縮容。

4、Alluxio 核心功能

(1)統(tǒng)一命名空間

圖片


  • 靈活掛載
    Alluxio 的根掛載點(diǎn)需要在啟動(dòng)時(shí)指定,綁定 Alluxio 的根目錄。嵌套掛載點(diǎn)則可以在任意 Alluxio 子目錄上通過(guò)命令行指定。嵌套掛載點(diǎn)的數(shù)量沒(méi)有限制,可以分別掛載不同的存儲(chǔ)系統(tǒng),或者相同存儲(chǔ)系統(tǒng)的不同版本。
  • 訪問(wèn)控制
    用戶通過(guò) Alluxio 訪問(wèn)底層存儲(chǔ)時(shí),只能訪問(wèn)掛載在 Alluxio 上的目錄,同時(shí) Alluxio 也可以將掛載點(diǎn)設(shè)定為 read-only,進(jìn)一步限制用戶對(duì)底層存儲(chǔ)的訪問(wèn)。這是區(qū)別于用戶權(quán)限管理的強(qiáng)制限制。
  • 訪問(wèn)透明
    用戶通過(guò) Alluxio 訪問(wèn)底層存儲(chǔ)時(shí),并不需要感知底層存儲(chǔ)系統(tǒng)的類別、版本,也不需要關(guān)注掛載點(diǎn)(某些情況除外)。在大部分場(chǎng)景中,通過(guò) Alluxio,用戶可以無(wú)感知地訪問(wèn)掛載其上的底層存儲(chǔ)。

(2)緩存

圖片

  • 緩存讀寫(xiě)策略
    讀:NO_CACHE(Alluxio 僅作為代理,不做緩存),CACHE_PROMOTE(盡量放到緩存最上層),CACHE。
    寫(xiě):THROUGH(Alluxio 僅作為代理,不做緩存),CACHE_THROUGH(寫(xiě)入存儲(chǔ)時(shí)備份到緩存空間中,適合于寫(xiě)入后還需要讀的場(chǎng)景),ASYNC_THROUGH(異步寫(xiě)),MUST_CHACHE(僅寫(xiě)入緩存空間)。
  • 緩存管理
    塊注釋策略:根據(jù)塊注釋策略為數(shù)據(jù)塊進(jìn)行排序,位于序列尾部的數(shù)據(jù)塊將作為優(yōu)先的空間釋放對(duì)象。
      最少最近策略
      基于權(quán)重的最少最近策略
    緩存分層:數(shù)據(jù)塊可能已配置存儲(chǔ)層中,基于塊注釋策略,Alluxio 會(huì)在各存儲(chǔ)層中移動(dòng)數(shù)據(jù)塊,包括塊對(duì)齊、塊升級(jí)、遷移任務(wù)退后等。
    緩存驅(qū)逐:當(dāng) Alluxio 的存儲(chǔ)空間不足時(shí),無(wú)法接受新數(shù)據(jù)的寫(xiě)入,會(huì)基于注釋策略釋放存儲(chǔ)空間,這個(gè)過(guò)程叫做緩存驅(qū)逐。它保證了 Alluxio 總是存儲(chǔ)著熱數(shù)據(jù),但也會(huì)在某些場(chǎng)景下造成緩存命中率降低的問(wèn)題。
  • 緩存生命周期
    數(shù)據(jù)操作:LOAD(加載數(shù)據(jù)到緩存空間),PERSIST(緩存空間中的數(shù)據(jù)回寫(xiě)到底層存儲(chǔ)),F(xiàn)REE(只清除緩存空間中的數(shù)據(jù),不動(dòng)底層存儲(chǔ)數(shù)據(jù)),DELETE(緩存空間和底層存儲(chǔ)的數(shù)據(jù)都清除)
    TTL:Alluxio 可以為文件和目錄設(shè)置生存時(shí)間,當(dāng)生存時(shí)間到達(dá)時(shí),執(zhí)行一種數(shù)據(jù)操作,默認(rèn)為 DELETE。這樣可以對(duì)緩存空間進(jìn)行策略化管理。
    元數(shù)據(jù)同步:Alluxio 可以為文件和目錄設(shè)置元數(shù)據(jù)檢查周期,當(dāng)緩存過(guò)期時(shí),會(huì)自動(dòng)從 UFS 重新加載。如果每次訪問(wèn)都同步底層存儲(chǔ),開(kāi)銷(xiāo)會(huì)比較大,因此可以根據(jù)應(yīng)用場(chǎng)景進(jìn)行定制。如果對(duì)數(shù)據(jù)時(shí)效性比較敏感,底層存儲(chǔ)的任何更新,在通過(guò) Alluxio 去訪問(wèn)時(shí)都希望能感知到,這時(shí)就可以設(shè)置每次讀之前同步元數(shù)據(jù)。而大多數(shù)情況下,對(duì)數(shù)據(jù)時(shí)效性沒(méi)有那么敏感,那么就可以根據(jù)需要設(shè)置同步的時(shí)間間隔。

二、Alluxio 實(shí)踐分享

1、長(zhǎng)鏈計(jì)算任務(wù)的遷移需要兼顧上下游依賴關(guān)系

圖片

建設(shè)湖倉(cāng)一體化,不可避免的一個(gè)問(wèn)題就是如何去做數(shù)據(jù)遷移,以及生成這個(gè)數(shù)據(jù)的長(zhǎng)鏈任務(wù)的遷移。如果沒(méi)有數(shù)據(jù)編排層去做遷移,需要兼顧上下游的數(shù)據(jù)關(guān)系。有了編排層,如圖所示,首先將舊集群中的數(shù)倉(cāng)和新的湖倉(cāng)進(jìn)行元數(shù)據(jù)同步,可以看到舊的數(shù)倉(cāng)和新的湖倉(cāng)均含有兩張表,但實(shí)際上從底層來(lái)看,這兩張表的數(shù)據(jù)只維護(hù)了一份,好處是不需要在兩個(gè)集群里面都維護(hù)相同的數(shù)據(jù),減少了存儲(chǔ)的壓力,同時(shí)可以避免數(shù)據(jù)不一致的問(wèn)題。通過(guò) Alluxio 將元數(shù)據(jù)同步,做遷移時(shí)就可以只遷移該任務(wù)所依賴的數(shù)據(jù)本身,這樣任務(wù)遷移就變得非常靈活。

2、利用高速的緩存空間加速數(shù)據(jù)的讀寫(xiě)

圖片

在加速場(chǎng)景里面,我們根據(jù)不同的應(yīng)用場(chǎng)景,使用不同的 Alluxio 集群。

  • 將 Trino 和 Alluxio 混合部署在 SSD 集群上(混合部署時(shí)性能最佳),利用 Alluxio 緩存空間加速熱數(shù)據(jù)的加載。
  • 對(duì)于熱度不高的數(shù)據(jù)也可以通過(guò)直連底層存儲(chǔ)進(jìn)行訪問(wèn)。
  • Spark shuffle 加速主要基于 Spark RSS 這邊的接口,每個(gè)公司使用不同的產(chǎn)品,Alluxio 集群可以整合空閑的內(nèi)存或是零散的 SSD 空間,把這些空間充分地利用起來(lái)。
  • 利用 Alluxio 可以將 RSS 產(chǎn)生的 IO 占用限制在指定集群、節(jié)點(diǎn)或者磁盤(pán)上,減少集群的 IO 競(jìng)爭(zhēng)帶來(lái)的任務(wù)時(shí)長(zhǎng)波動(dòng)。

3、提供數(shù)據(jù)本地性,將需要單點(diǎn)部署的應(yīng)用與大數(shù)據(jù)存儲(chǔ)直接連通

圖片

(1)痛點(diǎn):

  • 有些 AI 計(jì)算需要部署在裝有 GPU 的特定機(jī)器上,與大數(shù)據(jù)集群環(huán)境天然隔離;
  • 算法工程師需要學(xué)習(xí)并實(shí)現(xiàn)特定存儲(chǔ)系統(tǒng)的 API 才能去讀寫(xiě)數(shù)據(jù);
  • 部分計(jì)算應(yīng)用需要將原始數(shù)據(jù)拉取到本地才能進(jìn)行計(jì)算,但是本地節(jié)點(diǎn)的磁盤(pán)空間有限。

(2)優(yōu)化:

  • Alluxio 支持 POSIX API,它可以直接 mount 到本地節(jié)點(diǎn)的目錄上,連通大數(shù)據(jù)存儲(chǔ)與本地節(jié)點(diǎn)。
  • 算法工程師可以像讀寫(xiě)本地文件一樣讀寫(xiě)大數(shù)據(jù)存儲(chǔ)上的數(shù)據(jù),而不必關(guān)注遠(yuǎn)端存儲(chǔ)系統(tǒng),從而節(jié)省學(xué)習(xí)和開(kāi)發(fā)成本。
  • 為本地節(jié)點(diǎn)提供集群級(jí)別的存儲(chǔ)空間,并提供最高內(nèi)存級(jí)別的數(shù)據(jù)讀寫(xiě)速度。

4、兩種實(shí)現(xiàn)冷熱分離的架構(gòu)

圖片

Alluxio 實(shí)現(xiàn)冷熱分離有兩種方式,一種方式是可以在存儲(chǔ)層做冷熱分隔。如果一個(gè)集群性能比較高,主要是熱數(shù)據(jù),另一個(gè)集群數(shù)據(jù)都是冷數(shù)據(jù),但是存儲(chǔ)密度高。當(dāng)數(shù)據(jù)變冷時(shí),需要人工將數(shù)據(jù)從高性能的集群遷移到高存儲(chǔ)密度的集群,從而實(shí)現(xiàn)冷熱分離,這樣對(duì)于上層應(yīng)用不太友好,底層數(shù)據(jù)在遷移的時(shí)候,目錄、命名空間不一樣,用 Alluxio 就可以避免這些問(wèn)題。在此過(guò)程中 Alluxio 僅需要作為一個(gè)代理,不需要緩存空間,僅需要滿足 IO 計(jì)算。這種方式對(duì) Alluxio 本身的緩存能力沒(méi)有很高的要求。

第二種方式是利用 Alluxio 直接做一個(gè)上下層的冷熱分離,在此過(guò)程中 Alluxio 作為編排層,直接放熱數(shù)據(jù),存儲(chǔ)層直接放冷數(shù)據(jù)。冷數(shù)據(jù)可以通過(guò)預(yù)加載的方式暖起來(lái),把數(shù)據(jù)寫(xiě)進(jìn)緩存空間。這種方式需要 Alluxio 提供一個(gè)較大的緩存空間。

實(shí)踐中,我們綜合使用了兩種方式。整體上是以第一種方式為主,我們有一個(gè)高性能的集群和一個(gè)高存儲(chǔ)密度的集群。與此同時(shí),也為 Alluxio 配置了一些緩存空間,來(lái)進(jìn)一步提升性能。

5、大數(shù)據(jù)架構(gòu)演變

圖片

Alluxio 帶來(lái)的大數(shù)據(jù)架構(gòu)演變過(guò)程如上圖所示。

  • 引入Alluxio,實(shí)現(xiàn)緩存加速。
  • Alluxio 掛載多個(gè)存儲(chǔ)系統(tǒng),助力存儲(chǔ)升級(jí)和數(shù)據(jù)遷移,數(shù)據(jù)在邏輯層面實(shí)現(xiàn)存算分離。
  • 將計(jì)算應(yīng)用做容器化改造,與 Alluxio 一起遷移到 K8s 中,完全實(shí)現(xiàn)存算分離,具備上云的條件。
  • 根據(jù)業(yè)務(wù)需求,為不同的計(jì)算應(yīng)用單獨(dú)定制 Alluxio 集群,滿足個(gè)性化需要。

三、展望

最后來(lái)分享一下未來(lái)的規(guī)劃。

1、更輕:輕量部署無(wú)負(fù)重

通過(guò)引入 Alluxio,我們可以將計(jì)算應(yīng)用與存儲(chǔ)系統(tǒng)解耦,進(jìn)而減少大數(shù)據(jù)架構(gòu)迭代的難度和成本。Alluxio 的部署已經(jīng)足夠靈活簡(jiǎn)單,但我們?nèi)匀幌M懈p量、更無(wú)侵入的部署方式或配置項(xiàng):

  • 更靈活的邏輯域名配置項(xiàng),避免修改 core-site.xml
  • 客戶端級(jí)別的可配置化的訪問(wèn)映射,避免修改 HMS
  • 集成度更高的服務(wù)端進(jìn)程

2、更快:讓快變得更快

通過(guò)利用 Alluxio 的緩存空間,計(jì)算應(yīng)用可以獲得最高內(nèi)存級(jí)別的讀寫(xiě)加速,并減少與底層存儲(chǔ)的 I/O 吞吐,獲得全方位的數(shù)據(jù)加速體驗(yàn)。但在復(fù)雜的部署環(huán)境中,我們希望獲得一些新的特性,讓快變得更快。

  • 更豐富的緩存請(qǐng)求分配策略(例如給 LocalFirst 增加備選策略)
  • 跨集群數(shù)據(jù)讀寫(xiě)的 I/O 限流
  • 基于客戶端的 UFS 讀寫(xiě)(例如客戶端從 worker 獲取掛載信息和配置后自己去讀)

3、更穩(wěn)定:穩(wěn)定可靠控風(fēng)險(xiǎn)

通過(guò)引入 Alluxio,我們將存儲(chǔ)系統(tǒng)置于更底層,由 Alluxio 與計(jì)算應(yīng)用進(jìn)行交互,這帶來(lái)了許多穩(wěn)定性上的好處,例如審計(jì)日志、Metrics、訪問(wèn)控制等等,但也帶來(lái)了一些新的挑戰(zhàn),等待我們?nèi)ヌ剿鞲€(wěn)定的集群環(huán)境:

  • 基于 tag 或者用戶組的緩存配額
  • AlluxioWorkerJVM 與 RAM 緩存的內(nèi)存統(tǒng)一
  • 本地緩存數(shù)據(jù)的故障載入
責(zé)任編輯:姜華 來(lái)源: DataFunTalk
相關(guān)推薦

2023-09-27 22:44:18

數(shù)據(jù)遷移數(shù)據(jù)庫(kù)

2020-10-26 07:05:02

大數(shù)據(jù)管道編排編排框架

2021-09-17 17:47:00

Fintech金融

2016-01-05 16:17:59

云夢(mèng)數(shù)據(jù)倉(cāng)

2020-07-28 08:36:54

數(shù)據(jù)安全數(shù)據(jù)泄露數(shù)據(jù)

2012-11-28 09:50:47

大數(shù)據(jù)IBM云計(jì)算

2017-11-08 12:25:37

小程序運(yùn)營(yíng)公眾號(hào)

2013-11-05 10:17:47

大數(shù)據(jù)平安城市智慧轉(zhuǎn)型

2016-11-02 14:54:46

華為全網(wǎng)智能

2017-01-03 10:27:42

醫(yī)療大數(shù)據(jù)醫(yī)院

2021-10-12 10:22:33

數(shù)據(jù)庫(kù)架構(gòu)技術(shù)

2021-11-10 05:00:58

數(shù)據(jù)分析運(yùn)營(yíng)

2015-09-20 18:31:29

阿里云心電數(shù)據(jù)云上安心

2018-02-07 09:00:09

2020-05-13 11:25:38

移動(dòng)支付APP排名

2017-04-24 10:25:20

大數(shù)據(jù)制造業(yè)

2022-05-09 15:54:44

平安科技TiDB云原生

2019-04-24 13:07:16

HadoopSpark分布式架構(gòu)

2023-07-29 22:27:44

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)