HMS数据库设置和优化

HMS数据库设置和优化,第1张

HMS数据库设置和优化

简介: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.  在值中,使用以下语法指定数据库连接字符串: :///?createDatabaseIfNotExist=true

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


javax.jdo.option.ConnectionURL
jdbc:mysql://10.65.13.98/mydb?createDatabaseIfNotExist=true
Database connection string
  1. 或者,在集群中的所有主机上重复前面的步骤。
  2. 以相同的方式,在 metastore 主机(必需)或所有主机(可选)上指定其他必需的连接属性,如下例所示。

javax.jdo.option.ConnectionDriverName
(your driver name)




javax.jdo.option.ConnectionUserName
hive




javax.jdo.option.ConnectionPassword
mypassword




datanucleus.autoCreateSchema
false




datanucleus.fixedDatastore
true




datanucleus.autoStartMechanism
SchemaTable




hive.metastore.schema.verification
true
配置 metastore 位置和 HTTP 模式

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

  • 最低要求角色:配置者(也由集群管理员、完全管理员提供)
  1. 在Clusters > Hive metastore > Configuration 中,搜索hive-site.xml
  2. 在用于更改 hive-site.xml 中的属性的 Hive metastore 服务器高级配置安全阀中,单击 + 并hive.metastore.uris使用以下语法添加 属性:thrift://:9083

     metastore 主机的 IP 地址或完全限定域名 (FQDN) 替换

     只有 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://:/?key=value
  • PostgreSQL
jdbc:postgresql://:/?key=value
  • 使用服务名称的 Oracle JDBC Thin
jdbc:oracle:thin:@//:/
  • 使用 SID 的 Oracle JDBC Thin
jdbc:oracle:thin:@::
  • 使用 TNSName 的 Oracle JDBC Thin
jdbc:oracle:thin:@

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 个连接。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5669304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存