組み込み PostgreSQL¶
Denodo 組み込み MPP には、 組み込み Hive メタストア のメタデータを保存する組み込み PostgreSQL が付属しています。
組み込み PostgreSQL は Kubernetes Persistent Volume を使用してメタデータの永続性を保証します。
values.yaml
の postgresql
セクションでは、永続性オプションを構成します。
postgresql:
enabled: true
pvClaim:
annotations:
# Add the following annotation if you want to preserve
# Embedded MPP metadata after cluster removal
"helm.sh/resource-policy": keep
storage: 5Gi
storageClassName: ""
pvClaim.annotations: 組み込み PostgreSQL で使用されている永続ボリューム要求のアノテーション。
クラスタが削除された後も Denodo 組み込み MPP メタデータを保持するには、以下のアノテーションを追加する必要があります。
"helm.sh/resource-policy": keep
pvClaim.storage: 組み込み PostgreSQL で使用可能なストレージ。
デフォルトサイズは
5Gi
ですが、これはメタデータのサイズに影響を及ぼすので、シナリオおよびクエリするデータ量に合わせて構成する必要があります。pvClaim.storageClassName: 「 永続ボリューム 」のセクションを参照してください。
永続ボリューム¶
組み込み PostgreSQL は、永続ボリュームを使用して、Postgres データを保存し、永続性を保証します。
ただし、Denodo 組み込み MPP のデプロイには、 永続ボリュームオブジェクトは存在しません 。なぜなら、このデプロイをインスタンス化したユーザーが永続ボリュームを作成する権限を持っていない可能性があるからです。このデプロイには永続ボリューム要求が含まれており、これをストレージクラスとともに使用することによって動的に永続ボリュームを要求します。したがって、少なくとも 1 つのストレージクラスをクラスタに定義する必要があります。
Denodo 組み込み MPP のストレージクラスを構成するには、以下の 2 つの選択肢があります。
実際の定義
pvClaim.storageClassName: ""
を使用します。これにより、デフォルトのストレージクラスの永続ボリュームが、自動的にクラスタにプロビジョニングされます。多くのクラスタ環境には、デフォルトストレージクラスがインストールされています。または、Kubernetes 管理者がストレージクラスを作成できます。pvClaim.storageClassName:
フィールドにストレージクラス名を指定します。
kubectl
を使用して、ストレージクラスオブジェクトをチェックします。
# sc is an acronym for StorageClass
kubectl get sc
NAME PROVISIONER AGE
standard (default) kubernetes.io/gce-pd 1d
gold kubernetes.io/gce-pd 1d
デフォルトストレージクラスは (default)
で示されます。
バックアップ¶
Denodo 組み込み MPP が利用するメタデータ (テーブル定義) を失わないように、組み込み PostgreSQL の永続ボリュームのバックアップ戦略を定義する必要があります。
その方法は、ストレージプロバイダーに応じてさまざまな方法から選択できます。
組み込み PostgreSQL データをバックアップする 1 つの方法は、それをダンプすることです。このダンプにより、SQL コマンドを含むテキストファイルが生成されます。これを組み込み PostgreSQL にフィードバックすると、データベースがダンプしたときと同じ状態で再作成されます。
kubectl exec <PostgreSQL Pod> -- bash -c "PGPASSWORD=hive pg_dump -c -U hive -h localhost metastore" > database.sql
cat database.sql | kubectl exec -i <PostgreSQL Pod> -- bash -c "PGPASSWORD=hive psql -U hive -h localhost -d metastore"
Kubernetes の CPU とメモリの管理¶
Kubernetes は、CPU とメモリに対する リソースの要求と制限事項 に基づいて、ノード間でポッドをスケジュールします。コンテナーポッドが requests で特定の値の CPU やメモリを要求した場合、Kubernetes は、それらのリソースを保証できるノードにのみ、そのポッドをスケジュールします。一方、limits は、コンテナーポッドが使用するリソースが決して一定値を超えないことを保証します。
postgresql:
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 1
memory: 1Gi
resources
は、Kubernetes クラスタ管理者が選択できるように、コメントアウトされています。