当前位置: 首页 > article >正文

CDP中的Hive3之Hive Metastore(HMS)

CDP中的Hive3之Hive Metastore(HMS)

      • 1、CDP中的HMS
      • 2、HMS表的存储(转换)
      • 3、HWC授权





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客户端不具备所需的功能,则会出现以下类型的错误消息:

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



http://www.kler.cn/a/500608.html

相关文章:

  • 写读后感的时候,可以适当地引用书中的内容吗?
  • 时序数据库的订阅对比:TDengine vs InfluxDB 谁更强?
  • Unity + Firebase + GoogleSignIn 导入问题
  • d2j-dex2jar classes.dex 执行报错:not support version 问题解决
  • android四大组件之一——Service
  • 怎么用python写个唤醒睡眠电脑的脚本?
  • 音频调试———FM
  • Nginx支持UDP性能优化
  • PHP 使用 Redis
  • 代理模式详解与应用
  • 2025“华数杯”国际数学建模大赛A他能游得更快吗Can He Swim Faster(完整思路 模型 源代码 结果分享)
  • 使用Go语言的http.Transport进行SSL握手的方法与注意事项
  • Android使用系统消息与定时器实现霓虹灯效果
  • 3. 使用springboot做一个音乐播放器软件项目【封装项目使用的工具类】
  • golang中的eval,goeval,govaluate
  • 智能风控/数据分析 聚合 分组 连接
  • LeetCode-找出字符串中第一个匹配项的下标(028)
  • WPF控件Grid的布局和C1FlexGrid的多选应用
  • Golang笔记——channel
  • 软件系统分析与设计综合实践-家庭维修服务系统小程序(代码见附录,私发)
  • Xcode 正则表达式实现查找替换
  • JVM之垃圾回收器概述(续)的详细解析
  • 【机器学习】零售行业的智慧升级:机器学习驱动的精准营销与库存管理
  • 【Spring Boot 应用开发】-04 自动配置-数据源
  • 【优选算法篇】:深入浅出位运算--性能优化的利器