元数据服务

最近更新时间:2026-06-11 14:25:30

我的收藏
为了让作业、数据探索等不同场景共用同一套库表元数据,避免在每个 Flink 作业里重复 `CREATE TABLE`,流计算 Oceanus 提供与独享集群、共享集群对等的元数据服务(HiveMetastore,以下简称 HMS),可在已有集群上一键开通,并通过下载的 `hive-hms-***.jar` (包含 hive-site.xml) 直接接入 Flink 作业的 HiveCatalog。
目前支持在集群上开通元数据服务,集群组下至多创建 1 套元数据服务。

注意事项

1. 一个集群组(ClusterGroup)有且仅能创建 1 套元数据服务;如需重新创建,请先在元数据服务页签执行删除。
2. 删除元数据服务不会自动停止引用 HMS 的作业,请在删除前确认下游作业已切换或停止,以免触发作业异常告警。

操作步骤

1. 计算资源 > 进入目标集群页面 > 集群服务,开启元数据服务,开启所需要的资源将从集群的可用 CU 数中扣除。
2. 在弹出面板中填写以下配置项,单击确定后元数据服务进入初始化中状态,预计 5~10 分钟后变为运行中
参数
描述
CPU
HMS 容器 CPU 规格,建议不低于 1 核
内存
HMS 容器内存规格,建议不低于 4 GB
数量
副本数,默认 1;设置为 2 表示双副本
Warehouse 地址
HMS 默认数据仓库路径,使用 COS 桶路径
高级参数
如果 Warehouse 地址 是元数据加速桶时,需要填写以下参数:
fs.AbstractFileSystem.ofs.impl: com.qcloud.chdfs.fs.CHDFSDelegateFSAdapter
fs.ofs.impl: com.qcloud.chdfs.fs.CHDFSHadoopFileSystemAdapter
fs.ofs.bucket.region: <YourRegion>
fs.ofs.user.appid: <YourAppId>
fs.ofs.tmp.cache.dir: /tmp/chdfs/
fs.ofs.upload.flush.flag: true
3. 下载配置文件 hive-hms-***.jar。
其中包含 hive-site.xml 配置示例:
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://ip:9083</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>cosn://oceanus-warehouse-xxxx/hms/warehouse</value>
</property>
</configuration>

Flink SQL 作业接入示例

前提:已开通元数据服务并下载 hive-hms-***.jar。
CREATE CATALOG hive_catalog WITH (
'type' = 'hive',
'default-database' = 'default'
);

USE CATALOG hive_catalog;

CREATE DATABASE IF NOT EXISTS testdb2;

USE testdb2;

CREATE TABLE IF NOT EXISTS hive_sink_0529 (
`id` INT,
`name` STRING,
`amount` DOUBLE,
`dt` STRING
) PARTITIONED BY (`dt`) WITH (
'connector' = 'hive',
'sink.partition-commit.trigger' = 'partition-time',
'sink.partition-commit.delay' = '1 min',
'sink.partition-commit.policy.kind' = 'metastore,success-file'
);

USE CATALOG default_catalog;
USE default_database;

CREATE TABLE datagen_source (
`id` INT,
`name` STRING,
`amount` DOUBLE,
`dt` AS DATE_FORMAT(CURRENT_TIMESTAMP, 'yyyy-MM-dd')
) WITH (
'connector' = 'datagen',
'rows-per-second' = '10',
'fields.id.kind' = 'sequence',
'fields.id.start' = '1',
'fields.id.end' = '1000000',
'fields.name.length' = '8',
'fields.amount.min' = '1.0',
'fields.amount.max' = '1000.0'
);

INSERT INTO hive_catalog.testdb2.hive_sink_0529
SELECT id, name, amount, dt
FROM datagen_source;
通过作业 依赖管理上传至作业。

如果 Warehouse 地址是元数据加速 COS 桶,还需引用以下 jar 作为依赖: