All Products
Search
Document Center

Container Service for Kubernetes:Jadwalkan pembaruan set data berkala dengan DataLoad

Last Updated:Mar 27, 2026

Saat data sumber di OSS berubah secara berkala, Pod aplikasi yang mengandalkan cache JindoRuntime dapat menyajikan data lama antara penyegaran cache. Gunakan pekerjaan DataLoad terjadwal untuk menarik data terbaru dari OSS ke dalam cache JindoRuntime secara otomatis—tanpa me-restart Pod aplikasi. Topik ini menggunakan JindoFS sebagai contoh.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Kluster ACK yang dikelola Edisi Pro versi 1.18 atau lebih baru. Untuk informasi selengkapnya, lihat Buat Kluster ACK yang Dikelola Edisi Pro.

  • Suite AI cloud-native telah diinstal dengan komponen ack-fluid (versi 1.0.3) dideploy.

    Penting

    Jika Anda telah menginstal Fluid open-source, uninstal terlebih dahulu sebelum mendeploy ack-fluid. Untuk menginstal ack-fluid, lihat Instal suite AI cloud-native, atau deploy dari halaman Cloud-native AI Suite di Konsol ACK.

  • kubectl dikonfigurasi untuk terhubung ke kluster Anda. Untuk informasi selengkapnya, lihat Hubungkan ke kluster menggunakan tool kubectl.

  • ossutil diinstal dan bucket OSS telah dibuat. Untuk informasi selengkapnya, lihat Instal ossutil.

Langkah 1: Siapkan data di bucket OSS

  1. Unduh file uji.

    wget https://archive.apache.org/dist/hbase/2.5.2/RELEASENOTES.md
  2. Unggah file tersebut ke bucket OSS Anda.

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

Langkah 2: Buat Dataset dan JindoRuntime

  1. Buat file bernama mySecret.yaml dengan konten berikut untuk menyimpan kredensial OSS Anda.

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    stringData:
      fs.oss.accessKeyId: ****** # Masukkan ID AccessKey Anda.
      fs.oss.accessKeySecret: ****** # Masukkan rahasia AccessKey Anda.
  2. Buat Secret tersebut.

    kubectl create -f mySecret.yaml

    Output yang diharapkan:

    secret/mysecret created
  3. Buat file bernama dataset.yaml dengan konten berikut.

    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

    Tabel berikut menjelaskan parameter utama.

    Sumber DayaParameterDeskripsi
    DatasetmountPointPath ke sistem file dasar (UFS), dalam format oss://<bucket>/<path>. Path ini tidak mencakup informasi endpoint.
    Datasetfs.oss.endpointEndpoint bucket OSS. Endpoint publik maupun pribadi didukung.
    DatasetaccessModesMode akses Dataset.
    JindoRuntimereplicasJumlah node pekerja di kluster JindoFS.
    JindoRuntimemediumtypeMedia penyimpanan cache. Nilai yang valid: HDD, SSD, MEM.
    JindoRuntimepathPath penyimpanan lokal. Jika mediumtype adalah MEM, tentukan path lokal untuk file seperti log.
    JindoRuntimequotaKapasitas cache maksimum. Atur berdasarkan ukuran data di UFS.
    JindoRuntimehighWatermark tinggi untuk kapasitas penyimpanan cache.
    JindoRuntimelowWatermark rendah untuk kapasitas penyimpanan cache.
    JindoRuntimefuse.argsParameter mount klien FUSE opsional. Konfigurasi bergantung pada mode akses Dataset:
    - ReadOnlyMany: Aktifkan kernel_cache untuk menggunakan cache kernel demi performa baca. Atur attr_timeout (cache atribut file), entry_timeout (cache pencarian nama file), dan negative_timeout (cache pencarian nama file gagal). Nilai default untuk semuanya: 7200 detik.
    - ReadWriteMany: Gunakan konfigurasi default: -oauto_cache, -oattr_timeout=0, -oentry_timeout=0, -onegative_timeout=0. Opsi auto_cache membatalkan cache saat ukuran file atau waktu modifikasi berubah.

  4. Deploy dataset.yaml untuk membuat Dataset dan JindoRuntime.

    kubectl create -f dataset.yaml

    Output yang diharapkan:

    dataset.data.fluid.io/demo created
    jindoruntime.data.fluid.io/demo created
  5. Verifikasi bahwa Dataset siap digunakan.

    kubectl get dataset

    Output yang diharapkan:

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

    Bidang PHASE menampilkan Bound, yang berarti Dataset siap digunakan.

Langkah 3: Buat pekerjaan DataLoad terjadwal

Secara default, pekerjaan DataLoad memuat semua data dalam Dataset target. Untuk kontrol detail halus—seperti hanya memuat path tertentu atau menyinkronkan metadata sebelum memuat—lihat Konfigurasi DataLoad lanjutan.

DataLoad mendukung dua kebijakan eksekusi:

  • Once: Pekerjaan hanya dijalankan sekali.

  • Cron: Pekerjaan dijalankan sesuai jadwal berulang.

  1. Buat file bernama dataload.yaml dengan konten berikut.

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

    Tabel berikut menjelaskan parameter-parameter tersebut.

    ParameterDeskripsi
    datasetNama dan namespace Dataset yang akan dimuat.
    policyKebijakan eksekusi. Atur ke Cron untuk pekerjaan terjadwal.
    scheduleEkspresi cron untuk jadwal pekerjaan. Untuk informasi selengkapnya, lihat Sintaks jadwal Cron.
  2. Deploy pekerjaan DataLoad.

    kubectl apply -f dataload.yaml

    Output yang diharapkan:

    dataload.data.fluid.io/cron-dataload created
  3. Periksa status pekerjaan DataLoad.

    kubectl get dataload

    Saat PHASE menampilkan Complete, data telah dimuat ke dalam cache.

    NAME            DATASET   PHASE      AGE   DURATION
    cron-dataload   demo      Complete   68s   8s
  4. Konfirmasi bahwa data telah dicache.

    kubectl get dataset

    Output yang diharapkan:

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

    CACHED PERCENTAGE sebesar 100% mengonfirmasi bahwa semua data dari OSS telah dimuat ke dalam cache.

Langkah 4: Akses data dari Pod aplikasi

  1. Buat file bernama app.yaml dengan konten berikut.

    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. Buat Pod aplikasi.

    kubectl create -f app.yaml

    Output yang diharapkan:

    pod/nginx created
  3. Setelah Pod siap, daftar data di OSS.

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

    Output yang diharapkan:

    total 589K
    -rwxrwxr-x 1 root root 589K Jul 31 04:20 RELEASENOTES.md
  4. Tambahkan baris ke RELEASENOTES.md untuk mensimulasikan pembaruan.

    echo "hello, crondataload." >> RELEASENOTES.md
  5. Unggah ulang file yang telah diperbarui ke OSS.

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

    Saat diminta, masukkan y untuk mengonfirmasi. Output yang diharapkan:

    cp: overwrite "oss://<bucket-name>/<path>/RELEASENOTES.md"(y or N)? y
    Succeed: Total num: 1, size: 21. OK num: 1(upload 1 files).
  6. Tunggu hingga eksekusi DataLoad terjadwal berikutnya, lalu periksa status pekerjaan.

    kubectl describe dataload cron-dataload

    Output yang diharapkan (bidang relevan):

    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 pekerjaan DataLoad terakhir.
      Last Successful Time:    2023-08-24T06:44:08Z # Waktu penyelesaian pekerjaan DataLoad terakhir.
      Phase:                   Complete
  7. Konfirmasi bahwa file yang diperbarui telah dicache.

    kubectl get dataset

    Output yang diharapkan:

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

    Nilai CACHED meningkat, mencerminkan file yang diperbarui telah dimuat ke dalam cache.

  8. Verifikasi bahwa Pod aplikasi dapat membaca konten yang diperbarui.

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

    Output yang diharapkan:

    hello, crondataload.

Konfigurasi DataLoad lanjutan

Konfigurasi berikut memungkinkan Anda mengontrol perilaku DataLoad di luar pengaturan default.

Sinkronkan metadata sebelum memuat

Saat file di OSS berubah, JindoFS mungkin menyajikan data lama karena tampilan metadatanya tidak sinkron. Atur loadMetadata: true untuk menyinkronkan metadata sebelum pekerjaan DataLoad dijalankan.

spec:
  ...
  loadMetadata: true

Muat hanya path tertentu

Secara default, DataLoad memuat semua data dalam Dataset. Untuk memuat hanya sebagian, tentukan satu atau beberapa path target.

spec:
  ...
  target:
    - path: <path1>
      replicas: 1
    - path: <path2>
      replicas: 2

Bidang replicas di bawah setiap target menetapkan jumlah replika cache untuk path tersebut.

Konfigurasi lanjutan gabungan

Contoh berikut menunjukkan semua bidang lanjutan secara bersamaan sebagai referensi.

apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: cron-dataload
spec:
  dataset:
    name: demo
    namespace: default
  policy: Cron
  schedule: "* * * * *"
  loadMetadata: true
  target:
    - path: <path1>
      replicas: 1
    - path: <path2>
      replicas: 2

(Opsional) Bersihkan

Jika Anda tidak lagi memerlukan pengaturan akselerasi data ini, hapus Pod aplikasi dan Dataset.

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

Output yang diharapkan:

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