HMS数据库设置和优化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据。本文主要分享HMS数据库设置和优化

设置 Metastore 数据库

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


您需要为 Hive Metastore (HMS) 安装支持的数据库来存储元数据。您可以通过修改hive-site.xml. 您可以使用 Cloudera Manager 安全阀功能而不是hive set key=value在命令行上。


设置后端 Hive Metastore 数据库

CDP公有云后端Hive Metastore数据库仅支持PostgreSQL,一般无需手动安装。在CDP Private Cloud Base 中,您需要安装、启动和配置后端数据库。


在此过程中,您将在与 HiveServer 不同的节点/集群上安装数据库,以便与 Hive、Impala、Spark 和其他组件共享 Hive 元存储 (HMS)。不要将 HiveServer 和数据库放在同一个节点上。您的集群中可以有一个或多个 HMS 实例,它们可以在出现问题时接管。


安装受支持的数据库。

  • MariaDB/MySQL
  • PostgreSQL
  • Oracle


配置 Metastore 数据库属性

在CDP Private Cloud Base 中,您可以通过使用 Cloudera Manager 安全阀功能间接修改hive-site.xml来配置 Hive 和 Hive 元存储。一个循序渐进的过程向您展示了如何设置一些属性名称和值来代替hive set key=value在命令行上使用,这是不受支持的。


此任务假定数据库正在运行myhost,用户帐户是hiveuser,密码是mypassword。根据您的数据库类型替换以下连接 URL 和驱动程序名称。

  • MySQL 连接URL:jdbc:mysql://myhost/metastore

MySQL 驱动程序名称:com.mysql.jdbc.Driver

  • Postgres 连接URL:jdbc:postgresql://myhost/metastore

Postgres 驱动程序名称:jdbc:postgresql://myhost/metastore

  • Oracle 连接 URL:jdbc:oracle:thin:@//myhost/xe

Oracle 驱动程序名称:oracle.jdbc.OracleDriver

  • 以下组件正在运行:
  • HiveServer
  • Hive Metastore
  • Metastore 的数据库,例如默认的 MySQL 服务器
  • Hive 客户端
  • 最低要求角色:配置者(也由集群管理员、完全管理员提供)
  1. 通过导航到Cloudera Manager > Hosts > Role(s)并查看角色列表以查找Hive Metastore  Server的完全限定域名或 IP 地址。


  2.  在Clusters > Hive Metastore > Configuration 中导航到 Metastore 主机配置,然后搜索 javax.jdo.option.ConnectionURL.


  3.  在值中,使用以下语法指定数据库连接字符串: <connection protocol>://<metastore host>/<metastore database>?createDatabaseIfNotExist=true


在以 XML 格式查看中,将出现 XML 配置片段。

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.65.13.98/mydb?createDatabaseIfNotExist=true</value>
<description>Database connection string</description>
</property>
  1. 或者,在集群中的所有主机上重复前面的步骤。
  2. 以相同的方式,在 Metastore 主机(必需)或所有主机(可选)上指定其他必需的连接属性,如下例所示。
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>(your driver name)</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mypassword</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>

配置 Metastore 位置和 HTTP 模式

除了需要在CDP Private Cloud Base 中设置的数据库属性之外,还必须配置 Metastore URI 属性。该属性定义了一个或多个 Metastore 位置。

  • 最低要求角色:配置者(也由集群管理员、完全管理员提供)
  1. 在Clusters > Hive Metastore > Configuration 中,搜索hive-site.xml


  1. 在用于更改 hive-site.xml 中的属性的 Hive Metastore 服务器高级配置安全阀中,单击 + 并hive.metastore.uris使用以下语法添加 属性:thrift://<n.n.n.n>:9083


     Metastore 主机的 IP 地址或完全限定域名 (FQDN) 替换<n.n.n.n>。

     只有 hive-site.xml 中的 Hive Metastore Server Default Group 应定义此属性。


设置 JDBC URL 连接覆盖

您可以配置 HMS 数据库连接的细粒度调整。您指定一个 JDBC URL 覆盖,这取决于您的数据库,用于建立到 Hive 元存储数据库的连接。


此任务仅适用于高级数据库用户。使用此覆盖时,将覆盖以下属性

  • Hive Metastore 数据库名称
  • Hive Metastore 数据库主机
  • Hive Metastore 数据库端口
  • 对 Hive Metastore 数据库启用 TLS/SSL
  • 所需的默认用户角色是配置员。
  • 您知道用于设置以下属性的值:
  • Hive Metastore 数据库类型
  • Hive Metastore 数据库用户
  • Hive Metastore 数据库密码
  1. 根据您的集群配置设置 Hive Metastore Database JDBC URL Override 属性的值。
  • MySQL
jdbc:mysql://<host>:<port>/<metastore_db>?key=value
  • PostgreSQL
jdbc:postgresql://<host>:<port>/<metastore_db>?key=value
  • 使用服务名称的 Oracle JDBC Thin
jdbc:oracle:thin:@//<host>:<port>/<service_name>
  • 使用 SID 的 Oracle JDBC Thin
jdbc:oracle:thin:@<host>:<port>:<SID>
  • 使用 TNSName 的 Oracle JDBC Thin
jdbc:oracle:thin:@<TNSName>

2.  单击保存。

3.  单击 操作>部署客户端配置。

4.  重新启动 Hive Metastore。


优化元存储

与其他调优过程类似,一般 Metastore 调优涉及调整和测试,直到您发现可以提高 Metastore 性能的更改组合。调整建议包括硬件和软件更改。

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


通常的Metastore 调优

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

  • 确保单个查询访问不超过 10,000 个表分区。如果查询连接表,计算跨所有表访问的组合分区计数。
  • 调整后端(RDBMS)。HiveServer连接HMS,只有HMS连接RDBMS。后端花费的时间越长,HMS 响应相同请求所需的内存就越多。限制后端数据库中的连接数。


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

[mysqld]
datadir=/var/lib/mysql
max_connections=8192
. . .

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

[Service]
LimitNOFILE=24000
. . .
  • 使用默认的 thrift 属性 (8K):
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 个连接。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
22 0
|
1天前
|
缓存 关系型数据库 MySQL
如何优化MySQL数据库查询性能
MySQL是一款常用的关系型数据库,但在实际使用过程中,由于数据量增加和查询操作复杂度增加,会导致查询性能下降。本文将介绍一些优化MySQL数据库查询性能的方法。
|
3天前
|
SQL 缓存 大数据
优化数据库性能的五大策略
传统的数据库性能优化常常集中在SQL查询优化和索引设计上,然而,在当今大数据时代,优化数据库性能需要综合考虑更多因素。本文将介绍五大策略,从硬件资源利用、数据模型设计、查询优化、缓存策略到数据库配置调整,为您提供全面的数据库性能优化方案。
|
3天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
24 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
数据库
编程日记02:个人站优化数据库和日志
编程日记02:个人站优化数据库和日志
12 0
|
3天前
|
缓存 关系型数据库 数据库
【Docker 专栏】Docker 与容器化数据库的集成与优化
【5月更文挑战第9天】本文探讨了Docker与容器化数据库集成的优势,如快速部署、环境一致性、资源隔离和可扩展性,并列举了常见容器化数据库(如MySQL、PostgreSQL和MongoDB)。讨论了集成方法、注意事项、优化策略,包括资源调整、缓存优化和监控告警。此外,强调了数据备份、恢复测试及性能评估的重要性。未来,随着技术发展,二者的集成将更紧密,为数据管理带来更多可能性。掌握此技术将应对数字化时代的机遇与挑战。
【Docker 专栏】Docker 与容器化数据库的集成与优化
|
3天前
|
存储 关系型数据库 分布式数据库
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
PolarDB分布式版存储引擎采用CSM方案均衡资源开销与可用性。
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
|
3天前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
3天前
|
存储 缓存 固态存储
优化矢量数据库性能:技巧与最佳实践
【4月更文挑战第30天】本文探讨了优化矢量数据库性能的技巧和最佳实践,包括硬件(如使用SSD、增加内存和利用多核处理器)、软件(索引优化、查询优化、数据分区和压缩)和架构(读写分离、分布式架构及缓存策略)方面的优化措施。通过这些方法,可以提升系统运行效率,应对大数据量和复杂查询的挑战。
|
3天前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之dataworks为子账号创建DataWorks访问密钥的基本步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
30 0