如果您有本地集群,则需要知道如何为 Hive Metastore (HMS) 设置后端数据库。设置包括安装受支持的数据库、配置属性、指定 Metastore 位置。您还可以配置可选的连接参数。
您需要为 Hive Metastore (HMS) 安装支持的数据库来存储元数据。您可以通过修改hive-site.xml. 您可以使用 Cloudera Manager 安全阀功能而不是hive set key=value在命令行上。
CDP公有云后端Hive Metastore数据库仅支持PostgreSQL,一般无需手动安装。在CDP Private Cloud Base 中,您需要安装、启动和配置后端数据库。
在此过程中,您将在与 HiveServer 不同的节点/集群上安装数据库,以便与 Hive、Impala、Spark 和其他组件共享 Hive 元存储 (HMS)。不要将 HiveServer 和数据库放在同一个节点上。您的集群中可以有一个或多个 HMS 实例,它们可以在出现问题时接管。
安装受支持的数据库。
在CDP Private Cloud Base 中,您可以通过使用 Cloudera Manager 安全阀功能间接修改hive-site.xml来配置 Hive 和 Hive 元存储。一个循序渐进的过程向您展示了如何设置一些属性名称和值来代替hive set key=value在命令行上使用,这是不受支持的。
此任务假定数据库正在运行myhost,用户帐户是hiveuser,密码是mypassword。根据您的数据库类型替换以下连接 URL 和驱动程序名称。
MySQL 驱动程序名称:com.mysql.jdbc.Driver
Postgres 驱动程序名称:jdbc:postgresql://myhost/metastore
Oracle 驱动程序名称:oracle.jdbc.OracleDriver
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>
<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>
除了需要在CDP Private Cloud Base 中设置的数据库属性之外,还必须配置 Metastore URI 属性。该属性定义了一个或多个 Metastore 位置。
2. 在用于更改 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 应定义此属性。
您可以配置 HMS 数据库连接的细粒度调整。您指定一个 JDBC URL 覆盖,这取决于您的数据库,用于建立到 Hive 元存储数据库的连接。
此任务仅适用于高级数据库用户。使用此覆盖时,将覆盖以下属性
jdbc:mysql://<host>:<port>/<metastore_db>?key=value
jdbc:postgresql://<host>:<port>/<metastore_db>?key=value
jdbc:oracle:thin:@//<host>:<port>/<service_name>
jdbc:oracle:thin:@<host>:<port>:<SID>
jdbc:oracle:thin:@<TNSName>
2. 单击保存。
3. 单击 操作>部署客户端配置。
4. 重新启动 Hive Metastore。
与其他调优过程类似,一般 Metastore 调优涉及调整和测试,直到您发现可以提高 Metastore 性能的更改组合。调整建议包括硬件和软件更改。
通常,您需要限制与 Hive Metastore 的并发连接。随着打开连接数量的增加,延迟也会增加。后端数据库问题、Hive 使用不当(例如极其复杂的查询、连接泄漏和其他因素)都会影响性能。
尝试进行以下更改以调整 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
. . .
hive.server2.async.exec.threads 8192
hive.server2.async.exec.wait.queue.size 8192
hive.server2.thrift.max.worker.threads 8192
原文链接:https://docs.cloudera.com/cdp-private-cloud-base/7.1.6/hive-metastore/topics/hive-configuring-hms.html