全部产品
Search
文档中心

Container Service for Kubernetes:Perbarui Dataset secara Berkala menggunakan pekerjaan DataLoad

更新时间:Nov 11, 2025

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.

    Penting
    • Jika 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

  1. Unduh data uji dengan menjalankan perintah berikut.

    wget https://archive.apache.org/dist/hbase/2.5.2/RELEASENOTES.md
  2. Instal ossutil dan buat bucket. Untuk informasi selengkapnya, lihat Instal ossutil.

  3. 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

  1. Buat file mySecret.yaml untuk menyimpan accessKeyId dan accessKeySecret guna 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.
  2. Jalankan perintah berikut untuk membuat Secret.

    kubectl create -f mySecret.yaml

    Output yang diharapkan:

    secret/mysecret created
  3. Buat file dataset.yaml untuk membuat Dataset.

    Klik untuk melihat contoh 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

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    Dataset

    mountPoint

    oss://<oss_bucket>/<path> menentukan path tempat sistem file dasar (UFS) dipasang. Path ini tidak perlu mencakup informasi endpoint.

    fs.oss.endpoint

    Titik akhir bucket OSS. Anda dapat menggunakan titik akhir publik atau privat.

    accessModes

    Mode akses Dataset.

    JindoRuntime

    replicas

    Jumlah node pekerja dalam kluster JindoFS.

    mediumtype

    Jenis media cache. JindoFS mendukung HDD, SSD, dan MEM. Anda dapat menentukan salah satu jenis ini saat membuat JindoRuntime.

    path

    Path penyimpanan. Hanya satu path yang didukung. Jika Anda mengatur mediumtype ke MEM, Anda harus menentukan path lokal untuk menyimpan file seperti log.

    quota

    Kapasitas cache maksimum dalam GB. Anda dapat mengonfigurasi kapasitas cache berdasarkan ukuran data di UFS.

    high

    Watermark tinggi untuk kapasitas penyimpanan.

    low

    Watermark rendah untuk kapasitas penyimpanan.

    fuse.args

    Parameter mount opsional untuk klien FUSE. Gunakan parameter ini sesuai dengan mode akses Dataset.

    • Jika mode akses adalah ReadOnlyMany, aktifkan kernel_cache untuk menggunakan cache kernel guna mengoptimalkan performa baca. Anda dapat mengatur timeout untuk attr_timeout (cache atribut file), entry_timeout (cache pencarian nama file), dan negative_timeout (cache pencarian nama file gagal). Nilai default untuk semuanya adalah 7200 detik.

    • Jika mode akses adalah ReadWriteMany, gunakan konfigurasi default. Parameter diatur sebagai berikut:

      - -oauto_cache

      - -oattr_timeout=0

      - -oentry_timeout=0

      - -onegative_timeout=0

      Catatan

      Gunakan auto_cache untuk memastikan cache dibatalkan jika ukuran file atau waktu modifikasi berubah. Atur semua nilai timeout menjadi 0.

  4. Deploy dataset.yaml dengan menjalankan perintah berikut untuk membuat JindoRuntime dan Dataset.

    kubectl create -f dataset.yaml

    Output yang diharapkan:

    dataset.data.fluid.io/demo created
    jindoruntime.data.fluid.io/demo created
  5. Periksa status Dataset dengan menjalankan perintah berikut.

    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

Langkah 3: Buat pekerjaan DataLoad terjadwal

  1. Buat file dataload.yaml.

    Klik untuk melihat contoh YAML

    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.

    Parameter

    Deskripsi

    dataset

    Nama dan namespace Dataset untuk pekerjaan DataLoad.

    policy

    Kebijakan eksekusi. Nilai yang valid: Once dan Cron. Contoh ini membuat pekerjaan DataLoad terjadwal.

    • Once: Pekerjaan hanya dijalankan sekali.

    • Cron: Pekerjaan dijalankan sesuai jadwal.

    schedule

    Jadwal pekerjaan DataLoad. Nilai pada field .spec.schedule mengikuti sintaks Cron. Untuk informasi selengkapnya, lihat Sintaks jadwal Cron.

    Untuk informasi selengkapnya tentang konfigurasi lanjutan untuk pekerjaan DataLoad, lihat file konfigurasi berikut:

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: cron-dataload
    spec:
      dataset:
        name: demo
        namespace: default
      policy: Cron # Kebijakan eksekusi untuk pekerjaan DataLoad. Nilai yang valid: [Once, Cron].
      schedule: * * * * * # Field ini hanya berlaku ketika policy diatur ke Cron.
    	loadMetadata: true # Menyinkronkan metadata sebelum pekerjaan DataLoad dijalankan.
      target: # Target pekerjaan DataLoad. Anda dapat menentukan beberapa target.
        - path: <path1> # Path tempat pekerjaan DataLoad dijalankan.
          replicas: 1 # Jumlah replika yang di-cache.
        - path: <path2>
          replicas: 2
  2. Deploy dataload.yaml dengan menjalankan perintah berikut untuk membuat pekerjaan DataLoad.

    kubectl apply -f dataload.yaml

    Output yang diharapkan:

    dataload.data.fluid.io/cron-dataload created
  3. Periksa status pekerjaan DataLoad dengan menjalankan perintah berikut.

    kubectl get dataload

    Ketika PHASE bernilai Complete, data telah dimuat. Anda kemudian dapat melanjutkan ke langkah berikutnya.

    NAME            DATASET   PHASE      AGE   DURATION
    cron-dataload   demo      Complete   68s   8s
  4. Periksa status terkini Dataset dengan menjalankan perintah berikut.

    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

    Output menunjukkan bahwa semua file dari OSS telah dimuat ke dalam cache.

Langkah 4: Buat pod aplikasi untuk mengakses data di OSS

  1. Buat file app.yaml untuk menggunakan pod aplikasi guna mengakses file RELEASENOTES.md.

    Klik untuk melihat contoh 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. Buat pod aplikasi dengan menjalankan perintah berikut.

    kubectl create -f app.yaml

    Output yang diharapkan:

    pod/nginx created
  3. Setelah pod aplikasi siap, lihat data di OSS dengan menjalankan perintah berikut.

    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 string "hello, crondataload." ke file RELEASENOTES.md dengan menjalankan perintah berikut.

    echo "hello, crondataload." >> RELEASENOTES.md
  5. Unggah ulang file RELEASENOTES.md ke OSS dengan menjalankan perintah berikut.

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

    Tekan y untuk 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) elapsed
  6. Periksa status pekerjaan DataLoad dengan menjalankan perintah berikut.

    kubectl describe dataload cron-dataload

    Output 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
      ...
  7. Periksa status terkini Dataset dengan menjalankan perintah berikut.

    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

    Output menunjukkan bahwa file yang diperbarui telah dimuat ke dalam cache.

  8. Lihat file yang diperbarui di pod aplikasi dengan menjalankan perintah berikut.

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

    Output 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.yaml

Output yang diharapkan:

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