Db2 Big SQL Hive 元存储

Big SQL Hive Metastore (HMS) 是用于存储和检索与 Datalake 表相关的元数据的服务。

HMS 由两部分组成:

  • Db2 数据库中的版本模式(名为 SYSHIVE),元数据以常规 Db2 表的形式存储。
  • Apache Thrift 服务器,用于连接这些常规 Db2 表中的元数据。 该服务是一个 java 进程,与 Big SQL Scheduler 进程一起运行在 Db2 head 节点容器中。

HMS 处理的某些信息(如表结构)也可在 Db2 系统目录中找到,但其他详细信息只适用于 Datalake 表。 HMS 提供了一种以标准化方式存储元数据并与之交互的方法。 其中包括:

  • 表结构(名称、列、数据类型、分区)
  • 数据位置
  • 文件和表格式(Parquet、ORC、Iceberg等)
  • 表属性
Big SQL Scheduler 通过使用在 Big SQL 配置中定义的端点的 thrift API 与 HMS 交互,如运行以下示例命令所示:
db2 "select varchar(PROPERTY_NAME,20) PROPERTY_NAME, varchar(PROPERTY_VALUE,128) PROPERTY_VALUE from table(SYSHADOOP.GET_Datalake_CONFIG('BIGSQL')) where PROPERTY_NAME = 'hive.metastore.uris'"
结果返回以下示例:

PROPERTY_NAME        PROPERTY_VALUE
-------------------- ------------------------------------------------------
hive.metastore.uris  thrift://c-jun06a-db2u-0.c-jun06a-db2u-internal:9083  

  1 record(s) selected.
如运行以下示例命令所示,HMS 服务器通过 JDBC 连接使用存储在蜂巢配置中的详细信息与 Db2 进行交互:
db2 "select varchar(PROPERTY_NAME,40) PROPERTY_NAME, varchar(PROPERTY_VALUE,128) PROPERTY_VALUE from table(SYSHADOOP.GET_Datalake_CONFIG('HIVE')) where PROPERTY_NAME like 'javax.jdo.option.Connection%'"
结果返回以下示例:

PROPERTY_NAME                            PROPERTY_VALUE                                                                                                                  
---------------------------------------- ---------------------------------------------------------------------------------------------------------------------
javax.jdo.option.ConnectionUserName      hive 
javax.jdo.option.ConnectionDriverName    com.ibm.db2.jcc.DB2Driver 
javax.jdo.option.ConnectionURL           jdbc:db2://c-jun06a-db2u-0.c-jun06a-db2u-internal:50000/BLUDB:currentSchema=SYSHIVE;clientProgramName=HiveMetastore;  

  3 record(s) selected.