CDP中的Hive3之Hive Metastore(HMS)

CDP中的Hive3之Hive Metastore(HMS)

1、CDP中的HMS

CDP中的Hive Metastore(HMS)是一种服务,用于在后端RDBMS(例如MySQL或PostgreSQL)中存储与Apache Hive和其他服务相关的元数据。Impala、Spark、Hive和其他服务共享元存储。与HMS的连接包括HiveServer、Ranger和代表HDFS的NameNode

Beeline、Hue、JDBC和Impala shell客户端通过Thrift或JDBC向HiveServer发出请求。HiveServer实例向HMS读/写数据

默认情况下,冗余的HMS以主动/主动模式运行。物理数据驻留在后端RDBMS中,一个用于HMS的RDBMS。所有的HMS实例使用相同的后端数据库。一个单独的RDBMS支持安全服务,例如Ranger。在任何给定时间,所有连接都路由到单一的RDBMS服务。HMS通过Thrift与NameNode对话,并充当HDFS的客户端

HMS直接连接到Ranger和NameNode (HDFS),HiveServer也是如此,但为简单起见,该图中并未显示。后端的一个或多个HMS实例可以与其他服务(例如Ranger)通信

官方文档:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-hms-overview/topics/hive-hms-introduction.html

2、HMS表的存储(转换)

当运行CREATE TABLE语句或将表迁移到Cloudera Data Platform时,您需要了解HMS如何存储Hive表。语句的成功或失败、结果表类型和表位置取决于许多因素

HMS包含有关您创建的表的以下Hive元数据:

  • 表的定义
  • 列名
  • 数据类型
  • 中央的Schema存储库中的注释

当您在CREATE TABLE语句中使用EXTERNAL关键字时,HMS会将表存储为外部表。当您省略EXTERNAL关键字并创建托管表或摄取托管表时,HMS可能会将表转换为外部表,或者创建表可能会失败,这具体取决于表的属性

影响表转换的一个重要因素是表属性的ACID表类型:

  • 非ACID

    表属性不包含任何设置为true的ACID相关属性。例如,该表不包含这样的属性:transactional=trueinsert_only=true

  • ACID

    表属性确实包含一个或多个设置为true的ACID属性

  • 完全的ACID

    表属性包含transactional=true但不包含insert_only=true

  • 仅插入的ACID

    表属性包含insert_only=true

以下矩阵显示了是否位置属性支持下的表类型:

ACID 托管表 位置属性 注释 行动
非ACID 迁移到CDP(例如从HDP或CDH集群) 表存储为外部表
非ACID 表位置为空(null 存储在外部仓库子目录中的表:metastore.warehouse.external.dir

HMS检测与HMS交互的客户端类型,例如Hive或Spark,并将客户端的能力与表的需求进行比较。HMS根据比较结果执行以下操作:

表要求 客户端符合要求 托管表 ACID表类型 行动
客户端可以写入任何类型的ACID表 ACID 创建表失败
客户端可以写入完全的ACID表 insert_only=true 创建表失败
客户端可以写入仅插入的ACID表 insert_only=true 创建表失败

例如,如果Spark客户端不具备所需的功能,则会出现以下类型的错误消息:

java 复制代码
Spark has no access to table `mytable`. Clients can access this table only if
they have the following capabilities: CONNECTORREAD,HIVEFULLACIDREAD, HIVEFULLACIDWRITE,
HIVEMANAGESTATS, HIVECACHEINVALIDATE, . . .

官方文档:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-metastore/topics/hive-hms-table-storage.html

3、HWC授权

配置Hive仓库连接器(HWC)的方式会影响查询授权过程和安全性。有多种方法可以通过HWC访问Hive,并不是所有操作都通过HiveServer (HS2)。一些操作,例如Spark Direct Reader和Hive Streaming,通过HMS直接进入Hive,其中通常适用基于存储的权限

作为客户端用户,您必须在使用HWC之前使用kerberos登录。您需要适当的存储权限才能写入目标分区或表位置

您需要配置HWC读取选项。HWC读取配置选项如下表所示:

能力 JDBC方式 Spark Direct Reader模式
Ranger与细粒度访问控制的集成 适用 不适用
Hive ACID读取 适用 适用
处理的工作负载 非生产工作负载、小数据集 生产工作负载,没有细粒度访问控制的ETL

这些读取配置选项需要连接到不同的Hive组件:

  • Direct Reader配置:连接到Hive Metastore(HMS)
  • JDBC配置:连接到HiveServer(HS2)或HiveServer Interactive(HSI)

Ranger授权通过HiveServer(HS2)或Hive Metastore API(HMS API)从Spark访问Hive表

要将ACID托管表从Spark写入Hive,您必须使用HWC。要将外部表从Spark写入Hive,您可以使用原生Spark或HWC

官方文档:https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-metastore/topics/hive_apache_spark_hive_connection_configuration.html

参考文章:https://developer.aliyun.com/article/786098

相关推荐
王小王-12311 天前
基于 Hive 的网易云音乐数据分析及可视化系统
hive·hadoop·数据分析·音乐数据分析·网易云音乐分析·hive音乐分析·hadoop网易云
TPBoreas12 天前
springboot3.5比2.x做了哪儿些提升
数据仓库·hive·hadoop
Nefu_lyh14 天前
【Hive】七、Hive 函数:聚合 / 统计 / 分位数 / 集合 / 高级分组
数据仓库·hive·hadoop
KANGBboy14 天前
hive UDF函数
数据仓库·hive·hadoop
shen1213815 天前
【cdp】windows持久化运行cdp浏览器
windows·agent·cdp
王小王-12316 天前
基于商品评价的评论情感分析与可视化系统
hive·情感分析·商品评价分析·主题分析·商品评论分析
Nefu_lyh16 天前
【Hive】 八、Hive 计算引擎:MapReduce / Tez / Spark 对比与选型
hive·spark·mapreduce
白日与明月17 天前
Hive子查询中的ORDER BY陷阱:为什么排序“消失”了?
数据仓库·hive·hadoop
Nefu_lyh18 天前
【Hive】六、Hive 运算逻辑:数学 / 逻辑 / 条件 / 日期 / 字符串函数
数据仓库·hive·hadoop
AQin101219 天前
【对比向】既生瑜何生亮?不!Hive 和 Doris不一样
数据仓库·hive·hadoop·doris