Skip to content

Latest commit

 

History

History
184 lines (157 loc) · 7 KB

dataset_scaling.md

File metadata and controls

184 lines (157 loc) · 7 KB

Demo - Cache Runtime Manually Scaling

Prerequisites

  • Fluid(version >= 0.5.0)

Please refer to the Fluid installation to complete the installation

Set Up Workspace

$ mkdir <any-path>/dataset_scale
$ cd <any-path>/dataset_scale

Running

Create Dataset and AlluxioRuntime resource objects

$ 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

In the above example, we set AlluxioRuntime.spec.replicas to 1, which means we will start an Alluxio cluster with one worker to cache the data in the dataset.

$ kubectl create -f dataset.yaml
dataset.data.fluid.io/hbase created
alluxioruntime.data.fluid.io/hbase created

After the Alluxio cluster has started normally, we can see that the Dataset and AlluxioRuntime created before are in the following state:

Status of the Alluxio components:

$ kubectl get pod
NAME                 READY   STATUS    RESTARTS   AGE
hbase-master-0       2/2     Running   0          3m50s
hbase-worker-0       2/2     Running   0          3m15s

Status of the Dataset:

$ kubectl get dataset hbase
NAME    UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hbase   544.77MiB        0.00B    2.00GiB          0.0%                Bound   3m28s

Status of the AlluxioRuntime:

$ kubectl get alluxioruntime hbase -o wide
NAME    READY MASTERS   DESIRED MASTERS   MASTER PHASE   READY WORKERS   DESIRED WORKERS   WORKER PHASE   READY FUSES   DESIRED FUSES   FUSE PHASE   AGE
hbase   1               1                 Ready          1               1                 Ready          0             0               Ready        4m55s

Scale-out Cache Runtime

$ kubectl scale alluxioruntime hbase --replicas=2
alluxioruntime.data.fluid.io/hbase scaled

Directly use the kubectl scale command to complete the scale-out of Cache Runtime. After successfully executing the above command and waiting for a while, you can see that the status of both Dataset and AlluxioRuntime has changed.

A new Alluxio Worker and the corresponding Alluxio Fuse component have been successfully started:

$ kubectl get pod
NAME                 READY   STATUS    RESTARTS   AGE
hbase-master-0       2/2     Running   0          13m
hbase-worker-1       2/2     Running   0          6m49s
hbase-worker-0       2/2     Running   0          13m

The Cache Capacity in the Dataset changes from 2.00GiB to 4.00GiB, indicating an increase in the available cache capacity of the Dataset:

$ kubectl get dataset hbase
NAME    UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hbase   544.77MiB        0.00B    4.00GiB          0.0%                Bound   15m
$ kubectl get alluxioruntime hbase -o wide
NAME    READY MASTERS   DESIRED MASTERS   MASTER PHASE   READY WORKERS   DESIRED WORKERS   WORKER PHASE   READY FUSES   DESIRED FUSES   FUSE PHASE   AGE
hbase   1               1                 Ready          2               2                 Ready          0             0               Ready        17m

Check the AlluxioRuntime description for the latest scaling information:

$ kubectl describe alluxioruntime hbase
...
  Conditions:
    ...
    Last Probe Time:                2021-04-23T07:54:03Z
    Last Transition Time:           2021-04-23T07:54:03Z
    Message:                        The workers are scale out.
    Reason:                         Workers scaled out
    Status:                         True
    Type:                           WorkersScaledOut
...
Events:
  Type    Reason   Age   From            Message
  ----    ------   ----  ----            -------
  Normal  Succeed  2m2s  AlluxioRuntime  Runtime scaled out. current replicas: 2, desired replicas: 2.

Scale-in Cache Runtime

Similar to scale-out, the number of workers in the Runtime can also scale-in using kubectl scale.

$ kubectl scale alluxioruntime hbase --replicas=1
alluxioruntime.data.fluid.io/hbase scaled

After successful execution of the above command, if no application is trying to access the dataset currently, then the Cache Runtime scale-in will be triggered.

Runtime Workers that exceed the specified number of replicas will be stopped:

NAME                 READY   STATUS        RESTARTS   AGE
hbase-master-0       2/2     Running       0          22m
hbase-worker-1       2/2     Terminating   0          17m32s
hbase-worker-0       2/2     Running       0          21m

Dataset's cache capacity (Cache Capacity) is returned to 2.00GiB:

$ kubectl get dataset hbase
NAME    UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hbase   544.77MiB        0.00B    2.00GiB          0.0%                Bound   30m

Note: In the current version of Fluid, there is a delay of a few minutes in the change of the Cache Capacity property when scale-in, so you may not be able to observe the change of this property quickly.

The Ready Workers and Ready Fuses fields in AlluxioRuntime also become 1:

$ kubectl get alluxioruntime hbase -o wide
NAME    READY MASTERS   DESIRED MASTERS   MASTER PHASE   READY WORKERS   DESIRED WORKERS   WORKER PHASE   READY FUSES   DESIRED FUSES   FUSE PHASE   AGE
hbase   1               1                 Ready          1               1                 Ready          0             0               Ready        30m

Check the AlluxioRuntime description for the latest scaling information:

$ kubectl describe alluxioruntime hbase
...
  Conditions:
    ...
    Last Probe Time:                2021-04-23T08:00:55Z
    Last Transition Time:           2021-04-23T08:00:55Z
    Message:                        The workers scaled in.
    Reason:                         Workers scaled in
    Status:                         True
    Type:                           WorkersScaledIn
...
Events:
  Type     Reason               Age    From            Message
  ----     ------               ----   ----            -------
  Normal   Succeed              6m56s  AlluxioRuntime  Alluxio runtime scaled out. current replicas: 2, desired replicas: 2.
  Normal   Succeed              4s     AlluxioRuntime  Alluxio runtime scaled in. current replicas: 1, desired replicas: 1.

The scaling capability provided by Fluid helps users or cluster administrators to adjust the resources occupied by the dataset cache in a timely manner, reducing the cache capacity of an infrequently used dataset (scale-in) or increasing the cache capacity of a dataset on demand (scale-out) to achieve a more fine-grained resource allocation and improve resource utilization.

Clean your environment

$ kubectl delete -f dataset.yaml