为了让作业、数据探索等不同场景共用同一套库表元数据,避免在每个 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_0529SELECT id, name, amount, dtFROM datagen_source;
通过作业 依赖管理上传至作业。

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