watsonx.data 2.0.0 で 構成したキャッシュを削除する (キャッシュ編 その4)

 # はじめに
今回は構成したキャッシュを削除する手順についてご紹介します。

参考文献 (watsonx.data 2.0.0 のマニュアル)
[Enhancing the query performance through caching](https://www.ibm.com/docs/en/watsonx/watsonxdata/2.0.0?topic=administering-enhancing-query-performance-through-caching)

**File list cache については以下の記事をご参照ください。**
[watsonx.data 2.0.0 で File list cache を構成してみた (キャッシュ編 その1)](https://qiita.com/hkanba/items/f59254364bb5ab79360b)

**Data cache については以下の記事をご参照ください。**
[watsonx.data 2.0.0 で Data cache を構成してみた (キャッシュ編 その2)](https://qiita.com/hkanba/items/1ef5bafb7de2e1c59056)

**Fragment result cache については以下の記事をご参照ください。**
[watsonx.data 2.0.0 で Fragment result cache を構成してみた (キャッシュ編 その3)](https://qiita.com/hkanba/items/79fa05a6082f4981c543)


**構成したキャッシュを削除する手順の概要は以下になります。**

1. Prestoのステートフルセットの削除
2. "oc patch"コマンドにより wxdengine カスタム・リソースからキャッシュの設定の削除
3. キャッシュの構成により作成された Persistent Volume Claim (PVC) の削除 (Data cache, Fragment result cache の場合)
4. キャッシュの構成のために作成した Persistent Volume (PV) の削除 (Data cache, Fragment result cache の場合)

本投稿内の Presto は全て Presto (Java) を意味しています。
# キャッシュを削除する手順
**共通の手順**は全てのタイプのキャッシュの削除に共通する手順です。
共通の手順の後に実行する "oc patch"コマンドでは、下記のコマンドでキャッシュを構成する時に指定したプロパティーを全て削除します。**"oc patch" コマンドは statefulset を削除した直後に実行する必要があります。**
```
oc patch wxdengine/<エンジン名> --type='json -p='[{"op": "remove", "path": "/spec/<プロパティー1>"}, {"op": "remove", "path": "/spec/<プロパティー2>"}, ...]'
```
## 共通の手順

### 1.OCPクラスターにログイン
"oc login" コマンドでOCPクラスターにログインします。
### 2.watsonx.data のプロジェクトに変更
作業中のプロジェクトをwatsonx.data がインストールされているプロジェクトに変更します。今回の環境では watsonx.data は 名前スペース zen にインストールされています。
```
$ export PROJECT_CPD_INST_OPERANDS=zen
$ oc project ${PROJECT_CPD_INST_OPERANDS}
```
### 3.キャッシュを構成した Presto のエンジンIDを確認
```
$ oc get wxdengine -o custom-columns='DISPLAY NAME:spec.engineDisplayName,ENGINE ID:metadata.labels.engineName'
DISPLAY NAME   ENGINE ID
presto-01      presto-01
```
### 4.キャッシュを構成した Prestoエンジンのステートフルセットを全て削除
```
$ oc delete statefulset -l engineName=presto-01
statefulset.apps "ibm-lh-lakehouse-presto-01-coordinator-blue" deleted
statefulset.apps "ibm-lh-lakehouse-presto-01-presto-worker" deleted
statefulset.apps "ibm-lh-lakehouse-presto-01-single-blue" deleted
```
## File list cache の削除方法
下記の "oc patch"コマンドで File list cache を削除します。
```
oc patch wxdengine/lakehouse-presto-01 --type='json' -p='[{"op": "remove", "path": "/spec/file_status_cache_expire_time"}, {"op": "remove", "path": "/spec/file_status_cache_tables"}, {"op": "remove", "path": "/spec/file_status_cache_size"}]'
```
## Data cache の削除方法

### ① "oc patch"コマンドで Data cache を削除
下記の "oc patch"コマンドで Data cache を削除します。
```
oc patch wxdengine/lakehouse-presto-01 --type='json' -p='[{"op": "remove", "path": "/spec/cacheStorageClass"}, {"op": "remove", "path": "/spec/cacheStorageSize"}, {"op": "remove", "path": "/spec/cache_alluxio_max_cache_size"}]'
```
### ② PVC を削除
Data cache の構成時に作成された PVC を確認します。
```
$ oc get pvc | grep  ibm-lh-cache-mount
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0   Bound  data-cache-storage-pv2  10Gi  RWO  data-cache-storage   15d
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0       Bound  data-cache-storage-pv3  10Gi  RWO  data-cache-storage   15d
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-1       Bound  data-cache-storage-pv4  10Gi  RWO  data-cache-storage   15d
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-2       Bound  data-cache-storage-pv5  10Gi  RWO  data-cache-storage   15d
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-3       Bound  data-cache-storage-pv6  10Gi  RWO  data-cache-storage   15d
ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4       Bound  data-cache-storage-pv1  10Gi  RWO  data-cache-storage   15d
```
PVC を全て削除します。
```
$ oc delete pvc ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0
persistentvolumeclaim "ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0" deleted
$ oc delete pvc ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0
persistentvolumeclaim "ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0" deleted
.....
$ oc delete pvc ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4
persistentvolumeclaim "ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4" deleted
```
### ③ PV を削除
Data cache を構成する際に作成したPVを確認します。
```
$ oc get pv | grep data-cache
data-cache-storage-pv1   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4       data-cache-storage  15d
data-cache-storage-pv2   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0   data-cache-storage  15d
data-cache-storage-pv3   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0       data-cache-storage  15d
data-cache-storage-pv4   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-1       data-cache-storage  15d
data-cache-storage-pv5   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-2       data-cache-storage  15d
data-cache-storage-pv6   10Gi  RWO   Delete   Failed   wxd/ibm-lh-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-3       data-cache-storage  15d
```
PV を全て削除します。
```
$ oc delete pv data-cache-storage-pv1
persistentvolume "data-cache-storage-pv1" deleted
.....
$ oc delete pv data-cache-storage-pv6
persistentvolume "data-cache-storage-pv6" deleted
```
**PVCとPVの削除は、Prestoエンジンのステートフルセットの削除によりPrestoのPodが削除されたタイミングで実行する必要がありますのでご注意ください。**
## Fragment result cache の削除方法

### ① "oc patch"コマンドで Fragment result cache を削除
下記の "oc patch"コマンドで Fragment result cache を削除します。
```
oc patch wxdengine/lakehouse-presto-01 --type='json' -p='[{"op": "remove", "path": "/spec/fragment_result_cache_enabled"}, {"op": "remove", "path": "/spec/fragment_result_cache_max_cached_entries"}, {"op": "remove", "path": "/spec/fragment_result_cache_ttl"}, {"op": "remove", "path": "/spec/fragment_result_cache_partition_statistics_based_optimization_enabled"}, {"op": "remove", "path": "/spec/fragmentCacheStorageClass"}, {"op": "remove", "path": "/spec/fragmentCacheStorageSize"}]'
```
### ② PVC を削除
Fragment result cache を構成した時に作成された PVC を確認します。
```
$ oc get pvc | grep ibm-lh-fragment-cache-mount
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0   Bound  fragment-cache-storage-pv1   10Gi   RWO   fragment-cache-storage   15d
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0       Bound  fragment-cache-storage-pv2   10Gi   RWO   fragment-cache-storage   15d
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-1       Bound  fragment-cache-storage-pv6   10Gi   RWO   fragment-cache-storage   15d
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-2       Bound  fragment-cache-storage-pv4   10Gi   RWO   fragment-cache-storage   15d
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-3       Bound  fragment-cache-storage-pv3   10Gi   RWO   fragment-cache-storage   15d
ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4       Bound  fragment-cache-storage-pv5   10Gi   RWO   fragment-cache-storage   15d
```
PVC を全て削除します
```
$ oc delete pvc ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0
persistentvolumeclaim "ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0" deleted
$ oc delete pvc ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0
persistentvolumeclaim "ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-0" deleted
.....
$ oc delete pvc ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4
persistentvolumeclaim "ibm-lh-fragment-cache-mount-ibm-lh-lakehouse-presto-01-presto-worker-4" deleted
```
### ③ PV を削除
Fragment result Cache を作成する際に作成したPVを確認します。
```
$ oc get pv | grep fragment-cache
fragment-cache-storage-pv1   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-coordinator-blue-0   fragment-cache-storage   15d
fragment-cache-storage-pv2   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-presto-worker-0       fragment-cache-storage   15d
fragment-cache-storage-pv3   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-presto-worker-3       fragment-cache-storage   15d
fragment-cache-storage-pv4   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-presto-worker-2       fragment-cache-storage   15d
fragment-cache-storage-pv5   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-presto-worker-4       fragment-cache-storage   15d
fragment-cache-storage-pv6   10Gi   RWO   Delete   Failed   wxd/ibm-lh-fragment-cach -mount-ibm-lh-lakehouse-presto-01-presto-worker-1       fragment-cache-storage   15d
```
PV を全て削除します。
```
$ oc delete pv fragment-cache-storage-pv1
persistentvolume "fragment-cache-storage-pv1" deleted
.....
$ oc delete pv fragment-cache-storage-pv6
persistentvolume "fragment-cache-storage-pv6" deleted
```
**PVCとPVはPrestoエンジンのステートフルセットを削除する事により、PrestoのPodが削除されたタイミングで削除する必要がありますのでご注意ください。**
# おわりに
今回は watsonx.data 2.0.0 の Presto に構成したキャッシュを削除する手順についてご紹介しました。
Data cache や Fragment result cache の場合、PVC や PV を全て削除しないと キャッシュを再作成する際に正しく構成できませんので ご注意ください。
watsonx.data 1.1.x でも全く同じ手順でキャッシュを削除する事ができます。