本文为您介绍如何在Flink全托管模式下配置Hive Catalog、查看Hive元数据、使用Hive Catalog和删除Hive Catalog。
背景信息
您可以将Hive Catalog配置文件和Hadoop依赖存放至对象存储OSS控制台指定目录后,再在Flink全托管开发控制台上配置Hive Catalog功能。配置成功后,您就可以在Flink全托管开发控制台上直接使用DML创建业务逻辑,获取Hive中表的元数据信息,无需再使用DDL语句声明相应的表信息。Hive
Catalog中的表可以作为流作业和批作业的源表或结果表。
前提条件
在使用Hive MetaStore或阿里云DLF作为Hive Catalog元数据中心前,需要完成以下配置:
使用限制
- Flink全托管仅支持Hive 2.1.0~2.3.9,3.1.0 ~ 3.1.3版本。在创建Hive Catalog时,hive-version取值填写详情如下:
- 对于Hive 2.1.x版本,hive-version需要指定为2.2.0。
- 对于Hive 2.2.x、2.3.x、3.1.x版本,hive-version需要分别指定为2.2.0、2.3.6、3.1.2。
- Hive Metastore不支持Kerberos鉴权。
- 支持自建Hive Metastore。
- 实时计算引擎VVR 4.0.11及以上版本支持DLF作为Hive Catalog的元数据管理中心。
说明 如果Hive版本为3.1.0+,对于VVR 6.0.1及以上版本,则暂不支持DLF作为Hive Catalog的元数据管理中心。
- 如果Hive Catalog是以DLF作为元数据管理中心,则不支持在该Catalog中创建非Hive表。
配置Hive Catalog
- 连通Hadoop集群和Flink全托管的VPC。
您可以使用云解析PrivateZone产品连通Hadoop集群和Flink全托管的VPC,详情请参见
解析器(Resolver)。网络连通后,Flink全托管就可以使用Hadoop集群的配置文件访问Hadoop集群。
- 在OSS控制台新建目录,并将Hive配置文件和Hadoop依赖上传至目标路径。
- 登录OSS管理控制台。
- 在左侧导航栏,单击Bucket列表。
- 单击目标Bucket名称。
- 在左侧导航栏,单击文件管理。
- 在oss://${bucket}/artifacts/namespaces/${ns}/路径下,新建${hms}目录。
在OSS上创建目录的操作详情,请参见
创建目录。目标路径中的变量含义如下表所示:
目录 |
说明 |
${bucket} |
您Flink全托管实例使用的Bucket名称。 |
${ns} |
您要使用Hive Catalog功能的Flink全托管项目名称。 |
${hms} |
您在Flink全托管上显示的Hive Catalog名称。 |
说明 开通Flink全托管服务后,系统会自动在您指定的Bucket下创建/artifacts/namespaces/${ns}/目录来存储JAR包等数据。如果您在OSS控制台没有看到如上目录,则需要在Flink全托管开发控制台的资源管理页面,手动上传一个文件来触发目录创建。
- 在oss://${bucket}/artifacts/namespaces/${ns}/${hms}路径下,新建hive-conf-dir和hadoop-conf-dir目录。
其中hive-conf-dir和hadoop-conf-dir目录中存放的文件详情如下:
- oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hive-conf-dir/用于存放Hive配置文件hive-site.xml。
- oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hadoop-conf-dir/用于存放Hadoop配置文件,包括core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml。
在OSS上新建目录的操作详情,请参见创建目录。创建成功后,您可以在左侧导航栏的资源上传页面中,查看新建的目录及文件,并复制OSS链接信息。
- 将您的Hive配置文件(hive-site.xml)上传到hive-conf-dir目录下。上传文件的操作请参见上传文件。
Hive Catalog支持Hive MetaStore和阿里云DLF作为元数据管理中心,相关配置说明详情如下:
- Hive MetaStore
需要检查下配置文件hive-site.xml中
hive.metastore.uris参数配置是否符合下列要求。
<property>
<name>hive.metastore.uris</name>
<value>thrift://xx.yy.zz.mm:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
其中
xx.yy.zz.mm
为Hive的内网IP或者公网IP。
说明 如果您将
hive.metastore.uris填写为hostname,则需要配置域名解析服务。否则VVP远程访问Hive时,
hive.metastore.uris参数值会被解析失败并报错
UnknownHostException
。配置域名解析服务详情请参见
添加PrivateZone解析记录。
- 阿里云DLF
需要在配置文件hive-site.xml中添加如下配置项,以便Hive Catalog可以访问DLF。
<property>
<name>hive.imetastoreclient.factory.class</name>
<value>com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory</value>
</property>
<property>
<name>dlf.catalog.uid</name>
<value>${YOUR_DLF_CATALOG_UID}</value>
</property>
<property>
<name>dlf.catalog.endpoint</name>
<value>${YOUR_DLF_ENDPOINT}</value>
</property>
<property>
<name>dlf.catalog.region</name>
<value>${YOUR_DLF_CATALOG_REGION}</value>
</property>
<property>
<name>dlf.catalog.accessKeyId</name>
<value>${YOUR_ACCESS_KEY_ID}</value>
</property>
<property>
<name>dlf.catalog.accessKeySecret</name>
<value>${YOUR_ACCESS_KEY_SECRET}</value>
</property>
如果您的Hive表被存储在OSS中,则还需要添加如下配置。
<property>
<name>fs.oss.impl.disable.cache</name>
<value>true</value>
</property>
<property>
<name>fs.oss.impl</name>
<value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>${YOUR_OSS_WAREHOUSE_DIR}</value>
</property>
<property>
<name>fs.oss.endpoint</name>
<value>${YOUR_OSS_ENDPOINT}</value>
</property>
<property>
<name>fs.oss.accessKeyId</name>
<value>${YOUR_ACCESS_KEY_ID}</value>
</property>
<property>
<name>fs.oss.accessKeySecret</name>
<value>${YOUR_ACCESS_KEY_SECRET}</value>
</property>
其中涉及的参数解释如下表所示。
参数 |
说明 |
备注 |
dlf.catalog.uid |
阿里云账号的账号ID。 |
账号信息,请通过用户信息页面获取。 |
dlf.catalog.endpoint |
DLF服务的Endpoint。 |
详情请参见已开通的地域和访问域名。
说明
- 推荐您为dlf.endpoint参数配置DLF的VPC Endpoint。例如,如果您选择的地域为cn-hangzhou地域,则dlf.endpoint参数需要配置为dlf-vpc.cn-hangzhou.aliyuncs.com。
- 如果您需要跨VPC访问DLF,则请参见如何访问跨VPC里的存储资源?
|
dlf.catalog.region |
DLF服务的地域名。 |
详情请参见已开通的地域和访问域名。
说明 请和dlf.endpoint选择的地域保持一致。
|
dlf.catalog.accessKeyIdfs.oss.accessKeyId |
阿里云账号的Access Key。 |
获取方法请参见获取AccessKey。
|
dlf.catalog.accessKeySecretfs.oss.accessKeySecret |
阿里云账号的Access Secret。 |
获取方法请参见获取AccessKey。
|
fs.oss.endpoint |
阿里云对象存储OSS的域名。 |
详情请参见访问域名和数据中心。
|
hive.metastore.warehouse.dir |
表数据存放的路径。 |
无。 |
- 将您的以下配置文件上传到hadoop-conf-dir目录。上传文件的操作请参见上传文件。
- hive-site.xml
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- 其他文件,例如Hive作业使用的压缩包。
- 在Flink全托管开发控制台上配置Hive Catalog。
- 登录实时计算控制台。
- 在Flink全托管页签,单击目标工作空间操作列下的控制台。
- 在左侧导航栏,单击作业开发。
- 在页面左上角,单击新建,文件类型选择SQL。
- 在文本编辑区域,输入创建Hive Catalog的命令。
CREATE CATALOG ${HMS Name} WITH (
'type' = 'hive',
'default-database' = 'default',
'hive-version' = '<hive-version>',
'hive-conf-dir' = '<hive-conf-dir>',
'hadoop-conf-dir' = '<hadoop-conf-dir>'
);
参数 |
说明 |
${HMS Name} |
Hive Catalog名称。 |
type |
Connector类型,固定值为hive。 |
default-database |
默认数据库名称。 |
hive-version |
Hive Metastore版本号。
说明 Flink全托管仅支持Hive 2.1.0~2.3.9,3.1.0 ~ 3.1.3版本。在创建Hive Catalog时,hive-version取值填写详情如下:
- 对于Hive 2.1.x版本,hive-version需要指定为2.2.0。
- 对于Hive 2.2.x、2.3.x、3.1.x版本,hive-version需要分别指定为2.2.0、2.3.6、3.1.2。
|
hive-conf-dir |
存放Hive配置文件的目录。目录为oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hive-conf-dir/。
|
hadoop-conf-dir |
存放Hadoop依赖的目录。目录为oss://${bucket}/artifacts/namespaces/${ns}/${hms}/hadoop-conf-dir/。
|
- 单击执行。
Hive Catalog配置完成后,您就可以在作业中引用Hive Catalog表信息,作为结果表和维表,无需声明表的DDL。Hive Catalog表名称格式为
${hive-catalog-name}.${hive-db-name}.${hive-table-name}。
此外,如果您想停用Hive Catalog服务,详情请参见删除Hive Catalog。
- 在左侧,单击Schemas页签。
- 单击
图标,刷新查看新建的Hive Catalog。
使用Hive Catalog
- 创建Hive表。
CREATE TABLE t1(
id INT,
name STRING
) WITH (
'connector' = 'hive'
);
- 从Hive表中读取数据。
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`;
- 写入结果数据至Hive表。
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table};
查看Hive Catalog
- 登录实时计算管理控制台。
- 在Flink全托管页签,单击目标工作空间操作列下的控制台。
- 在左侧导航栏,单击作业开发。
- 单击Schemas页签。
- 在顶部菜单栏下拉框中,切换到目标Hive Catalog。
- 在Tables列查看不同数据库下的表和字段信息。
删除Hive Catalog
- 登录实时计算控制台。
- 在Flink全托管页签,单击目标工作空间操作列下的控制台。
- 在左侧导航栏,单击作业开发。
- 在页面左上角,单击新建,文件类型选择SQL。
- 在文本编辑区域,输入以下命令。
DROP CATALOG ${HMS Name}
其中,HMS Name为您要删除的在Flink全托管开发控制台上显示的Hive Catalog名称。
注意 删除Hive Catalog不会影响已运行的作业,但对未上线或者作业需要暂停恢复的作业,均产生影响,请您谨慎操作。
- 单击执行。
- 在左侧,单击Schemas页签。
- 单击
图标,刷新查看新建的Hive Catalog是否已被删除。