前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CDP中Hive Metastore介绍

CDP中Hive Metastore介绍

作者头像
大数据杂货铺
发布2020-10-29 10:14:32
1.8K0
发布2020-10-29 10:14:32
举报
文章被收录于专栏:大数据杂货铺

Hive Metastore概述

Hive Metastore(HMS)是一项单独的服务,不是Hive的一部分,甚至不必位于同一集群上。HMS将元数据存储在Hive、Impala、Spark和其他组件的后端。

Beeline、Hue、JDBC和Impala Shell客户端通过thrift或JDBC向HiveServer发出请求。冗余的HiveServer是被动的,可提供故障转移服务。HiveServer实例将数据读取/写入HMS。后端的一个或多个HMS实例可以与其他服务(例如Ranger)对话。冗余HMS是被动的,可提供故障转移服务。物理数据驻留在后端RDBMS中,一个用于HMS,一个用于安全服务,例如Ranger。在任何给定时间,所有连接都会路由到单个RDBMS服务。HMS通过thrift与NameNode进行对话,并充当HDFS的客户端。

HMS表存储

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

HMS表转换

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

• 表定义

• 列名

• 数据类型

• 集中的Schema存储库中的注释

在CREATE TABLE语句中使用EXTERNAL关键字时,HMS将表存储为外部表。当您省略EXTERNAL关键字并创建托管表或从托管表摄取数据时,HMS可能会将表转换为外部表,否则表创建可能失败,具体取决于表属性。影响表转换的重要表属性是ACID或Non-ACID表类型:

非ACID

表属性不包含任何设置为true的与ACID相关的属性。例如,该表不包含此类属性transactional = true或insert_only = true

ACID

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

Full-ACID

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

仅插入的ACID

表属性包含insert_only = true。

以下矩阵显示了表类型以及是否支持location属性。

ACID

受管

位置属性

注释

行动

非ACID

迁移到CDP,例如从HDP或CDH集群。

表存储为外部

非ACID,ACID,完整ACID,仅插入ACID

没有

表位置为空

表存储在子目录中 metastore.warehouse.external.dir

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

表要求

客户符合要求

托管表

ACID表类型

行动

客户端可以写入任何类型的ACID表

没有

创建表失败

客户端可以写入完整的ACID表

没有

insert_only = true

创建表失败

客户端可以写入仅插入的ACID表

没有

insert_only = true

创建表失败

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

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

配置HMS属性以进行授权

作为管理员,如果您对查询授权有任何疑问,则可能需要通过Ranger设置Apache Hive Metastore(HMS)授权。例如,如果您配置了Hive查询的基于存储的授权,然后又想通过Ranger切换到授权,则必须配置HMS属性。

要集成HMS API和Ranger以授权查询,您需要使用Cloudera Manager将以下HMS属性和值添加到hive-site.xml中:

hive.metastore.pre.event.listeners的值为:org.apache.hadoop.hive.ql.security.authorization.plugin.metastore.HiveMetaStoreAuthorizer

配置HMS写入。

hive.security.authenticator.manager的值为:org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator

使用Cloudera Manager安全阀将属性添加到hive-site.xml。

1) 在Cloudera Manager中,要配置Hive Metastore属性,请单击集群> Hive-1 >配置。

2) 搜索Hive-site。

在hive-site.xml的Hive Metastore Server高级配置代码段(安全阀)中,单击+

3) 添加属性名称和值。

4) 重复步骤以添加其他属性。

5) 保存更改。

过滤HMS结果

编写用于从Hive筛选数据的API后,您需要知道如何设置、启用和禁用API。您需要使用Cloudera Manager在hive-site.xml的安全阀中添加一些Hive Metastore(HMS)属性 。

HMS可以对读取操作返回的数据执行服务器端过滤。默认情况下启用筛选,该筛选根据用户身份显示语句的结果,例如SHOW TABLES或SHOW DATABASES。您可以通过设置布尔标志和挂钩来禁用过滤。该钩子标识实现过滤的类名。您在hive-site.xml中为HMS API-Ranger集成添加了以下属性和值 :

metastore.server.filter.enabled值:true(进行过滤)或false(不进行过滤)

metastore.filter.hook值:org.apache.hadoop.hive.ql.security.authorization.plugin.metastore.HiveMetaStoreAuthorizer

如上一节所述添加属性。

设置Metastore数据库

如果您具有本地集群,则需要知道如何为Hive Metastore(HMS)设置后端数据库。设置包括安装受支持的数据库、配置属性、指定metastore位置以及可选的连接参数。

在CDP私有云基础中,您需要为Hive Metastore(HMS)安装受支持的数据库以存储元数据。您可以通过修改配置Hive Metastore到hive-site.xml 。您可以使用Cloudera Manager安全阀功能,而不要 hive set key=value在命令行上使用。

调优Metastore

通常,您需要限制与Hive Metastore的并发连接。随着打开的连接数量的增加,延迟也会增加。后端数据库问题,Hive使用不当(例如极其复杂的查询,连接泄漏)和其他因素可能会影响性能。

CDP私有云基础中的常规Metastore调优

尝试进行以下更改以调整HMS性能:

• 购买SSD用于一个或多个HMS。

• Cloudera建议单个查询访问不超过10,000个表分区。如果查询的表进行了联接,请计算跨所有表访问的合并分区数。

• 调整后端(RDBMS)。HiveServer连接到HMS,只有HMS连接到RDBMS。后端花费的时间越长,HMS需要更多的内存来响应相同的请求。限制后端数据库中的连接数。

MySQL:例如,在/etc/my.cnf中:

代码语言:javascript
复制
[mysqld]
       datadir=/var/lib/mysql
       max_connections=8192
       . . .

MariaDB:例如,在/etc/systemd/system/mariadb.service.d/limits.conf中:

代码语言:javascript
复制
[Service]
       LimitNOFILE=24000
       . . .

使用默认的thrift属性(8K):

代码语言:javascript
复制
hive.server2.async.exec.threads 8192
hive.server2.async.exec.wait.queue.size 8192
hive.server2.thrift.max.worker.threads 8192

为您的应用程序设置datanucleus.connectionPool.maxPoolSize。例如,如果poolSize = 100,具有3个HMS实例(一个专门用于压缩),并且每个服务器具有4个池,则可以容纳1200个连接。

来源:https://docs.cloudera.com/cdp-private-cloud-base/7.1.3/hive-hms-overview/topics/hive-hms-introduction.html

https://docs.cloudera.com/cdp-private-cloud-base/7.1.3/hive-metastore/topics/hive-hms-table-storage.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档