【详解】Hivemetastore三种配置方式

举报
皮牙子抓饭 发表于 2025/11/27 10:42:31 2025/11/27
【摘要】 Hivemetastore三种配置方式Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其核心组件之一是 Hive Metastore,用于存储元数据信息,如表结构、分区信息等。本文将介绍 Hivemetore 的三种配置方式。1. 内嵌式(...

Hivemetastore三种配置方式

Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其核心组件之一是 Hive Metastore,用于存储元数据信息,如表结构、分区信息等。本文将介绍 Hivemetore 的三种配置方式。

1. 内嵌式(Embedded Mode)

在内嵌模式下,Hive Metastore 和 Hive 客户端运行在同一进程中,这种方式适合于测试环境或小型部署。在这种模式下,Metastore 使用 Derby 数据库作为后端存储,默认情况下,Derby 数据库是内嵌的,不需要额外的配置。

配置步骤

  1. 安装 Hive:确保已经正确安装了 Hive。
  2. 修改 hive-site.xml​:
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
  1. 启动 Hive
hive

2. 本地模式(Local Mode)

在本地模式下,Hive Metastore 服务与 Hive 客户端分开运行,但仍然在同一台机器上。这种方式适用于需要更高性能的开发或测试环境。Metastore 可以使用 MySQL、PostgreSQL 等关系型数据库作为后端存储。

配置步骤

  1. 安装数据库:选择并安装 MySQL 或 PostgreSQL。
  2. 创建数据库和用户
  • 对于 MySQL:
CREATE DATABASE metastore;
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost';
FLUSH PRIVILEGES;
  • 对于 PostgreSQL:
CREATE DATABASE metastore;
CREATE USER hive WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE metastore TO hive;
  1. 修改 hive-site.xml​:
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
  1. 启动 Metastore 服务
hive --service metastore &
  1. 启动 Hive 客户端
hive

3. 远程模式(Remote Mode)

在远程模式下,Hive Metastore 服务运行在独立的服务器上,通过网络与 Hive 客户端通信。这种方式适用于生产环境,可以提高系统的可扩展性和可靠性。

配置步骤

  1. 在 Metastore 服务器上安装数据库:选择并安装 MySQL 或 PostgreSQL。
  2. 创建数据库和用户:同本地模式中的步骤。
  3. 修改 hive-site.xml​:
  • 在 Metastore 服务器上:
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
  • 在 Hive 客户端上:
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://<metastore_server_ip>:9083</value>
</property>
  1. 启动 Metastore 服务
hive --service metastore &
  1. 启动 Hive 客户端
hive

Hive Metastore 是 Apache Hive 的核心组件之一,用于存储元数据信息。Hive Metastore 可以配置为三种不同的模式:Embedded Metastore、Local Metastore 和 Remote Metastore。下面将分别介绍这三种配置方式,并提供相应的示例代码。

1. Embedded Metastore

在 Embedded Metastore 模式下,Hive Metastore 与 Hive Server 运行在同一进程中,适用于开发和测试环境。

示例配置文件(hive-site.xml)
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
    </property>
</configuration>

2. Local Metastore

在 Local Metastore 模式下,Hive Metastore 仍然运行在本地,但使用外部数据库(如 MySQL)来存储元数据。这种模式适合于生产环境中的小型集群。

示例配置文件(hive-site.xml)
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
    </property>
</configuration>

3. Remote Metastore

在 Remote Metastore 模式下,Hive Metastore 作为一个独立的服务运行,可以被多个 Hive Server 共享。这种模式适合于大型生产环境。

启动 Metastore 服务

首先,需要启动一个独立的 Metastore 服务。可以在 ​​hive-site.xml​​ 中配置 Metastore 服务的地址。

示例配置文件(hive-site.xml)
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
    </property>
</configuration>
启动 Metastore 服务
$HIVE_HOME/bin/hive --service metastore &
配置 Hive Server

在 Hive Server 的配置文件中,指定 Metastore 服务的地址。

示例配置文件(hive-site.xml)
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
    </property>
</configuration>

Hive Metastore 是 Apache Hive 的核心组件之一,用于存储元数据信息,如数据库、表、列、分区等。Hive Metastore 可以配置为不同的模式来适应不同的使用场景和需求。以下是三种常见的配置方式及其对应的代码示例:

1. 嵌入式(Embedded)模式

在嵌入式模式下,Metastore 和 Hive 服务运行在同一进程中。这种方式适用于小型测试环境或开发环境。

配置文件 ​​hive-site.xml​
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

2. 本地(Local)模式

在本地模式下,Metastore 服务运行在本地,但与 Hive 服务分开。这种方式适用于需要更高性能的测试环境或小型生产环境。

启动 Metastore 服务
$HIVE_HOME/bin/hive --service metastore &
配置文件 ​​hive-site.xml​
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

3. 远程(Remote)模式

在远程模式下,Metastore 服务运行在独立的服务器上,通过网络与 Hive 服务通信。这种方式适用于大型生产环境,可以提供更好的性能和可扩展性。

启动 Metastore 服务

在远程服务器上启动 Metastore 服务:

$HIVE_HOME/bin/hive --service metastore &
配置文件 ​​hive-site.xml​

在 Hive 客户端机器上配置 ​​hive-site.xml​​:

<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://remote_host:9083</value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://remote_host:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

总结

  • 嵌入式模式:适合小型测试和开发环境,Metastore 和 Hive 服务运行在同一进程中。
  • 本地模式:适合需要更高性能的测试环境或小型生产环境,Metastore 服务运行在本地但与 Hive 服务分开。
  • 远程模式:适合大型生产环境,Metastore 服务运行在独立的服务器上,通过网络与 Hive 服务通信。

每种模式都有其适用的场景,选择合适的配置方式可以更好地满足不同的需求。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。