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

通過Dataload定時更新Dataset數據

Fluid是一個開源的Kubernetes原生分布式數據集編排和加速引擎,主要服務于云原生場景下的數據密集型應用。Fluid可以通過管理和調度底層緩存Runtime實現數據集的可見性、彈性伸縮和數據遷移。本文以JindoFS為例演示如何定時數據加載。

前提條件

  • 已創建ACK集群Pro版,且集群版本為1.18及以上。具體操作,請參見創建ACK集群Pro版

  • 已安裝云原生AI套件并部署ack-fluid組件。

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

    • 需確保ack-fluid版本為1.0.3。

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

步驟一:準備OSS Bucket的數據

  1. 執行以下命令,下載一份測試數據。

    wget https://archive.apache.org/dist/hbase/2.5.2/RELEASENOTES.md
  2. 安裝ossutil,并創建Bucket。具體操作,請參見安裝ossutil

  3. 執行以下命令,將下載的測試數據上傳到阿里云OSS對應的Bucket上。

    ossutil64 cp RELEASENOTES.md oss://<bucket>/<path>/RELEASENOTES.md

步驟二:創建Dataset和JindoRuntime

  1. 創建一個mySecret.yaml文件,用于保存OSS的accessKeyIdaccessKeySecret。YAML示例如下所示。

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    stringData:
      fs.oss.accessKeyId: ****** # 請輸入accessKeyId。
      fs.oss.accessKeySecret: ****** # # 請輸入accessKeySecret。
  2. 執行以下命令,生成Secret。

    kubectl create -f mySecret.yaml

    預期輸出:

    secret/mysecret created
  3. 創建一個dataset.yaml文件,用于創建Dataset。

    展開查看YAML示例

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: demo
    spec:
      mounts:
        - mountPoint: oss://<bucket-name>/<path>
          options:
            fs.oss.endpoint: <oss-endpoint>
          name: hbase
          path: "/"
          encryptOptions:
            - name: fs.oss.accessKeyId
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: fs.oss.accessKeyId
            - name: fs.oss.accessKeySecret
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: fs.oss.accessKeySecret
      accessModes:
        - ReadOnlyMany
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: demo
    spec:
      replicas: 1
      tieredstore:
        levels:
          - mediumtype: MEM
            path: /dev/shm
            quota: 2Gi
            high: "0.99"
            low: "0.8"
      fuse:
       args:
        - -okernel_cache
        - -oro
        - -oattr_timeout=60
        - -oentry_timeout=60
        - -onegative_timeout=60

    相關參數解釋如下表所示:

    參數

    說明

    Dataset

    mountPoint

    oss://<oss_bucket>/<path>表示掛載UFS的路徑,路徑中不需要包含Endpoint信息。

    fs.oss.endpoint

    OSS Bucket的Endpoint信息,公網或私網地址皆可。

    accessModes

    Dataset的訪問模式。

    JindoRuntime

    replicas

    創建JindoFS集群的Worker數量。

    mediumtype

    緩存類型。定義創建JindoRuntime模板樣例時,JindoFS支持HDD、SSD、MEM其中任意一種緩存類型。

    path

    存儲路徑,暫時只支持單個路徑。當選擇MEM做緩存時,需指定一個本地路徑來存儲Log等文件。

    quota

    緩存最大容量,單位GB。緩存容量可以根據UFS數據大小自行配置。

    high

    存儲容量上限大小。

    low

    存儲容量下限大小。

    fuse.args

    表示可選的Fuse客戶端掛載參數。通常與Dataset的訪問模式搭配使用。

    • 當Dataset訪問模式為ReadOnlyMany時,開啟kernel_cache以利用內核緩存優化讀性能。此時您可以設置attr_timeout(文件屬性緩存保留時間)、entry_timeout(文件名讀取緩存保留時間)超時時間、negative_timeout(文件名讀取失敗緩存保留時間),默認均為7200s。

    • 當Dataset訪問模式為ReadWriteMany時,建議您使用默認配置。此時參數設置如下:

      - -oauto_cache

      - -oattr_timeout=0

      - -oentry_timeout=0

      - -onegative_timeout=0

      說明

      使用auto_cache以確保如果文件大小或修改時間發生變化,緩存就會失效。同時將超時時間都設置為0。

  4. 執行以下命令,通過部署dateset.yaml創建JindoRuntime和Dataset。

    kubectl create -f dataset.yaml

    預期輸出:

    dataset.data.fluid.io/demo created
    jindoruntime.data.fluid.io/demo created
  5. 執行以下命令,查看Dataset的部署情況。

    kubectl get dataset

    預期輸出:

    NAME    UFS TOTAL SIZE   CACHED      CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    demo    588.90KiB        0.00B       10.00GiB         0.0%                Bound   2m7s

步驟三:創建支持定時運行的Dataload

  1. 創建一個dataload.yaml文件。

    展開查看YAML示例

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: cron-dataload
    spec:
      dataset:
        name: demo
        namespace: default
      policy: Cron
      schedule: "*/2 * * * *" # Run every 2 min

    相關參數解釋如下表所示:

    參數

    說明

    dataset

    包含執行Dataload的數據集的名稱和命名空間。

    policy

    表示執行策略,目前支持Once和Cron。這里創建定時Dataload任務。

    • Once:僅執行一次策略。

    • Cron:定時執行策略。

    schedule

    表示觸發Dataload的策略。.spec.schedule字段的值遵循Cron語法,詳細信息,請參見Cron時間表語法

    關于Dataload高級配置,請參見如下配置文件:

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: cron-dataload
    spec:
      dataset:
        name: demo
        namespace: default
      policy: Cron # 表示Dataload執行策略,包括[Once, Cron]。
      schedule: * * * * * # 僅當cron使用的policy為Cron時有效。
    	loadMetadata: true # 在Dataload前同步元數據。
      target: # Dataload的目標,支持指定的多個目標。
        - path: <path1> # 執行Dataload的路徑。
          replicas: 1 # 緩存的副本數。
        - path: <path2>
          replicas: 2
  2. 執行以下命令,通過部署dataload.yaml來創建Dataload任務。

    kubectl apply -f dataload.yaml

    預期輸出:

    dataload.data.fluid.io/cron-dataload created
  3. 執行以下命令,查看Dataload狀態。

    kubectl get dataload

    如下所示,當PHASE的狀態為Complete時,表明數據已加載完成,可進入下一步操作。

    NAME            DATASET   PHASE      AGE   DURATION
    cron-dataload   demo      Complete   68s   8s
  4. 執行以下命令,查看當前Dataset狀態。

    kubectl get dataset

    預期輸出:

    NAME    UFS TOTAL SIZE   CACHED      CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    demo    588.90KiB        588.90KiB   10.00GiB         100.0%              Bound   5m50s

    結果輸出表明,OSS中的文件已經全部加載到緩存。

步驟四:創建應用容器訪問OSS中的數據

  1. 創建一個app.yaml文件,使用應用容器訪問RELEASENOTES.md文件。

    展開查看YAML示例

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - mountPath: /data
              name: demo-vol
      volumes:
        - name: demo-vol
          persistentVolumeClaim:
            claimName: demo
  2. 執行以下命令,創建應用容器。

    kubectl create -f app.yaml

    預期輸出:

    pod/nginx created
  3. 等待應用容器就緒后,執行以下命令,查看OSS中的數據。

    kubectl exec -it nginx -- ls -lh /data

    預期輸出:

    total 589K
    -rwxrwxr-x 1 root root 589K Jul 31 04:20 RELEASENOTES.md
  4. 執行以下命令,將字符串 "hello, crondataload." 寫入RELEASENOTES.md文件中。

    echo "hello, crondataload." >> RELEASENOTES.md
  5. 執行以下文件,重新上傳RELEASENOTES.md文件到OSS。

    ossutil64 cp RELEASENOTES.md oss://<bucket-name>/<path>/RELEASENOTES.md

    按下確認鍵y后,預期輸出:

    cp: overwrite "oss://<bucket-name>/<path>/RELEASENOTES.md"(y or N)? y
    Succeed: Total num: 1, size: 21. OK num: 1(upload 1 files).                          
    
    average speed 0(byte/s)
    
    81.827978(s) elapsed
  6. 執行以下命令,查看Dataload作業運行情況。

    kubectl describe dataload cron-dataload

    預期輸出:

    ...
    Status:
      Conditions:
        Last Probe Time:       2023-08-24T06:44:08Z
        Last Transition Time:  2023-08-24T06:44:08Z
        Status:                True
        Type:                  Complete
      Duration:                8s
      Last Schedule Time:      2023-08-24T06:44:00Z # 為上一次Dataload作業的調度時間。
      Last Successful Time:    2023-08-24T06:44:08Z # 為上一次Dataload作業的完成時間。
      Phase:                   Complete
      ...
  7. 執行以下命令,查看當前Dataset狀態。

    kubectl get dataset

    預期輸出:

    NAME    UFS TOTAL SIZE   CACHED      CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    demo    588.90KiB        1.15MiB     10.00GiB         100.0%              Bound   10m

    預期輸出表明,更新后的文件已經加載到了緩存。

  8. 執行以下命令,在應用容器中查看更新后的文件。

    kubectl exec -it nginx -- tail /data/RELEASENOTES.md

    預期輸出:

    hello, crondataload.

    輸出結果表明,應用容器已經可以訪問更新后的文件。

(可選)步驟五:環境清理

若無需使用該數據加速功能時,請清理環境。

執行以下命令,刪除JindoRuntime和應用容器。

kubectl delete -f app.yaml
kubectl delete -f dataset.yaml

預期輸出:

pod "nginx" deleted
dataset.data.fluid.io "demo" deleted
jindoruntime.data.fluid.io "demo" deleted