Fluid adalah mesin pengatur dan akselerator dataset terdistribusi sumber terbuka yang native untuk Kubernetes, dirancang untuk aplikasi intensif data dalam skenario cloud-native. Fluid memungkinkan visibilitas dataset, skalabilitas elastis, dan migrasi data dengan mengelola serta menjadwalkan runtime cache yang mendasarinya. Topik ini menggunakan JindoFS sebagai contoh untuk menunjukkan cara menjadwalkan pemuatan data.
Prasyarat
Anda telah membuat Container Service for Kubernetes (ACK) managed cluster Pro Edition versi 1.18 atau yang lebih baru. Untuk informasi selengkapnya, lihat Buat ACK managed cluster Pro Edition.
Suite AI cloud-native telah diinstal, dan komponen ack-fluid telah dideploy.
PentingJika Anda telah menginstal Fluid sumber terbuka, Anda harus menguninstall-nya sebelum mendeploy komponen ack-fluid.
Pastikan bahwa versi ack-fluid adalah 1.0.3.
Jika Anda belum menginstal suite AI cloud-native, Anda dapat mengaktifkan Fluid selama proses instalasi. Untuk informasi selengkapnya, lihat Instal suite AI cloud-native.
Jika suite AI cloud-native telah diinstal, masuk ke Konsol ACK dan deploy ack-fluid dari halaman Cloud-native AI Suite.
Klien kubectl telah terhubung ke kluster ACK Pro. Untuk informasi selengkapnya, lihat Hubungkan ke kluster menggunakan kubectl.
Langkah 1: Siapkan data di bucket OSS
Unduh data uji dengan menjalankan perintah berikut.
wget https://archive.apache.org/dist/hbase/2.5.2/RELEASENOTES.mdInstal ossutil dan buat bucket. Untuk informasi selengkapnya, lihat Instal ossutil.
Unggah data uji ke bucket OSS dengan menjalankan perintah berikut:
ossutil64 cp RELEASENOTES.md oss://<bucket>/<path>/RELEASENOTES.md
Langkah 2: Buat Dataset dan JindoRuntime
Buat file
mySecret.yamluntuk menyimpanaccessKeyIddanaccessKeySecretguna mengakses OSS. Berikut contoh YAML-nya.apiVersion: v1 kind: Secret metadata: name: mysecret stringData: fs.oss.accessKeyId: ****** # Masukkan ID AccessKey Anda. fs.oss.accessKeySecret: ****** # # Masukkan Rahasia AccessKey Anda.Jalankan perintah berikut untuk membuat Secret.
kubectl create -f mySecret.yamlOutput yang diharapkan:
secret/mysecret createdBuat file
dataset.yamluntuk membuat Dataset.Deploy
dataset.yamldengan menjalankan perintah berikut untuk membuat JindoRuntime dan Dataset.kubectl create -f dataset.yamlOutput yang diharapkan:
dataset.data.fluid.io/demo created jindoruntime.data.fluid.io/demo createdPeriksa status Dataset dengan menjalankan perintah berikut.
kubectl get datasetOutput yang diharapkan:
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE demo 588.90KiB 0.00B 10.00GiB 0.0% Bound 2m7s
Langkah 3: Buat pekerjaan DataLoad terjadwal
Buat file
dataload.yaml.Deploy
dataload.yamldengan menjalankan perintah berikut untuk membuat pekerjaan DataLoad.kubectl apply -f dataload.yamlOutput yang diharapkan:
dataload.data.fluid.io/cron-dataload createdPeriksa status pekerjaan DataLoad dengan menjalankan perintah berikut.
kubectl get dataloadKetika
PHASEbernilaiComplete, data telah dimuat. Anda kemudian dapat melanjutkan ke langkah berikutnya.NAME DATASET PHASE AGE DURATION cron-dataload demo Complete 68s 8sPeriksa status terkini Dataset dengan menjalankan perintah berikut.
kubectl get datasetOutput yang diharapkan:
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE demo 588.90KiB 588.90KiB 10.00GiB 100.0% Bound 5m50sOutput menunjukkan bahwa semua file dari OSS telah dimuat ke dalam cache.
Langkah 4: Buat pod aplikasi untuk mengakses data di OSS
Buat file
app.yamluntuk menggunakan pod aplikasi guna mengakses fileRELEASENOTES.md.Buat pod aplikasi dengan menjalankan perintah berikut.
kubectl create -f app.yamlOutput yang diharapkan:
pod/nginx createdSetelah pod aplikasi siap, lihat data di OSS dengan menjalankan perintah berikut.
kubectl exec -it nginx -- ls -lh /dataOutput yang diharapkan:
total 589K -rwxrwxr-x 1 root root 589K Jul 31 04:20 RELEASENOTES.mdTambahkan string
"hello, crondataload."ke fileRELEASENOTES.mddengan menjalankan perintah berikut.echo "hello, crondataload." >> RELEASENOTES.mdUnggah ulang file
RELEASENOTES.mdke OSS dengan menjalankan perintah berikut.ossutil64 cp RELEASENOTES.md oss://<bucket-name>/<path>/RELEASENOTES.mdTekan
yuntuk mengonfirmasi. Output yang diharapkan ditunjukkan di bawah ini: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) elapsedPeriksa status pekerjaan DataLoad dengan menjalankan perintah berikut.
kubectl describe dataload cron-dataloadOutput yang diharapkan:
... 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 # Waktu penjadwalan terakhir pekerjaan DataLoad. Last Successful Time: 2023-08-24T06:44:08Z # Waktu penyelesaian terakhir pekerjaan DataLoad. Phase: Complete ...Periksa status terkini Dataset dengan menjalankan perintah berikut.
kubectl get datasetOutput yang diharapkan:
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE demo 588.90KiB 1.15MiB 10.00GiB 100.0% Bound 10mOutput menunjukkan bahwa file yang diperbarui telah dimuat ke dalam cache.
Lihat file yang diperbarui di pod aplikasi dengan menjalankan perintah berikut.
kubectl exec -it nginx -- tail /data/RELEASENOTES.mdOutput yang diharapkan:
hello, crondataload.Output menunjukkan bahwa pod aplikasi dapat mengakses file yang diperbarui.
(Opsional) Langkah 5: Bersihkan lingkungan
Jika Anda tidak lagi memerlukan fitur akselerasi data, Anda dapat membersihkan lingkungan.
Hapus JindoRuntime dan pod aplikasi dengan menjalankan perintah berikut.
kubectl delete -f app.yaml
kubectl delete -f dataset.yamlOutput yang diharapkan:
pod "nginx" deleted
dataset.data.fluid.io "demo" deleted
jindoruntime.data.fluid.io "demo" deleted