4.2. 存储位置

StorageLocation 是一个自定义资源,用于配置 report-operator 存储数据的位置。其中包括从 Prometheus 收集的数据,以及通过生成报告自定义资源所产生的结果。

如果您要在多个位置(如多个 S3 存储桶或 S3 和 HDFS)存储数据,或者需要访问并非由 metering 在 Hive/Presto 中创建的数据库,您只需配置 StorageLocation 即可。这对于大部分用户来说并非强制要求,配置 metering 文档中的内容足以配置所有必要存储组件。

4.2.1. StorageLocation 示例

第一个示例为内置本地存储选项。它被配置为使用 Hive,数据默认保存在 Hive 所配置的使用存储的位置(HDFS、S3 或 ReadWriteMany PVC)。

本地存储示例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: hive
  labels:
    operator-metering: "true"
spec:
  hive: 1
    databaseName: metering 2
    unmanagedDatabase: false 3

1
如果存在 hive,则 StorageLocation 将被配置为通过使用 Hive 服务器创建表来存储数据至 Presto 中。这里只有 databaseName 和 unmanagedDatabase 为必填字段。
2
Hive 中数据库的名称。
3
如果为 true,则 StorageLocation 不会被主动管理,Hive 中预期已存在 databaseName。如果为 false,这将导致 reporting-operator 在 Hive 中创建数据库。

下一示例将 AWS S3 存储桶用于存储。在构造要使用的路径时,前缀会附加至存储桶名称中。

远程存储示例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: example-s3-storage
  labels:
    operator-metering: "true"
spec:
  hive:
    databaseName: example_s3_storage
    unmanagedDatabase: false
    location: "s3a://bucket-name/path/within/bucket" 1

1
(可选)用于数据库的 Presto 和 Hive 的文件系统 URL。可为 hdfs://s3a:// 文件系统 URL。

hive 部分还可指定其他一些可选字段:

  • (可选)defaultTableProperties:包含使用 Hive 创建表的配置选项。
  • (可选)fileFormat:存储至文件系统中的文件的格式。如需选项列表和更多详情,请参阅文件存储格式 Hive 文档
  • (可选)rowFormat:控制 Hive 行格式。该字段控制行的序列化和反序列化方式。更多详情请参阅行格式和 SerDe Hive 文档

4.2.2. 默认 StorageLocation

如果存在 storagelocation.metering.openshift.io/is-default 注解,且该注解在 StorageLocation 资源上被设置为 true,则该资源将成为默认存储资源。任何组件的存储配置选项如果未指定 StorageLocation,则会使用默认存储资源。只能有一个默认存储资源。如果多个资源都存在注解,则会记录一个错误,因为 Operator 无法确定默认值。

默认存储示例

apiVersion: metering.openshift.io/v1
kind: StorageLocation
metadata:
  name: example-s3-storage
  labels:
    operator-metering: "true"
  annotations:
    storagelocation.metering.openshift.io/is-default: "true"
spec:
  hive:
    databaseName: example_s3_storage
    unmanagedDatabase: false
    location: "s3a://bucket-name/path/within/bucket"