日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

加速PV存儲卷數(shù)據(jù)訪問

JindoRuntime是基于阿里云EMR團隊JindoFS系統(tǒng)開發(fā)的Fluid運行時引擎。JindoFS基于C++實現(xiàn),能夠為Fluid提供Dataset數(shù)據(jù)管理和緩存功能。JindoRuntime支持在Kubernetes環(huán)境下對PV存儲卷中的數(shù)據(jù)進行緩存,以提升后續(xù)數(shù)據(jù)訪問過程的效率。此外,PV存儲卷對應的存儲系統(tǒng)可以是任意的自建存儲系統(tǒng),例如CephFS等。本文介紹如何基于JindoRuntime加速PV存儲卷數(shù)據(jù)訪問。

前提條件

  • 已創(chuàng)建一個非ContainerOS操作系統(tǒng)的ACK Pro版集群,且集群版本為1.18及以上。具體操作,請參見創(chuàng)建ACK Pro版集群

    重要

    ack-fluid組件暫不支持在ContainerOS操作系統(tǒng)上使用。

  • 已安裝云原生AI套件并部署ack-fluid組件,且ack-fluid版本為1.0.6以上。

    重要

    若您已安裝開源Fluid,請卸載后再部署ack-fluid組件。

  • 已通過kubectl連接Kubernetes集群。具體操作,請參見通過kubectl工具連接集群

  • 已創(chuàng)建需要訪問存儲系統(tǒng)對應的PV存儲卷和PVC存儲卷聲明。

    在Kubernetes環(huán)境中,不同的存儲系統(tǒng)有不同的存儲卷創(chuàng)建方式,為保證存儲系統(tǒng)與Kubernetes集群的連接穩(wěn)定,請根據(jù)對應存儲系統(tǒng)的官方文檔進行準備。

步驟一:查詢PV存儲卷和PVC存儲卷聲明的信息

執(zhí)行如下命令,查詢Kubernetes中PV存儲卷和PVC存儲卷聲明的信息。

kubectl get pvc,pv

預期輸出:

NAME                                          STATUS   VOLUME                          CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/demo-pvc                Bound    demo-pv                         5Gi        RWX                           19h

NAME                                             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                           STORAGECLASS   REASON   AGE
persistentvolume/demo-pv                         30Gi       RWX            Retain           Bound    default/demo-pvc                                        19h

PV存儲卷demo-pv的容量為30GB,支持RWX訪問模式,已被綁定到PVC名稱為demo-pvc的存儲卷聲明上,均可正常使用。

步驟二:創(chuàng)建Fluid Dataset和JindoRuntime

  1. 使用如下YAML,創(chuàng)建dataset.yaml文件。

    下方配置文件中包含兩個待創(chuàng)建的Fluid資源對象,分別是DatasetJindoRuntime

    • Dataset:所需掛載的PVC存儲卷聲明信息。

    • JindoRuntime:待啟動的JindoFS分布式緩存系統(tǒng)配置,包括緩存系統(tǒng)Worker組件副本數(shù),以及每個Worker組件最大可用的緩存容量等。

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: pv-demo-dataset
    spec:
      mounts:
        - mountPoint: pvc://demo-pvc
          name: data
          path: /
      accessModes:
        - ReadOnlyMany
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: pv-demo-dataset
    spec:
      replicas: 2
      tieredstore:
        levels:
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 10Gi
            high: "0.9"
            low: "0.8"

    配置文件中資源對象的詳細參數(shù)說明如下。

    參數(shù)

    說明

    mountPoint

    需掛載的數(shù)據(jù)源信息。PVC作為數(shù)據(jù)源進行掛載時,支持使用pvc://<pvc_name>/<path>格式進行掛載,字段解析如下:

    • pvc_name:所需掛載的PVC存儲卷聲明名稱,該PVC與待創(chuàng)建的Dataset資源必須在同一命名空間下。

    • path:指定了要掛載的存儲卷下的子目錄。掛載時該子目錄必須存在,否則無法成功掛載。

    replicas

    待啟動的JindoFS緩存系統(tǒng)Worker組件副本數(shù)。可以根據(jù)需要進行調(diào)整。

    mediumtype

    緩存類型。僅支持HDD(機械硬盤)、SSD(固態(tài)硬盤)和MEM(內(nèi)存)三種類型。

    關于mediumtype的推薦配置,請參見策略二:選擇緩存介質(zhì)

    volumeType

    緩存介質(zhì)存儲卷類型。僅支持emptyDir和hostPath兩種類型,默認為hostPath類型。

    • 如果使用內(nèi)存或本地存儲的系統(tǒng)盤作為緩存介質(zhì),推薦選擇emptyDir類型,避免節(jié)點上緩存數(shù)據(jù)殘留,進而影響節(jié)點可用性。

    • 如果使用本地存儲的數(shù)據(jù)盤作為緩存介質(zhì),可使用hostPath類型,并配置path指定為宿主機上數(shù)據(jù)盤的掛載路徑。

    關于volumeType的推薦配置,請參見策略二:選擇緩存介質(zhì)

    path

    JindoFS緩存系統(tǒng)Worker的緩存數(shù)據(jù)存儲目錄。為達到最優(yōu)的數(shù)據(jù)訪問性能,建議使用/dev/shm或其他掛載了內(nèi)存文件系統(tǒng)的路徑。

    quota

    單個緩存Worker組件提供的最大緩存容量。可以根據(jù)需要進行調(diào)整。

  2. 執(zhí)行如下命令,創(chuàng)建Dataset和JindoRuntime資源對象。

    kubectl create -f dataset.yaml
  3. 執(zhí)行如下命令,查看Dataset的部署情況。

    kubectl get dataset pv-demo-dataset

    預期輸出:

    說明

    初次啟動JindoFS緩存系統(tǒng)時涉及鏡像拉取過程,因為網(wǎng)絡環(huán)境等因素的影響,可能需要耗時2~3分鐘。

    NAME              UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    pv-demo-dataset   10.96GiB         0.00B    20.00GiB         0.0%                Bound   2m13s

    Dataset處于Bound狀態(tài),表明JindoFS緩存系統(tǒng)已在集群內(nèi)正常啟動,應用Pod可正常訪問Dataset中定義的數(shù)據(jù)。

(可選)步驟三:創(chuàng)建DataLoad執(zhí)行緩存預熱

由于首次訪問無法命中數(shù)據(jù)緩存,應用Pod的數(shù)據(jù)訪問效率可能較低,F(xiàn)luid提供了DataLoad緩存預熱操作提升首次數(shù)據(jù)訪問的效率。

  1. 創(chuàng)建dataload.yaml文件,代碼示例如下。

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: dataset-warmup
    spec:
      dataset:
        name: pv-demo-dataset
        namespace: default
      loadMetadata: true
      target:
        - path: /
          replicas: 1

    上述資源對象的詳細參數(shù)說明如下所示。

    參數(shù)

    說明

    dataset.name

    需要預熱的Dataset對象名字。

    dataset.namespace

    需要預熱的Dataset對象所在的命名空間。該命名空間需要與DataLoad對象所在命名空間一致。

    loadMetadata

    預熱前是否進行元信息同步,對于JindoRuntime須設置為true

    target[*].path

    需預熱的存儲目錄或文件,路徑為基于Dataset中聲明的掛載點的相對路徑。

    例如,Dataset中掛載的數(shù)據(jù)源為pvc://my-pvc/mydata,那么設置path/test將會預熱my-pvc對應存儲系統(tǒng)下的/mydata/test目錄。

    target[*].replicas

    需預熱的存儲目錄或文件的緩存副本數(shù)量。

  2. 執(zhí)行如下命令,創(chuàng)建DataLoad對象。

    kubectl create -f dataload.yaml
  3. 執(zhí)行如下命令,查看DataLoad狀態(tài)。

    kubectl get dataload dataset-warmup

    預期輸出:

    NAME             DATASET           PHASE      AGE   DURATION
    dataset-warmup   pv-demo-dataset   Complete   62s   12s
  4. 執(zhí)行如下命令,查看數(shù)據(jù)緩存狀態(tài)。

    kubectl get dataset

    預期輸出:

    NAME              UFS TOTAL SIZE   CACHED     CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    pv-demo-dataset   10.96GiB         10.96GiB   20.00GiB         100.0%              Bound   3m13s

    DataLoad緩存預熱操作完成后,數(shù)據(jù)集的已緩存數(shù)據(jù)量(CACHED)已更新為整個數(shù)據(jù)集的大小,代表整個數(shù)據(jù)集已被緩存,緩存百分比(CACHED PERCENTAGE)為100.0%。

步驟四:創(chuàng)建應用容器,訪問PV存儲卷中的數(shù)據(jù)

  1. 使用如下YAML,創(chuàng)建pod.yaml文件,并修改YAML文件中的claimName名稱與步驟二創(chuàng)建的Dataset名稱相同。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
        - name: nginx
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          command:
          - "bash"
          - "-c"
          - "sleep inf"
          volumeMounts:
            - mountPath: /data
              name: data-vol
      volumes:
        - name: data-vol
          persistentVolumeClaim:
            claimName: pv-demo-dataset # 名稱需要與Dataset相同。
  2. 執(zhí)行如下命令,創(chuàng)建應用Pod。

    kubectl create -f pod.yaml
  3. 執(zhí)行如下命令,登錄Pod訪問數(shù)據(jù)。

    kubectl exec -it nginx bash

    預期輸出:

    # Nginx Pod中,/data目錄下有一個名為demofile的文件,大小為11 GB。
    ls -lh /data
    total 11G
    -rw-r----- 1 root root 11G Jul 22  2022 demofile
    
    # 執(zhí)行cat /data/demofile > /dev/null命令,將demofile文件中的內(nèi)容讀取并寫入/dev/null設備中,用時11.004秒。
    time cat /data/demofile > /dev/null
    real    0m11.004s
    user    0m0.065s
    sys     0m3.089s

    由于數(shù)據(jù)集中的數(shù)據(jù)已經(jīng)全部緩存在了JindoFS緩存系統(tǒng)中,讀取數(shù)據(jù)時將會從緩存中讀取,而不是從遠程存儲系統(tǒng)中讀取,從而減少了網(wǎng)絡傳輸,提升了數(shù)據(jù)訪問效率。