关于数据库:HMS数据库设置和优化

9次阅读

共计 4143 个字符,预计需要花费 11 分钟才能阅读完成。

简介: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 客户端

最低要求角色:配置者(也由集群管理员、齐全管理员提供)
通过导航到 Cloudera Manager > Hosts > Role(s)并查看角色列表以查找 Hive Metastore Server 的齐全限定域名或 IP 地址。

  1. 在 Clusters > Hive Metastore > Configuration 中导航到 Metastore 主机配置,而后搜寻 javax.jdo.option.ConnectionURL.
  1. 在值中,应用以下语法指定数据库连贯字符串:<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>

或者,在集群中的所有主机上反复后面的步骤。
以雷同的形式,在 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 地位。

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

在用于更改 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 数据库明码

依据您的集群配置设置 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>

  1. 单击保留。
  2. 单击 操作 > 部署客户端配置。
  3. 重新启动 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 个连贯。

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

正文完
 0