加速Job應用數(shù)據(jù)訪問
Fluid支持在Serverless場景下,通過JindoRuntime優(yōu)化對象存儲的訪問,該訪問支持緩存模式和無緩存模式。本文介紹如何使用無緩存模式加速Job類型數(shù)據(jù)訪問。
前提條件
已創(chuàng)建一個非ContainerOS操作系統(tǒng)的ACK Pro版集群,且集群版本為1.18及以上。具體操作,請參見創(chuàng)建ACK Pro版集群。
重要ack-fluid組件暫不支持在ContainerOS操作系統(tǒng)上使用。
已安裝云原生AI套件并部署ack-fluid組件。
重要若您已安裝開源Fluid,請卸載后再部署ack-fluid組件。
已部署ACK虛擬節(jié)點(Virtual Node)。具體操作,請參見通過部署ACK虛擬節(jié)點組件創(chuàng)建ECI Pod。
已通過kubectl連接Kubernetes集群。具體操作,請參見通過kubectl工具連接集群。
已開通阿里云對象存儲(OSS)服務和存儲空間(Bucket)。具體操作,請參見開通OSS服務和控制臺創(chuàng)建存儲空間。
使用限制
本功能與ACK彈性調度功能沖突,暫不支持同時使用。關于彈性調度功能的更多信息,請參見自定義彈性資源優(yōu)先級調度。
步驟一:上傳測試數(shù)據(jù)到OSS Bucket
步驟二:創(chuàng)建Dataset和JindoRuntime
K8s和OSS環(huán)境配置完成后,您只需要耗費幾分鐘即可完成Dataset和JindoRuntime環(huán)境的部署。
使用以下內容,創(chuàng)建secret.yaml文件。
創(chuàng)建Dataset之前,您可以創(chuàng)建如下YAML文件,保存OSS的
fs.oss.accessKeyId
和fs.oss.accessKeySecret
。apiVersion: v1 kind: Secret metadata: name: access-key stringData: fs.oss.accessKeyId: **** fs.oss.accessKeySecret: ****
執(zhí)行以下命令,部署Secret。
kubectl create -f secret.yaml
使用以下內容,創(chuàng)建resource.yaml文件。
YAML文件中包含以下兩部分信息:
Dataset
:定義遠端存儲數(shù)據(jù)集和UFS的信息。JindoRuntime
:啟動一個JindoFS的集群,提供緩存服務。
apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: serverless-data spec: mounts: - mountPoint: oss://large-model-sh/ name: demo path: / options: fs.oss.endpoint: oss-cn-shanghai.aliyuncs.com encryptOptions: - name: fs.oss.accessKeyId valueFrom: secretKeyRef: name: access-key key: fs.oss.accessKeyId - name: fs.oss.accessKeySecret valueFrom: secretKeyRef: name: access-key key: fs.oss.accessKeySecret accessModes: - ReadWriteMany --- apiVersion: data.fluid.io/v1alpha1 kind: JindoRuntime metadata: name: serverless-data spec: master: disabled: true worker: disabled: true
部分參數(shù)說明如下:
參數(shù)
說明
mountPoint
表示掛載UFS的路徑,路徑格式為
oss://<oss_bucket>/<bucket_dir>
。路徑中不需要包含Endpoint信息。如果您直接訪問Bucket,可以不配置
<bucket_dir>
。fs.oss.endpoint
表示OSS Bucket的Endpoint信息,配置您的公網(wǎng)或私網(wǎng)地址。
配置私網(wǎng)地址可以提高數(shù)據(jù)訪問性能,但是需要您的K8s集群所在區(qū)域和OSS區(qū)域相同。例如您的Bucket在杭州Region,則公網(wǎng)地址為
oss-cn-hangzhou.aliyuncs.com
,私網(wǎng)地址為oss-cn-hangzhou-internal.aliyuncs.com
。fs.oss.accessKeyId
表示OSS Bucket的AK ID信息,有權限訪問Bucket。
fs.oss.accessKeySecret
表示OSS Bucket的AK ID密鑰信息,有權限訪問Bucket。
accessModes
表示支持的讀寫模式。讀寫模式包括
ReadWriteOnce
、ReadOnlyMany
、ReadWriteMany
和ReadWriteOncePod
,默認為ReadOnlyMany
。disabled
Master和Worker都配置為
true
,表示開啟無緩存模式。執(zhí)行以下命令,部署JindoRuntime和Dataset。
kubectl create -f resource.yaml
執(zhí)行以下命令,查看Dataset的部署情況。
kubectl get dataset serverless-data
預期輸出:
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE serverless-data Bound 1d
由預期輸出得到,
PHASE
為Bound
,表示Dataset部署成功。執(zhí)行以下命令,查看JindoRuntime的部署情況。
kubectl get jindo serverless-data
預期輸出:
NAME MASTER PHASE WORKER PHASE FUSE PHASE AGE serverless-data Ready 3m41s
由預期輸出得到,
FUSE
為Ready
,表示JindoRuntime部署成功。
步驟三:創(chuàng)建Job類型應用容器訪問OSS
您可以通過創(chuàng)建應用容器來使用JindoFS加速服務,或者提交機器學習作業(yè)來體驗相關功能。本文以創(chuàng)建Job類型應用容器訪問OSS為例進行說明。
使用以下內容,創(chuàng)建job.yaml文件。
apiVersion: batch/v1 kind: Job metadata: name: demo-app spec: template: metadata: labels: alibabacloud.com/fluid-sidecar-target: eci alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-use-specs: ecs.g7.4xlarge spec: containers: - name: demo image: debian:buster args: - -c - du -sh /data && time cp -r /data/ /tmp command: - /bin/bash volumeMounts: - mountPath: /data name: demo restartPolicy: Never volumes: - name: demo persistentVolumeClaim: claimName: serverless-data backoffLimit: 4
執(zhí)行以下命令,創(chuàng)建應用容器。
kubectl create -f job.yaml
執(zhí)行以下命令,查看啟動日志。
kubectl logs demo-app--1-5fr74 -c demo
預期輸出:
real 0m23.644s user 0m0.004s sys 0m1.036s
由預期輸出得到,文件的拷貝時間
real
為0m23.644s
。拷貝時間取決于網(wǎng)絡延時和帶寬,如果您希望加速數(shù)據(jù)訪問,請參見使用緩存模式加速Job應用數(shù)據(jù)訪問。
步驟四:清理環(huán)境
當您不再使用數(shù)據(jù)訪問功能時,請及時清理環(huán)境。
執(zhí)行以下命令,刪除應用容器。
kubectl delete job demo-app
執(zhí)行以下命令,刪除Dataset。
kubectl delete dataset serverless-data