Skip to content

Latest commit

 

History

History
110 lines (88 loc) · 3.31 KB

automatic_clean_up_data_operation.md

File metadata and controls

110 lines (88 loc) · 3.31 KB

示例 - 数据操作(Data Operation)自动清理

背景介绍

Fluid 提供了一些列通用数据操作(data operation)描述数据预热,数据迁移,弹性伸缩,缓存清理,元数据备份,恢复等操作。类似于Kubernetes Job自动清理机制,我们还提供了针对数据操作完成后的自动清理功能,使用TTL(生存时间)机制限制数据操作的生命周期。本文档将向你简单地展示上述特性的使用。

前提条件

在运行该示例之前,请参考安装文档完成安装,并检查Fluid各组件正常运行:

$ kubectl get pod -n fluid-system
alluxioruntime-controller-5b64fdbbb-84pc6   1/1     Running   0          8h
csi-nodeplugin-fluid-fwgjh                  2/2     Running   0          8h
csi-nodeplugin-fluid-ll8bq                  2/2     Running   0          8h
dataset-controller-5b7848dbbb-n44dj         1/1     Running   0          8h

数据操作自动清理

1.创建示例数据集

配置待创建的Dataset和Runtime对象

$ cat<<EOF >dataset.yaml
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: hbase
spec:
  mounts:
    - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/
      name: hbase
---
apiVersion: data.fluid.io/v1alpha1
kind: AlluxioRuntime
metadata:
  name: hbase
spec:
  replicas: 1
  tieredstore:
    levels:
      - mediumtype: MEM
        path: /dev/shm
        quota: 2Gi
        high: "0.95"
        low: "0.7"
EOF

创建Dataset和Runtime对象

$ kubectl create -f dataset.yaml

等待Dataset和Runtime准备就绪

$ kubectl get datasets hbase

如果看到类似以下结果,说明Dataset和Runtime均已准备就绪:

NAME    UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hbase   1.21GiB          0.00B    2.00GiB          0.0%                Bound      75s

2.创建示例数据操作

这里我们使用数据预热(Dataload)来演示数据操作的自动清理。

配置待创建的DataLoad对象

$ cat <<EOF > dataload.yaml
apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: hbase-dataload
spec:
  dataset:
    name: hbase
    namespace: default
  ttlSecondsAfterFinished: 300
EOF

这里,我们使用spec.ttlSecondsAfterFinished字段来表示数据操作将在作业完成(Complete)或失败(Failed)后的多少秒内被清理,单位为秒(second)。

创建Dataload

$ kubectl apply -f dataload.yaml

观察Dataload状态

$ kubectl get dataload -w 
NAME             DATASET   PHASE       AGE   DURATION
hbase-dataload   hbase     Executing   7s    Unfinished
hbase-dataload   hbase     Complete    29s   7s
hbase-dataload   hbase     Complete    5m29s   7s

$ kubectl get dataload hbase-dataload
Error from server (NotFound): dataloads.data.fluid.io "hbase-dataload" not found

可以看出,在hbase-dataload执行完成后300s后,该dataload将被自动清理。

注意:时间偏差

由于 TTL-after-finished 控制器(Fluid dataset-controller)使用存储在 Data Operation 中的时间戳来确定 TTL 是否已过期,因此该功能对集群中的时间偏差很敏感,这可能导致控制平面在错误的时间清理 Job 对象。设置非零 TTL 时请注意避免这种风险。