4.4. Hive メタストアの設定
メータリングは非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Container Platform で非推奨となったか、または削除された主な機能の最新の一覧については、OpenShift Container Platform リリースノートの 非推奨および削除された機能セクションを参照してください。
Hive メタストアは、Presto および Hive で作成されるデータベーステーブルに関するすべてのメタデータを保管します。デフォルトで、メタストアはこの情報を、Pod に割り当てられる永続ボリュームのローカルの組み込み Derby データベースに保管します。
通常、Hive メタストアのデフォルト設定は小規模なクラスターで機能しますが、ユーザーは Hive メタストアデータを格納するための専用の SQL データベースを使用することで、クラスターのパフォーマンスを改善したり、ストレージ要件の一部をクラスターから外したりできます。
4.4.1. 永続ボリュームの設定
デフォルトで、Hive が動作するために 1 つの永続ボリュームが必要になります。
hive-metastore-db-data
は、デフォルトで必要となる主な永続ボリューム要求 (PVC) です。この PVC は Hive メタストアによって、テーブル名、列、場所などのテーブルに関するメタデータを保存するために使用されます。Hive メタストアは、Presto および Hive サーバーによって、クエリーの処理時にテーブルメタデータを検索するために使用されます。この要件は、Hive メタストアデータベースに MySQL または PostgreSQL を使用することで削除できます。
インストールするには、Hive メタストアでストレージクラスを使用して動的ボリュームプロビジョニングを有効にし、適切なサイズの永続ボリュームを手動で事前に作成するか、または既存の MySQL または PostgreSQL データベースを使用する必要があります。
4.4.1.1. Hive メタストア用のストレージクラスの設定
hive-metastore-db-data
永続ボリューム要求にストレージクラスを設定し、指定するには、ストレージクラスを MeteringConfig
カスタムリソースに指定します。以下は、class
フィールドが metastore-storage.yaml
ファイルに含まれた storage
セクションのサンプルになります。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
hive:
spec:
metastore:
storage:
# Default is null, which means using the default storage class if it exists.
# If you wish to use a different storage class, specify it here
# class: "null" 1
size: "5Gi"
- 1
- この行のコメントを解除し、
null
を使用するストレージクラスの名前に置き換えます。値null
をそのままにすると、メータリングはクラスターのデフォルトのストレージクラスを使用します。
4.4.1.2. Hive メタストアのボリュームサイズの設定
以下の metastore-storage.yaml
ファイルをテンプレートとして使用し、Hive メタストアのボリュームサイズを設定します。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
hive:
spec:
metastore:
storage:
# Default is null, which means using the default storage class if it exists.
# If you wish to use a different storage class, specify it here
# class: "null"
size: "5Gi" 1
- 1
size
の値を必要な容量に置き換えます。このサンプルファイルは "5Gi" を示しています。
4.4.2. Hive メタストアに MySQL または PostgreSQL を使用する
メータリングのデフォルトインストールは、Hive を Derby という組み込み Java データベースを使用するすように設定します。これは大規模な環境には適していませんが、MySQL または PostgreSQL データベースのいずれかに置き換えることができます。デプロイメントで Hive に MySQL または PostgreSQL データベースが必要な場合は、以下の設定ファイルのサンプルを使用します。
3 つの設定オプションを使用して、Hive メタストアで使用されるデータベースを制御できます (url
、driver
、および secretName
)。
ユーザー名とパスワードで MySQL または Postgres インスタンスを作成します。次に、OpenShift CLI (oc
) または YAML ファイルを使用してシークレットを作成します。このシークレット用に作成する secretName
は、MeteringConfig
オブジェクトリソースの spec.hive.spec.config.db.secretName
フィールドにマップする必要があります。
手順
次に、OpenShift CLI (
oc
) または YAML ファイルを使用してシークレットを作成します。以下のコマンドを使用してシークレットを作成します。
$ oc --namespace openshift-metering create secret generic <YOUR_SECRETNAME> --from-literal=username=<YOUR_DATABASE_USERNAME> --from-literal=password=<YOUR_DATABASE_PASSWORD>
YAML ファイルを使用してシークレットを作成します。以下は例になります。
apiVersion: v1 kind: Secret metadata: name: <YOUR_SECRETNAME> 1 data: username: <BASE64_ENCODED_DATABASE_USERNAME> 2 password: <BASE64_ENCODED_DATABASE_PASSWORD> 3
設定ファイルを作成して、Hive に MySQL または PostgreSQL データベースを使用します。
Hive に MySQL データベースを使用するには、以下の設定ファイルのサンプルを使用します。メータリングでは、MySQL サーバーのバージョン 5.6、5.7、および 8.0 を使用するように内部 Hive メタストアを設定できます。
spec: hive: spec: metastore: storage: create: false config: db: url: "jdbc:mysql://mysql.example.com:3306/hive_metastore" 1 driver: "com.mysql.cj.jdbc.Driver" secretName: "REPLACEME" 2
注記5.6 や 5.7 などの古い MySQL サーバーバージョンで動作するようにメータリングを設定する場合、内部 Hive メタストアを設定する際に
enabledTLSProtocols
JDBC URL パラメーター を追加する必要がある場合があります。spec.hive.config.url
を使用して追加の JDBC パラメーターを渡すことができます。詳細は、MySQL Connector/J 8.0 のドキュメント を参照してください。Hive に PostgreSQL データベースを使用するには、以下のサンプル設定ファイルを使用します。
spec: hive: spec: metastore: storage: create: false config: db: url: "jdbc:postgresql://postgresql.example.com:5432/hive_metastore" driver: "org.postgresql.Driver" username: "REPLACEME" password: "REPLACEME"
spec.hive.config.url
を使用して追加の JDBC パラメーターを渡すことができます。詳細は、PostgreSQL JDBC ドライバーのドキュメント を参照してください。